Gibt es eine Möglichkeit, den freien RAM auf einem Linux-Rechner mit zufälligen Daten zu füllen?Speicher mit zufälligen Daten füllen
Der Grund, warum ich das frage: Ich arbeite in einer Gruppe, wo wir numerische Programmierung in Fortran machen. Manchmal arbeiten Leute mit doppelter Genauigkeit, so dass Programme, die doppelt präzise Ergebnisse liefern, nur eine einfache Genauigkeit liefern.
Wenn mein Verständnis richtig ist, würde man zufällige Fluktuationen des Ergebnisses nach der einfachen Genauigkeitsgrenze in einem solchen Programm sehen. Das heißt, wenn Sie dasselbe Programm mehrmals mit derselben Eingabe ausführen, erhalten Sie jedes Mal ein zufällig unterschiedliches Ergebnis. Was Sie sehen (der zufällige Teil) hängt von den zufälligen Werten im freien RAM der Maschine ab. Aber in der Praxis, wenn Sie das Programm wiederholt auf demselben Computer ausführen, werden die gleichen Teile des Speichers wiederholt verwendet, die die gleichen zufälligen Daten in ihnen haben, die jedes Mal die gleiche Ausgabe führen.
Meine Idee ist, dass, wenn Sie den Speicher mit zufälligen Daten überschreiben könnten, Sie tatsächlich die zufälligen Schwankungen in Ihrer Programmausgabe sehen würden. Das würde es viel einfacher machen, diese Fehler zu finden.
Ist diese Idee zu schlagen, oder wenn nicht, wie fülle ich die Erinnerung? Kann ich/dev/random in den RAM pumpen, oder so?
Der einem Prozess zugewiesene Speicher wird initialisiert (mit Daten von der Festplatte) oder auf Null gesetzt, bevor er verwendet wird. Keine Ausnahmen. Alles, was Sie hier tun können, ist die Randomisierung des Speichers innerhalb des betreffenden Programms. – bdonlan
Ich bin mir ziemlich sicher, dass es nicht ist ... Besonders in Strings, die nicht initialisiert wurden, sehe ich die ganze Zeit "binären Müll" ... Es kann sein, dass der Speicher am Anfang initialisiert wird, und dass der Müll aus dem Speicher stammt wiederverwenden innerhalb des Programms, aber in jedem Fall kann es zufällige Daten geben. –
Nachdem ich mir die Fragen angeschaut habe, sehe ich, dass Sie sich mit einer Legacy - Anwendung beschäftigen und sie debuggen müssen, und idealerweise möchten Sie sie "an Ort und Stelle" debuggen, und eine einfache, erfinderische Art wäre es, die Daten. Ich weiß nicht, ob das möglich ist. Sie würden wahrscheinlich besser dran sein, indem Sie den Code, der numerische Double/Single-Returns zu seinem eigenen Modul macht, abbrechen, ihn mit einem Unit-Test-Framework verbinden und so ausführen. Es könnte eine Menge Arbeit erfordern, aber Sie könnten beweisen, dass die Zahlen genau so zurückgegeben werden. Ich sehe das einfach nicht als einfach an. –