Betriebssystemprinzipien für Studenten im Grundstudium Learning Record
Learning Record Family Bucket
Kapitel 11 Implementierung des Dateisystems
11.1 Dateisystem
1. Überblick über das Dateisystem
Verfahren und Datenstruktur zum Organisieren von Dateien auf einem Speichergerät
Das Modul, das für die Verwaltung und Speicherung von Dateiinformationen im Betriebssystem verantwortlich ist
Der größte Teil des Dateisystems ist im Betriebssystem vorhanden, aber einige Mikrokerne haben kein Dateisystem
Systemwinkel:
- Speicherplatz auf Speichergeräten organisieren und zuweisen
- Verantwortlich für das Abrufen, Lesen und Schreiben von Dateien usw.
- Ziel: Zugriffsgeschwindigkeit und Speicherplatzeffizienz
Benutzerperspektive:
- Stellt einen Dateizugriffsmechanismus für den Zugriff nach Namen bereit
- Dateiorganisation
- Ziel: Bequemer Dateizugriffsmechanismus
2. Dateisystemhierarchie
grundlegendes Dateisystem
Lesen und Schreiben von physischen Blöcken
Steuerbefehle an Gerätetreiber senden
Dateiorganisationsmodul
Verwalten Sie Dateien, logische Blöcke und physische Blöcke
Konvertieren Sie die logische Adresse der Datei in eine physische Adresse, verwalten Sie den freien Speicherplatz und weisen Sie der Datei physische Blöcke zu
logisches Dateisystem
Metadaten im Dateisystem verwalten: alle Strukturdaten außer Dateidaten
Dateizugriff nach Namen, Dateiverzeichnisverwaltung, FCB-Verwaltung, Speicherschutz
3. Implementierung des Dateisystems
Physikalischer Block: bestehend aus einem oder mehreren Sektoren, die grundlegende Lese- und Schreibeinheit für Dateien
Teilung: Teilung
Volume (logischer Datenträger): Volume, logische Partition auf dem Datenträger, die auf der physischen Partition aufgebaut ist
zwei Dateisysteme
- Disk-Dateisystem
- Speicher Dateisystem
4. Dateisystem der Festplatte
5. Speicherdateisystem
Partitionstabelle: Alle Informationen zur Installationspartition
Verzeichnispufferstruktur: Speichert die Verzeichnisinformationen, auf die zuletzt zugegriffen wurde
Offene Dateitabelle des Systems, geöffnete Dateitabelle verarbeiten
Zweck: Verbesserung der Dateisystemleistung durch Puffertechnologie
6. Virtuelles Dateisystem
Zweck: Unterstützung mehrerer Dateisysteme
Konsolidieren Sie mehrere Dateisysteme in einer Verzeichnisstruktur
Maskieren Sie Unterschiede zwischen Dateisystemen für Benutzer
Virtuelles Dateisystem VFS
Dateisystemschnittstelle: Eine einheitliche Schnittstelle für Anwendungen zum Zugriff auf Dateien
VFS-Schnittstelle: VFS-Schnittstelle für verschiedene Dateisysteme definieren
7. Netzwerkdateisystem
NFS: Speicherplatz sparen und gemeinsame Nutzung erreichen
Zugriff auf entferntes Dateisystem
8. Häufig verwendete Dateisysteme
Windows: FAT NTFS ReFS
Linux:Ext(Ext2 3 4 )
Mac OS: HFS
11.2 Verfahren zur Speicherplatzzuweisung
physische Blockade
Die Grundeinheit zum Lesen und Schreiben von Speichergeräten
Grundlegende Zuordnungseinheit für Speichergeräte
Entspricht der Seitengröße des Speichers
logischer Block: ein Block im Dateibereich
Die Größe stimmt mit dem physikalischen Block überein.
Ein logischer Block wird in einem physikalischen Block gespeichert
kontinuierliche Vergabe
Jede Datei belegt einen zusammenhängenden Satz physischer Blöcke auf der Festplatte
FCB liefert nur: Startblocknummer und -länge
Mangel:
Platzverschwendung (kleiner Speicherplatz kann nicht zugewiesen werden)
Dateien können nicht dynamisch wachsen (Datei A)
ist nicht förderlich für das Einfügen und Löschen von Dateien (Daten müssen verschoben werden)
Linkzuweisung
Diskrete physische Blockzuweisung
explizite Zuordnung, implizite Zuordnung
Implizite Verknüpfung: Die Zeigeradresse des nächsten Blocks wird im physikalischen Block angegeben
Vorteile: kann die Belegung erweitern, Dateien einfach einfügen und löschen
Nachteile: Direkter Zugriff nicht möglich, langsamer Zugriff auf Dateien
Links anzeigen: Nehmen Sie den Zeiger heraus und speichern Sie sie zusammen
Stark verbesserte Abrufgeschwindigkeit
FAT-Tabelle, nicht geeignet für Festplatten mit großer Kapazität Dateizuordnungstabelle, eine Partition hat zwei FAT-Tabellen
Link-Tabellengröße: 16-Bit-Eintrag, der 128 KB groß ist; 32-Bit-Eintrag, der 16 GB groß ist
Indexzuordnung
Scattered FAT, jeder Datei wird eine FAT-Tabelle, also die Indextabelle, zugeordnet
Indexblock: speichert den physischen Block, der auf die Blocknummer jedes physischen Blocks der Datei zeigt
Adresszuordnung:
mehrstufiger Index
Für Dateien, die größer als 4 MB sind, ist eine mehrstufige Indexmethode erforderlich
gemeinsame Strategie gemischte Strategie
iNodes in Unix
Level 3-Indizes unterstützen 48 KB + 4 MB + 4 GB + 4 TB. Da Sie Level 3-Indizes verwenden möchten, verwenden Sie Level 3-Indizes nur, wenn Sie alle vorherigen direkten Indizes, Level 1-Indizes und Level 2-Indizes aufgebraucht haben
11.3 Freiraumverwaltung
kostenlose Liste
Die freie Liste wird direkt in einer Array-ähnlichen Weise verwaltet
kostenlose Liste
Verknüpfen Sie alle freien Blöcke auf der Festplatte
Bitmap
Verwenden Sie ein binäres Bit, um die Verwendung eines Blocks anzuzeigen
1: Plattenblock ist frei
0: Der Plattenblock wurde zugewiesen
Lernen Sie die Berechnung der Zeile und Spalte, die Berechnung der Blocknummer
Bitmaps benötigen zusätzlichen Platz
Blockgröße = 2^12 Bytes
Festplattengröße = 2^30 Bytes
n = 2^30 / 2^12 = 2^18 Bit
Bitmaps werden in physischen Blöcken gespeichert, Speicherplatzverwaltung mit geringer Kapazität
Gruppenlink
Kombinieren von freier Liste und freier verknüpfter Liste
Beispiel: UNIX-System
Teilen Sie freie Blöcke in mehrere Gruppen auf, alle 100 Blöcke als Gruppe
Jeder Satz erster freier Blöcke enthält:
- Gesamtzahl freier Blöcke
- Die Adresse des ersten Blocks des nächsten Satzes freier Blöcke
- Liste der Blocknummern anderer freier Blöcke in dieser Gruppe
MOOC-Einheitenarbeit
1. Eine Datei hat 20 Plattenblöcke (Blocknummer: 0–19), vorausgesetzt, dass sich der Dateikontrollblock im Speicher befindet (wenn die Datei eine Indexzuordnung verwendet, befindet sich die Indextabelle nicht im Speicher). Berechnen Sie bitte in den folgenden Fällen, wie viele Platten-I/O-Operationen unter den drei Zuweisungsmethoden kontinuierliche Zuweisung, Linkzuweisung und einstufige Indexzuweisung erforderlich sind? (Jedes Mal, wenn ein Plattenblock eingelesen oder ausgeschrieben wird, ist eine Platten-E/A-Operation erforderlich. Außerdem, unter der Annahme, dass im kontinuierlichen Zuordnungsmodus keine freien Plattenblöcke am Anfang der Datei vorhanden sind, aber es gibt freie Plattenblöcke am Ende der Datei 1) Am Anfang der
Datei 2) Einen Plattenblock
vor dem 15. Block der Datei hinzufügen und den Inhalt schreiben
3) Einen Plattenblock am Ende der Datei löschen
4) Fügen Sie einen Festplattenblock hinzu und schreiben Sie den Inhalt an das Ende der Datei.
(1) Kontinuierliche Zuweisung: 0-mal, Startblocknummer und Länge des FCB direkt modifizieren
Linkzuordnung implizit: 1 Mal zuerst die Blocknummer des zweiten Blocks lesen und dann die FCB-Startblocknummer ändern
Einstufiger Index: 2 Mal in die Indextabelle einlesen, die Indexelemente im Indexblock ändern und dann in den Festplattenblock schreiben
(2) Kontinuierliche Zuordnung: Blocknummern 14–19 lesen, Blocknummern 15–20 schreiben und einen neuen Block schreiben, 13 Mal
Link-Zuordnung: implizit: Lesen Sie die ersten 14 Blöcke, um den Zeiger auf den 15. Block 14 Mal zu finden, schreiben Sie den Inhalt des neuen Blocks und die Adresse des alten 15. Blocks, schreiben Sie die Adresse des neuen Blocks in den 14. Block, a insgesamt 16 mal
Einstufiger Index: Lesen Sie dreimal den Inhalt des Indexblocks, ändern Sie das Indexelement und schreiben Sie es in den Festplattenblock und schreiben Sie den Inhalt des neuen Blocks
(3) Kontinuierliche Zuweisung: 0 mal, direkt die Länge der FCB-Tabelle modifizieren
Link-Zuordnung: Implizit: 20 Mal, die ersten 19 Mal lesen die Adresse des zwanzigsten Blocks und ändern dann die Adresse auf -1, um anzuzeigen, dass der 19. Block der Endblock ist
Einstufiger Index: Lesen Sie die Indextabelle zweimal und ändern Sie den Inhalt des Indexelements im Indexblock
(4) Kontinuierliche Zuweisung: 1 Mal Inhalt schreiben und Dateilänge von FCB ändern
Linkzuordnung: implizit: 22 Mal, die ersten 20 Mal finden den Inhalt des zwanzigsten Blocks, schreiben dann den Inhalt des neuen Blocks und ändern schließlich den Zeiger des zwanzigsten Blocks so, dass er auf die Adresse des neuen Blocks zeigt
Einstufiger Index: Lesen Sie dreimal den Inhalt des Indexblocks, ändern Sie das Indexelement und schreiben Sie es in den Festplattenblock und schreiben Sie den Inhalt des neuen Blocks
2. Die Verzeichnisdatei nimmt den Verknüpfungstyp an. Jeder Plattenblock speichert die Beschreibung von 10 Dateien niedrigerer Ebene und kann bis zu 40 Dateien niedrigerer Ebene speichern. Wenn die Datei niedrigerer Ebene eine Verzeichnisdatei ist, zeigt das Verzeichnis höherer Ebene auf den ersten Block der Verzeichnisdatei, andernfalls zeigt er auf die gewöhnliche Datei Dateikontrollblock. Gewöhnliche Dateien haben die Form eines zweistufigen Index, und 12 Plattenblockadressen sind im Dateisteuerblock angegeben. Die ersten 10 Plattenblockadressen zeigen auf die physikalischen Adressen der ersten 10 Seiten, und die 11. Plattenblockadresse zeigt auf die Indextabelle der ersten Ebene und Indextabelle der ersten Ebene Bei gegebenen 256 Plattenblockadressen, das heißt, die Adressen der 10. bis 265. Seite der Datei werden angezeigt, zeigt die 12. Plattenblockadresse auf die sekundäre Indextabelle und in der Sekundärindextabelle sind die Adressen von 256 Primärindextabellen angegeben. Verzeihung:
1) Wie viele Seiten darf eine gewöhnliche Datei im Dateisystem maximal haben?
max = 10 + 256 + 256*256 = 65802 Seiten
2) Wenn Sie eine bestimmte Seite in der Datei /A/D/K/Q lesen möchten, wie oft müssen Sie die Diskette mindestens starten? Wie oft möchten Sie die Festplatte höchstens starten? (Jedes Mal, wenn ein Festplattenblock gelesen wird, muss eine Festplattenoperation gestartet werden.)
am wenigsten | am meisten | |
---|---|---|
Erinnerung/->A | 0 | 0 |
A->D | 1 | 4 |
D->K | 1 | 4 |
K->Q | 1 | 4 |
Q->FCB | 1 | 1 |
FCB->eine bestimmte Seite | 1 | 3 |
gesamt | 5 | 16 |
3. Angenommen, die Größe eines logischen Blocks und eines physischen Blocks eines Dateisystems auf einer Platte beträgt beide 512 B. Unter der Annahme, dass sich der FCB jeder Datei bereits im Speicher befindet, fragen Sie für die drei Zuweisungsmethoden (kontinuierliche Zuweisung, explizite Linkzuweisung und einstufige Indexzuweisung):
1) Wie ist die Zuordnung von logischer Adresse zu physikalischer Adresse im System implementiert?
2) Geben Sie ein Beispiel, um den Mapping-Prozess von der logischen Adresse zur physikalischen Adresse bei der einstufigen Indexzuweisung zu veranschaulichen.
Angenommen, die logische Adresse ist LA, der logische Block und der physische Block 512B sind S, und die relative Startadresse der logischen Adresse ist G
(1) Kontinuierliche Zuordnung: LA/S = Q...RQ ist die logische Blocknummer, R ist der Offset innerhalb des Blocks
B = Q + im FCB gespeicherte Startblocknummer D = R
Physische Adresse (B, D)
Link anzeigen: LA/S = Q...RQ ist die logische Blocknummer, R ist der Offset innerhalb des Blocks
B = Q und G erhalten die physische Blocknummer in der verknüpften Liste D = R
Physische Adresse (B, D)
Einstufiger Index: LA/S = Q...RQ ist die logische Blocknummer, R ist der Offset innerhalb des Blocks
B = physikalische Blocknummer entsprechend Element Q in der Indextabelle D = R
Physische Adresse (B, D)
(2) Beispielsweise wird unter der Annahme, dass die logische Adresse 1028 ist, der Inhalt des Indexblocks der Datei wie folgt indiziert: 6 1 13 -1 -1 -1
Dann ist 1028/512 = 2 … 4
Die Suchindextabelle ist Nummer 13, dann ist die physikalische Adresse PA = (13, 4)
4. Geben Sie bitte ein Beispiel für ein bestimmtes Dateisystem an, um zu veranschaulichen, aus welchem Inhalt das Dateisystem im Allgemeinen besteht.
Das Dateisystem besteht im Allgemeinen aus Dateiklassifizierung, Dateiverzeichnisstruktur, logischer Dateistruktur, physikalischer Dateistruktur, Speicherverwaltung, Systemaufrufen und Plattenstruktur.
Beispiel: Im UNIX-Dateisystem gibt es drei Arten von Dateien: gewöhnliche Dateien, Verzeichnisdateien und Gerätedateien.
Logische Dateistruktur: Unstrukturierte Streaming-Dateien,
Physische Dateistruktur: Mehrfachindexstruktur,
Dateiverzeichnisstruktur: Grafisches Verzeichnis, Verwendung von Hardlinks zur Realisierung von Dateifreigaben, Verwendung von Indexknoten zur Verbesserung der Dateizugriffseffizienz,
Dateispeicherverwaltung: Verwaltung des freien Speicherplatzes: Gruppenverknüpfung;
Plattenstruktur: Physische Struktur, Platten, Köpfe, Spindeln
Speicherstruktur: Einzelprozess-Dateitabelle, System-Dateitabelle (einschließlich Lese-Schreib-Flag, Anzahl der Prozesse, die sich den Lese-Schreib-Zeiger teilen, Nummer des aktiven Knotens, Lese-Schreib-Zeiger usw.)
Dateisystemaufrufe: Dateien erstellen, Dateien löschen, Dateien lesen, Dateien öffnen, Dateien schließen, Dateizeiger suchen, Dateien verknüpfen, Dateiberechtigungen festlegen, Pipeline-Dateien erstellen, Dateien kopieren und andere Funktionen zum Realisieren von Dateioperationen und Dateischutz.