Befindet sich die Dateitabelle im Dateisystem oder im Speicher?

9

Bezieht sich der Begriff "Dateitabellen" im Kontext von Betriebssystemsteuertabellen auf eine Datenstruktur, die Teil des Dateisystems ist oder sich im Hauptspeicher befindet (und in diesem Fall würde ich davon ausgehen, dass nur Verweise auf geöffnete Dateien vorhanden sind)? ? Mein Lehrbuch 1 sagt:

Die Tabellen enthalten Informationen über das Vorhandensein von Dateien, ihren Speicherort im Sekundärspeicher, ihren aktuellen Status und andere Attribute. Viele, wenn nicht alle dieser Informationen können von einem Dateiverwaltungssystem verwaltet und verwendet werden. In diesem Fall verfügt das Betriebssystem nur über geringe oder keine Kenntnisse über Dateien.

Was ist ein Dateiverwaltungssystem? Bedeutet das das Dateisystem?

1 Stallings, Betriebssysteme , 7 th ed., P. 127

Kazark
quelle

Antworten:

22

Es ist ohne weiteren Kontext unklar, ob Stalling über die speicherinterne Inode-Tabelle oder die Tabellen mit im Dateisystem spricht. Ich habe jemandem eine viel frühere Ausgabe eines Buches geliehen, es aber nie zurückbekommen. Daher kann ich den Kontext nicht selbst nachschlagen.

Es gibt drei "Dateitabellen", aber die hier beschriebene wird häufiger als " In-Memory-Inode-Tabelle " bezeichnet. Die zweite wird üblicherweise als " offene Dateitabelle " bezeichnet und existiert pro Prozess. Beide Tabellen befinden sich im Kernelspeicher und sind für ein Programm nicht zugänglich. Die dritte "Tabelle" besteht eigentlich aus zwei Gruppen von Tabellen innerhalb des Dateisystems (auf der Festplatte), die erste ist die Inode-Tabelle auf der Festplatte und die zweite sind die Datenblöcke selbst (Hinweis: Diese Diskussion betrifft die traditionelle Verwaltung von UNIX-Dateisystemen, neuere Systeme können dies verschiedene Organisationen haben). Einträge in der Inode-Tabelle enthalten Referenzsequenzen in Datenblöcken, die entweder indirekte Referenzblöcke oder tatsächliche Daten enthalten. Der Schlüssel zu einer DateiAuf dem Dateisystem befindet sich der Inode, nicht die Datenblöcke selbst. Wenn Stalling von einer "Dateitabelle" auf der Festplatte spricht, ist dies im Allgemeinen die "kleinere" Tabelle auf der Festplatte, die Dateien kennzeichnet, z. B. die Inode-Tabelle oder die Blockdefinitionstabelle in FAT-Systemen.

In Bezug auf die In-Memory-Inode-Tabelle wird der Inode aus dem Dateisystem geladen, sein st_nlink-Wert wird erhöht und dann dem Rest des Systems zugänglich gemacht. Wenn die Inode-Daten auf die Festplatte geschrieben werden, wird die st_ctime aktualisiert. Wenn der Inode nicht mehr im Speicher benötigt wird, wird der Wert st_nlink dekrementiert und der Eintrag in der Tabelle als frei markiert. Jeder Prozess mit Verweisen auf etwa drei oder fünf Einträge in die In-Memory - Inode - Tabelle beginnt: die Inodes von stdin, stdout, stderr- diese sind oft eine Gerätedatei (tty) - und dann Verweise auf das aktuelle Verzeichnis und das Root - Verzeichnis. Ein Inode befindet sich nur einmal in der Tabelle, sodass möglicherweise mehrere Verweise auf einen einzelnen Inode in der Tabelle vorhanden sind.

Die geöffnete Dateitabelle wird pro Prozess gespeichert und enthält Verweise auf die Inode-Tabelle im Speicher sowie Zeiger auf Puffer und Statusinformationen (wie fseek(2)Wert und Flags von open(2). Der Dateideskriptor ist buchstäblich ein Index in der geöffneten Dateitabelle, aber die meisten Leute verweisen auf den Eintrag in der geöffneten Dateitabelle, wenn sie über den "Dateideskriptor" sprechen.

Wenn eine Datei mit geöffnet wird open(2), wird ein verfügbarer Eintrag in der geöffneten Dateitabelle gefunden, der Inode der Dateireferenz durch den Pfadnamen bestimmt, dieser Inode wird in die In-Memory-Inode-Tabelle geladen, falls nicht bereits geladen, die Anzahl st_nlink wird erhöht und der Inode-Eintrag wird im Dateideskriptor referenziert, Flags gesetzt und Puffer zugewiesen. Im geschlossenen Zustand erfolgt das Gegenteil.

Die Routinen innerhalb des Kernels werden als " Dateiverwaltungssystem " bezeichnet, und das " Dateisystem " ist die Organisation auf der Festplatte. Heutzutage gibt es eine Reihe von "steckbaren" Modulen, die modprobe(8)für verschiedene Organisationen auf der Festplatte in das Dateiverwaltungssystem geladen ( ) werden können. Beispielsweise gibt es Dateisystemtypen ext2 / ext3 / ext4, von denen jeder ein anderes Modul im Dateiverwaltungssystem des Kernels hat. das gleiche gilt für ntfs, sbfs, nfs, vfat, jfs usw.

Das ist etwas langatmiger als ich ursprünglich beabsichtigt hatte, also werde ich hier aufhören.

Arcege
quelle
Dies ist eine unglaublich gute Antwort.
Kazark
Ja, bitte hören Sie nicht auf, wenn Sie eine so gute und umfassende Antwort geben.
Lizardx