2016-04-05 11 views
0

Ich habe 10 Bytes Daten in eine Datei schreiben, nachdem mein Programm 9 Bytes und 7 Bits auf die Festplatte schreibt, wenn Strom schneidet, wie viele Bytes kann ich aus dieser Datei lesen, nachdem die Elektrizität ankommt? 9 Bytes oder 10 Bytes?Festplattenfunktionsprinzip

+1

Sie können keine einzelnen Bits auf eine Festplatte schreiben. Es gibt eine minimale Blockgröße. – Thilo

+0

Und auch das hängt nicht viel damit zusammen, was das Dateisystem denkt, wo eine Datei beginnt und endet, und welche Art von Maßnahmen sie vor unvollständigen Updates schützt. – Thilo

+0

Also kann ich sagen, dass, wenn minimale Blockgröße 512 Byte ist, ich Null Bytes lesen kann. Habe ich recht? – codeator

Antwort

0

Sie können nichts sagen. Es gibt zu viele Ebenen der Abstraktion hier. Ihr Programm puffert häufig die OS-Puffer, die Chipsatzpuffer, die Puffer selbst, und irgendwann werden die Daten geschrieben.

Wenn Sie für eine harte Synchronisierung auf den Daten, die durch etwas fragen wie fsync alles, was Sie bekommen ist eine Bestätigung, dass mindestens Ihre Daten geschrieben wurden, keine Garantie, dass nichts anderes war.

Es dauert nicht null Zeit für diese Daten, um durch alle diese Schichten zu streamen und physisch auf Ihrer Festplatte, SSD oder anderweitig zu landen. Wenn in diesem Prozess Stromausfall eintritt und Sie keine Schreibbestätigung erhalten haben, ist es sicher, dass Sie nicht wissen, wie viel geschrieben wurde. Sie müssen prüfen, welche Dateien Sie zuvor geschrieben haben und sehen, welche Daten vorhanden sind.

Wenn Ihr System neu gestartet wird, muss es wahrscheinlich trotzdem vom Journal wiederhergestellt werden, und alle nicht festgeschriebenen Änderungen werden rückgängig gemacht. In Ihrem Beispiel ist die Anzahl der tatsächlich geschriebenen Bytes null.