Wenn wir eine Datei in Windows speichern - ist der tatsächliche Speicherort der Datei auf der Festplatte zufällig oder deterministisch?

277
Ratna

Ich möchte wissen, wann wir versuchen, eine Datei auf der Festplatte zu speichern, wie das Betriebssystem die Datei auf der Festplatte speichert. Werden zwei Computer mit derselben Konfiguration und ALLEINER INTERNE STATUS die Datei am selben Ort auf ihrer Festplatte speichern, oder werden ihre Adressen zufällig ausgewählt?

2

2 Antworten auf die Frage

4
grawity

Es ist meistens deterministisch - Dateisysteme verwenden verschiedene Algorithmen, um den besten Ort für neue Daten zu bestimmen. Es ist jedoch nicht möglich, alle internen Zustände zu 100% zu duplizieren. Daher müssen Sie Folgendes berücksichtigen:

  • verschiedene Dateisysteme (ext4, btrfs, NTFS ...) verwenden unterschiedliche Zuordnungsalgorithmen,

  • das auch durch das Programm beeinflusst werden kann, das den Schreibvorgang ausführt (z. B. wird eine Datei, die langsam auf 100 MB wächst, manchmal anders zugewiesen als eine durch fallocate () erstellte Datei, die 100 MB auf einmal erstellt),

  • sowie andere Programme, die gleichzeitig auf die Festplatte schreiben, da die Zuordnung der Datei B davon abhängt, ob die Datei A bereits geschrieben wurde oder nicht (alle Determinismen gehen hier weg, wenn Sie ein Multi-Core- oder Multi-CPU-System haben);

  • Größe und Speicherort der vorhandenen Dateien;

  • Größe und Speicherort der gelöschten Dateien (zB bei log-strukturierten Dateisystemen werden nur die Daten weitergeleitet)

  • verschiedene Festplattentypen (Dateisysteme kümmern sich beim Schreiben auf Solid-State-Festplatten möglicherweise weniger um die Fragmentierung als um Magnetplatten).

  • physische Korruption (wenn ein Sektor beschädigt wird, wählt das Dateisystem möglicherweise die gesamte Datei an einem anderen Ort, anstatt nur diesen einen Sektor zu überspringen);

Und schließlich, auch wenn beide Beispielcomputer 1: 1-Kopien des rohen Datenträgerinhalts haben,

  • Einige Dateisysteme können zufällige Entscheidungen treffen, wenn dies in den Algorithmus geschrieben wird. Von einem kurzen Grep aus scheint es so, als würde zumindest Ext4 die Zufallsauswahl als Fallback verwenden, wenn alle Optionen gleich sind.
2
gronostaj

Dies hängt vom Dateisystem, der Implementierung und externen Faktoren ab.

  • Der interne Status umfasst absolut alles über den Computer, dh den Prozessorstatus, Daten im RAM, die aktuellen Daten auf der Festplatte und wie sie angeordnet sind, ALLES im Computer. Es gibt jedoch auch externe Faktoren wie zum Beispiel Festplattenfehler, die nicht vom Zustand des Computers abhängen - diese müssen berücksichtigt werden.

  • "Randomisiertes Layout" wäre wahrscheinlich auch deterministisch. Computer sind deterministisch. In der Informatik verwendete "zufällige" Zahlen sind in den meisten Fällen Pseudozufallszahlen (und dies ist in der Regel völlig in Ordnung, mit wenigen Ausnahmen). Selbst wenn das Dateisystem Zufälligkeiten auferlegt, ist es sehr wahrscheinlich, dass es dennoch deterministisch ist.

Moderne Betriebssysteme basieren auf dem Kernel-PRNG von CPU-Frequenzschwankungen, Platten-Timings oder Tastatur-Interrupts, die nicht vollständig deterministisch sind. Selbst wenn Sie über zwei identische Systeme verfügen, können deren RNGs immer noch unterschiedliche Werte ausgeben, da das Programm mehrere Zyklen später gestartet wurde. grawity vor 10 Jahren 2