Wenn code.txt
(oder welche Datei auch immer) bearbeitet und gespeichert wird, habe ich zwei Ideen, wie ein PC den Prozess handhaben würde:
Der PC löscht
code.txt
komplett und macht eine neuecode.txt
(bearbeitete) Version von Grund auf neu.Der PC bearbeitet einen Teil von hex von
code.txt
. Es findet also kein Löschen statt.
Welche Idee zeigt, wie Computer funktionieren?
Antworten:
Könnte auch sein - es kommt auf den verwendeten Texteditor an.
Das Konzept einer 'Textdatei' ist nicht in Computern integriert - jedes Betriebssystem verwaltet Dateien möglicherweise anders und jeder Texteditor verwendet diese Dateien möglicherweise anders.
In der Praxis finden Sie Texteditoren, die beide Mechanismen haben. Praktisch alle Betriebssysteme ermöglichen das direkte Überschreiben des Inhalts einer vorhandenen Datei. Einfache Editoren wie Notepad fordern das Betriebssystem daher normalerweise auf, direkt in die Originaldatei zu schreiben, da dies am einfachsten zu implementieren ist. Dies ist jedoch riskant, wenn Sie während des Schreibvorgangs an Leistung verlieren. Aus Gründen der Zuverlässigkeit speichern viele Editoren die aktualisierten Daten absichtlich in einer neuen Datei und löschen das Original.
(Ich denke, dass In-Place-Aktualisierungen bei Hex-Editoren häufiger vorkommen, bei denen die meisten Änderungen keine Bytes einfügen / löschen, sondern nur vorhandene Speicherorte ändern, sodass keine vollständige Neuschreibdatei erforderlich ist.)
Es gibt sogar einen dritten Betriebsmodus: Der Editor erstellt möglicherweise zuerst eine Sicherungskopie der alten Datei und schreibt dann direkt neue Daten in die Datei.
Es auch ist abhängig vom Dateisystem , das die Datei hält. Wenn ein Programm bei den meisten herkömmlichen Dateisystemen das Schreiben in eine vorhandene Datei anfordert, überschreibt das Dateisystem nur die vorhandenen alten Daten.
Allerdings sind einige Dateisysteme Sie arbeiten in „copy-on-write“ -Modus, wo jede neue Daten immer an einen anderen Ort geschrieben wird, ob das Programm will oder nicht. Dies hat wiederum den möglichen Vorteil einer erhöhten Zuverlässigkeit, da eine unterbrochene Änderung vollständig rückgängig gemacht werden kann.
In einigen Dateisystemen (wie Btrfs oder ext4) ist dies eine optionale Funktion. in anderen (zB log-strukturierten Dateisystemen) ist es Teil des Kerndesigns.
quelle
Da es sich um "Speichern der Datei" handelt, wird die Datei nicht direkt auf der Festplatte bearbeitet.
Bei einer Datei in einem normalen Dateisystem sind zwei Dinge zu beachten. Es gibt den Verzeichniseintrag und dann die eigentlichen Dateidaten irgendwo auf der Festplatte.
Wenn Sie eine Datei in einem normalen Editor bearbeiten, werden die Dateidaten in den RAM geladen, und jede Bearbeitung wird nur für diese Kopie der Daten ausgeführt. Dann, wenn Sie die Datei speichern, gibt es grundsätzlich zwei Optionen:
Option 1: Die ursprüngliche Datei wird umbenannt , sodass sowohl der ursprüngliche Verzeichniseintrag als auch die ursprünglichen Daten auf der Festplatte verbleiben. Durch die Umbenennung wird beispielsweise das Dateisuffix in geändert
.bak
(.bak
normalerweise werden alle vorherigen Dateien entfernt). Dann wird eine neue Datei erstellt und die Daten aus dem Speicher werden dort geschrieben.Option 2: Der ursprüngliche Verzeichniseintrag geändert wird , so wird die Datei abgeschnitten auf 0 Länge. Der für Dateidaten verwendete Bereich auf der Festplatte wird als nicht verwendet markiert, der alte Dateiinhalt bleibt jedoch auf der Festplatte, bis er überschrieben wird. Dann werden neue Daten geschrieben. In diesem Fall bleibt der Verzeichniseintrag erhalten, nur die Daten, auf die er zeigt, werden geändert.
Es gibt einige mögliche Variationen, eine häufige ist, dass die bearbeiteten Daten zuerst in einer temporären Datei gespeichert werden. Wenn Ihr Computer an dieser Stelle abstürzt, wird die Originaldatei wahrscheinlich nicht beschädigt. Dann wird die Originaldatei gelöscht und die neue Datei mit dem korrekten Namen umbenannt. Oder die ursprüngliche Datei kann einfach gelöscht werden, bevor die neue geschrieben wird.
Ihre Theorie 1 kommt also dem nahe, was die meisten Herausgeber tun.
Dann gibt es Sonderfälle. Der offensichtlichste ist ein Festplatten-Editor, mit dem Bytes direkt auf der Festplatte gelesen und überschrieben werden können. Eine andere ist möglicherweise eine Datenbankdatei, in der Datensätze eine feste Größe haben. Sie können einen Datensatz also ganz einfach überschreiben. Daten können jedoch nicht in der Mitte einer Datei angehängt werden. Wenn sich daher die Länge der Daten in der Mitte der Datei häufig ändert, können diese Tricks nicht wirklich verwendet werden.
So ist Ihre Theorie 2 in einigen Fällen möglich, aber normale Texteditoren und solche tun es nicht.
quelle
In der Vergangenheit wurden Laufwerke direkt vom Betriebssystem gesteuert, das wiederum von der Anwendung gesteuert wurde. In diesem Zusammenhang war Theorie 2 die Hauptmethode, mit der PCs arbeiteten. Das Betriebssystem gab einen physischen Speicherort für die Daten an und hatte die volle Kontrolle über diesen Prozess. Als Ergebnis hatten frühe Dateisysteme eine Tabelle mit "fehlerhaften Sektoren", sodass der Computer nach dem Verlust Ihrer Daten Ihnen mitteilen konnte, dass die Daten verloren gingen, und den Sektor als unbrauchbar markieren konnte, um weiteren Datenverlust zu vermeiden. Festplatten-Scans und Defragmentierung waren an der Tagesordnung.
Nach der Jahrhundertwende wechselten wir jedoch zu LBA, sodass das Betriebssystem nun einfach auf den "logischen" Block verweist, in den es lesen oder schreiben wollte. Die Festplatte selbst hatte jetzt die Intelligenz, Daten hinter dem Betriebssystem zu mischen, ohne dass dies bemerkt wurde. Dies bedeutete eine höhere Zuverlässigkeit, da Sektoren, die nicht überprüft werden konnten, einfach an einen neuen physischen Standort verschoben werden konnten, ohne dass das Wissen des Betriebssystems darüber, wo sich diese Daten befanden, beeinträchtigt wurde.
In der modernen Hardware überschreiben die "Plattenteller" -Laufwerke normalerweise nur das, was zuvor vorhanden war, mit den neu eingehenden Daten und ordnen den LBA optional neu zu, wenn der Sektor so aussieht, als würde er die Daten möglicherweise nicht beibehalten (der Sektor ist beschädigt oder abgenutzt). "Flash" -Laufwerke löschen normalerweise die alten Zellen und schreiben dann Daten in neue Zellen. Dieser Vorgang wird als Wear-Leveling bezeichnet.
In beiden Fällen ist dies möglich, da immer nicht genutzte Kapazität über dem angegebenen Wert liegt. Diese Überversorgung ermöglicht dem Laufwerk eine längere Lebensdauer als die eher unzuverlässige Technologie des vorherigen Jahrhunderts. Im LBA-Modus kann das physische Medium vom Betriebssystem abstrahiert werden, sodass das Laufwerk selbst alle Maßnahmen ergreifen kann, die das Laufwerk zur Vermeidung von Datenverlust für erforderlich hält.
Auf Anwendungsebene öffnen Sie normalerweise eine Datei im Modus "SCHREIBEN", in dem das Betriebssystem anweist, die Datei zu löschen (den Inhalt, aber nicht die Datei selbst zu löschen) und dann neue Daten zu schreiben. All dies wird auf Betriebssystemebene gepuffert und dann auf das Laufwerk "geleert", wodurch die angeforderten Änderungen vorgenommen werden.
Angesichts dieser Informationen ist Theorie 1 das, was technisch auf der Ebene der Anwendungsprogrammierung geschieht, zumindest standardmäßig, da es auch einen Modus zum Schreiben mit Anhängen gibt, um das Löschen des Dateiinhalts zu vermeiden. Das Betriebssystem selbst wird die Änderungen eher wie Theorie 2 darstellen, jedoch über LBA abstrahiert. Das Laufwerk selbst wird dann wahrscheinlich etwas tun, das eine Mischung aus Theorie 1 und Theorie 2 ist.
Ja. Es ist kompliziert und sehr hersteller- / betriebssystem- / anwendungsabhängig. All diese Komplexität zielt jedoch darauf ab, die Datenspeicherung zuverlässiger zu gestalten und gleichzeitig den Stromverbrauch und die Batterielebensdauer zu verbessern.
quelle
Hängt davon ab. AFAIK Microsoft Word fügt beim Speichern
.doc
(nicht.docx
) von Dateien mit aktivierten Optionen zum schnellen Speichern Änderungen an, die seit dem letzten Speichern an vorhandenen Dateien vorgenommen wurden.quelle
Im Allgemeinen weist ein Computer den Speicher zu, in dem sich die ursprüngliche Datei als "gelöscht" befindet. Dies bedeutet jedoch, dass sie in Ihrem Dateibrowser nicht mehr angezeigt wird und die Zellen im Speicher, in denen sie geschrieben wurde, zulässig sind in Zukunft überschrieben werden.
Ob die neue Datei an die gleiche Stelle geschrieben wird, hängt von einer Reihe von Faktoren ab, insbesondere von der verwendeten Software und davon, wie sie für die Verwendung des Speichers ausgelegt ist.
quelle
Hoffentlich ist das nicht überflüssig, ein bisschen mehr Info / Hintergrund.
Der PC hat normalerweise nicht viel Kontrolle darüber, wie eine Datei bearbeitet wird, sondern die Anwendung, die dies tut.
Einige Beispiele, wie manche Apps mit der Bearbeitung umgehen könnten:
Notepad lädt das gesamte Dokument in den Speicher und speichert dann das gesamte Dokument über Ihrem Originaldokument (oder einem neuen, das Sie angeben).
Nahezu alle anderen kleinen Editoren speichern beim Bearbeiten eine "neue" Datei und kopieren sie dann über Ihr Originaldokument, wobei sie beim "Speichern" gelöscht werden.
Editoren für große Dokumente, mit denen Sie möglicherweise ein Buch bearbeiten, lesen / ändern in der Regel einen Abschnitt eines Dokuments, da sie Dokumente bearbeiten können, die größer als der Arbeitsspeicher sind. Diese bearbeiten möglicherweise tatsächlich das Dokument "In place". Sie schreiben möglicherweise eine Seite neu und lassen den Rest in Ruhe. Diese haben häufig eine komplexere indizierte Darstellung auf der Festplatte als eine einfache TXT-Datei, um dieses Verhalten zuzulassen.
Die großen Editoren speichern möglicherweise auch nur temporäre Dateien mit "Aktualisierungen" Ihres Originaldokuments. Wenn Sie den letzten Speichervorgang ausführen, können alle Dokumente zusammengeführt und das Dokument neu geschrieben werden.
Die meisten Editoren können so konfiguriert werden, dass die vorhandene Version unverändert bleibt und eine neue Version mit Ihren Änderungen erstellt wird (alte Versionen beibehalten).
In Bezug auf den Teil Ihrer Frage, was ein "PC" tut, werden sich einige Betriebssysteme an jede Version einer Datei erinnern und immer eine neue erstellen. Das ist heutzutage ziemlich selten, aber ich erinnere mich an alte "Mini-Computer" (was wir jetzt als Mainframes bezeichnen), bei denen jede Datei am Ende eine Version wie "File.text.1" hatte und sie jedes Mal zur Version hinzufügte bearbeitet es. Diese Art von Verhalten trifft besser auf ein Bandlaufwerk oder eine CD-ROM zu, bei denen das Überschreiben der alten Version völlig unpraktisch war.
quelle
2 ist nicht unmöglich, aber es ist aus verschiedenen Gründen dumm.
Ein gut geschriebener Textdatei-Editor wird:
myfile.txt
, könnte das neue seinmyfile.txt.new
myfile.txt~
myfile.txt
Wenn der Computer während des oben beschriebenen Vorgangs abstürzt oder nicht genügend Speicherplatz auf der Festplatte zur Verfügung steht, gehen die alten und die neuen Dateien nicht verloren oder werden nur teilweise gespeichert.
quelle
Kurze Antwort
Dies hängt in hohem Maße von Ihrem Editor, der zugrunde liegenden Software / Treibern und dem Speicher ab.
Paranoische Antwort
Kann wiederhergestellt werden, wenn Sie es nicht dauerhaft entfernen.
Lange Antwort
In Ihrer Frage fehlen Informationen (Software, Hardware usw.). Anstatt mich selbst zu beantworten, helfe ich Ihnen, Ihre Frage selbst zu beantworten.
Das hängt von wenigen Faktoren ab:
Editor : Wenn die Editor-Software die Blöcke derselben Datei ersetzt, wird sie möglicherweise neu geschrieben. Dies kann auch von den Editoreinstellungen und Dateitypen abhängen. Beachten Sie, dass das Wort möglicherweise kursiv geschrieben wurde. Auch wenn der Editor die Datei neu schreibt, bleibt sie möglicherweise unberührt (lesen Sie die nächsten Punkte).
Grundlegende Software / Treiber / Dateisystem : Die Datei bleibt unberührt, wenn andere Software / Treiber darunter sind, die die ursprüngliche Datei vor dem Überschreiben schützen. Zu diesen Softwaretypen gehören Versionsverwaltungssysteme, virtuelle differenzielle Datenträger und einige Sicherungssoftware. Ein Beispiel ist Git , das die ursprünglichen Dateiblöcke beibehält und eine neue Datei erstellt, die die geänderten Blöcke enthält.
Lagerung :
Der Speicher selbst kann geänderte Blöcke in einen neuen Sektor schreiben und alte Blöcke als "frei" markieren. Die Datei bleibt dann physisch im Speicher (und kann wiederhergestellt werden), sofern sie nicht von einer anderen Datei überschrieben wird. Beispiel ist ein moderner SSD-Speicher , der dies auf Hardware-Ebene tun kann.
Es gibt Möglichkeiten, Daten von den Magnetplatten einer typischen mechanischen Festplatte wiederherzustellen, selbst wenn die Daten überschrieben wurden . Und es gibt spezialisierte Unternehmen.
Wenn Sie also eine konkrete Antwort erhalten möchten, ob Ihre Datei gelöscht wird oder nicht, müssen Sie auch angeben, welchen Editor, Backup / VCS-Software / Hardware und Speicher Sie verwenden. Wenn ich einen Punkt verpasst habe, können Sie die Antwort jederzeit bearbeiten.
Wie kann sichergestellt werden, dass die gelöschte Datei tatsächlich aus dem Speicher gelöscht wird?
Dies ist wahrscheinlich die nächste Frage, die Sie sich stellen werden. Nun, es gibt viele Software- / Hardwarelösungen. Da SuperUser nicht für die Bewerbung von Software / Hardware gedacht ist, werde ich Ihnen sagen, wie Sie diese finden, anstatt Namen zu nennen: Suchen Sie nach Stichwörtern "Datei endgültig löschen". Für genauere Übereinstimmungen geben Sie Ihr Betriebssystem, den Festplattentyp oder andere Informationen an.
quelle
Ein Verhalten, das noch niemand erwähnt hat, ist das relevante Verhalten einiger Versionen von MS Windows-Betriebssystemen. Es hängt auch mit dem verwendeten Dateisystem zusammen.
Das Verhalten sieht folgendermaßen aus: Wenn Sie eine Datei umbenennen oder löschen und innerhalb von 15 Sekunden nach dem Löschen (oder Umbenennen) der Originaldatei eine (neue) Datei mit demselben Namen erstellen (neu erstellen), wird das Erstellungsdatum / Der Zeitstempel wird aus der Originaldatei kopiert. Im Wesentlichen wird die neue Datei zur alten / ursprünglichen Datei.
In diesem Fall spielt es keine Rolle, ob die Anwendung die Änderungen an der Datei nach Ihrer Methode 1 speichert: Erstellen einer neuen Datei mit demselben Namen oder nach Ihrer Methode 2: Bearbeiten / Aktualisieren der Datei (Datei) nicht gelöscht). In beiden Fällen sieht die endgültige Datei (fast) in jeder Hinsicht wie die Originaldatei aus. Das Einzige ist, dass es wahrscheinlich einen anderen physischen Speicherplatz (Cluster / Sektoren) belegen wird und sich der Verzeichniseintrag für die Datei wahrscheinlich an einem anderen Speicherort befindet.
Wie gesagt, dies ist ein Verhalten einiger Versionen von MS Windows / Dateisystemen. Ich weiß nicht, auf welcher Windows-Version und auf welchem Dateisystem dies gestartet wurde und ob es sich immer noch um das Verhalten neuerer Versionen handelt. Wenn ich raten müsste, würde ich sagen, dass es unter Windows NT und Windows XP eingeführt wurde und immer noch das Verhalten von Windows 10 ist, und (immer noch eine Vermutung) erfordert das Verhalten ein Fat32- oder NTFS-Dateisystem (und möglicherweise ein neueres).
quelle