Vergleichen und Austauschen von POSIX-kompatiblen Dateisystemobjekten

Es gibt mehrere Vorgänge, die POSIX-kompatible Betriebssysteme atomar mit Dateisystemobjekten (Dateien und Ordnern) ausführen können. Hier ist eine Liste solcherermutlich atomare Operation:

Datei oder Ordner umbenennen oder verschiebencreate hardlinkcreate symlinkOrdner erstelleerstelle und öffne eine leere Datei

Ist es möglich, einen Compare-and-Swap-Algorithmus zum Bearbeiten einer Datei basierend auf diesen Operationen zu erstellen?

Nehmen wir an, wir haben mehrere Prozesse, die gleichzeitig Lese- / Schreibvorgänge für eine einzelne Datei ausführen. Eine Datei zeichnet sich durch ihre Überarbeitung aus. Angenommen, die Revision wird dem Dateinamen hinzugefügt, und es gibt einen Symlink zu der Datei, über den die Prozesse sie lesen können. Die Prozesse können (aus bestimmten Gründen) nicht mit Mutexen, Semaphoren usw. synchronisiert werden, sie können jedoch Hilfsdateien und -ordner erstellen. Sind sie in der Lage, revisionsbasierte Compare-and-Swap-Änderungen an der Datei vorzunehmen (neue Datei erstellen, Symlink erstellen und umbenennen), in dem Sinne, dass, wenn mehrere Prozesse sie gleichzeitig ändern, einer erfolgreich ist und der Rest Fehler mit einem Fehlercode?

Der Algorithmus muss beständig gegen plötzliche Beendigung von Prozessen in jedem Schritt des Algorithmus sein.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage