Vor- und Nachteile

Ratgeber - Dateisysteme im Vergleich

Zugriffssperren

Im Gegensatz zu Windows-Betriebssystemen, die den Zugriff auf eine geöffnete Datei anderen Prozessen komplett verweigern (Lese- und Schreibsperre), erlauben Unix-/Linux-basierte Systeme in der Regel bei einem Exclusive-Lock einen Lesezugriff (exclusive lock wird auch write-lock genannt), obwohl mit dem Shared-Lock natürlich auch eine Lesesperre möglich ist. Jeder Prozess kann eine Lese-, aber nur ein Prozess eine Schreibsperre aktivieren.

Programmierer werden den POSIX-Systemaufruf "lockf()" oder den unter Linux verwendeten NON-POSIX-Aufruf "fcntl()" sicherlich kennen. Damit lassen sich Segmente oder die komplette Datei in verschiedenen Modi für andere Prozesse unter anderem sperren.

Grundsätzlich werden zwei Typen von Lockmechanismen unterschieden, nämlich die verbindlichen (a) und die freiwilligen (b). Variante (a) sind die Mandatory-Locks auf Dateien. Sobald ein Prozess einen Lock gesetzt hat, wird jeder andere Prozess, der einen Zugriff auf diese (offene) Datei erwirken möchte, so lange blockiert, bis der Lock wieder aufgehoben wird. Das Dateisystem muss diese Art unterstützen, das heißt die mount-Option "mand" beziehungsweise das Flag "MS_MANDLOCK" interpretieren.

Die andere Variante (b), die Advisory-/Mutual-Locks, kommt dann zum Einsatz, wenn sich kooperierende Prozesse den Zugriff auf eine Datei koordiniert teilen möchten. Dann versucht der eine Prozess einen Schreiblock auf die ersten 100 Byte zu bekommen und erhält diesen als Erster. Ein weiterer Prozess sperrt das letzte Kilobyte an Date, und Prozess drei versucht ebenfalls die ersten 100 Byte zu sperren; der Lock ist bereits aktiv, und so wird der Prozess suspendiert, bis der erste Prozess den Lock aufgehoben hat. Anschließend kann dieser dann mit der Ausführung fortfahren.

Würden die anderen Prozesse nicht ebenfalls diesen Lock-Mechanismus nutzen, würden die Daten wild durcheinandergeschrieben. Anstelle den Prozess zu blockieren, kann dieser natürlich auch versuchen, einen weiteren Teilbereich der Datei zu bearbeiten, während der andere Lock aktiv ist. Somit können multithreaded agierende Applikationen die Ressourcen besser ausnutzen.