Mir ist aufgefallen, dass eine Datei (.exe oder .dll), die unter Windows zur Installation ausgeführt wird, gesperrt ist und nicht geändert werden kann, während der Benutzer sie unter Linux durch Löschen/Bearbeiten ändern kann.
Warum wird Windows gesperrt, Linux jedoch nicht? Hat das Sperren einen Vorteil?
Antwort1
Beide Betriebssysteme sperren die Dateidaten. Jeder Versuch, eine ausführbare Datei während der Ausführung oder eine Bibliothek während der Zuordnung zu ändern, führt unter Linux zu einem „Textdatei belegt“-Fehler.
$ gcc foo.c -o f
$ ./f &
[1] 2017
$ ls > f
bash: f: Text file busy
Der Unterschied besteht nur inWasist gesperrt. Windows sperrt den Verzeichniseintrag, Linux sperrt die Dateidaten. Dieser Unterschied besteht aus historischen Gründen – vor langer Zeit behandelte Windows Verzeichniseinträge und Dateidaten als im Wesentlichen gleichwertig und um die Kompatibilität zu wahren, wurden viele der Konsequenzen dieses Designs beibehalten. Linux hat Verzeichniseinträge immer als Zeiger auf Dateidaten behandelt.