Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Kapitel 4:
Dateisysteme
Wintersemester 2019/20
Betriebssysteme
H.-A. Schindler
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 2
Roadmap
Betriebs-
system
Anwendungsschnittstelle (Application Programmer‘s Interface, API)
Anwen-
dungs-
ebene
OfficeGUI Google Earth
ABSMatLab Firefox
Betriebssystem-Dienste
Prozessmanagement Dateisysteme Netzwerkmanagement
Ressourcenmanagement
Prozessor-
Ressourcen
Kommunikations-
Ressourcen
Speicher-
RessourcenE/A
Ressourcen
4. Dateisysteme
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 3
Dateien und Dateisysteme
Motivation
Prozesse
verarbeiten Informationen,
speichern diese,
rufen diese ab,
• deren Lebenszeit >> Lebenszeit Prozesse → Persistenz
• deren Datenvolumen >> Arbeitsspeicher → Größe
• zur gemeinsamen Nutzung → individuelle Zugriffsrechte
benötigt wird: geeignetes Paradigma
• Datei: Betriebssystem-Abstraktion zum Management persistenter Daten
• Dateisystem: „Aktenschrank“, der Dateien enthält
4. Dateisysteme
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 4
4.1 Dateimodelle
Aufgabe
Präzise Festlegung der Semantik der Abstraktion „Datei“
Varianten
... gibt es viele
diese unterscheiden sich durch
1. Dateinamen; z.B.
Typtransparenz („kap4.pptx“ vs. „kap4“)
Ortstransparenz („C:\Users\maier“ vs. „/Users/maier“)
Struktur (flach, hierarchisch)
2. Dateiattribute; z.B.
Sicherheitsattribute,
Zugriffsstatistiken
3. Operationen auf Dateien
Erzeugen,
Löschen,
Lese/Schreiboperationen
4. Dateisysteme / 4.1 Dateimodelle
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 5
Aufgabe
Identifikation von Dateien mittels symbolischer Namen
Namensmerkmale
1. Grundmerkmale
• verwendbare Zeichen, Groß/Kleinschreibungssensitivität,
Längenbeschränkungen, ...
2. Typtransparenz
• Windows-Familie: explorer.exe, kap4.pdf, LadyInBlack.flac
• Unix-Familie: explorer, kap4, LadyInBlack
3. Ortstransparenz
• Windows: C:\Users\maier
• Mac OS X, Linux: /Users/maier
4. Namensstruktur →
4.1.1 Dateinamen
4. Dateisysteme / 4.1 Dateimodelle / 4.1.1 Dateinamen
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 6
Hierarchischer Namensraum
Kennen wir schon; z.B.
Postadressen: Land/Stadt/Straße/Hausnummer/Name
→
große Dateianzahlen: Beherrschbarkeit
1. Eindeutigkeit
vorlesungen/bs/kap1 vs. vorlesungen/va/kap1
2. Eingrenzung von Sichten (Mehrbenutzersysteme)
/Users/schindler vs. /Users/amthor
Darstellung: baumartige Strukturen
• „Pfadnamen“ = Pfade im Namensraum
Users
amthor schindler
vorlesungen
Dateinamen
4. Dateisysteme / 4.1 Dateimodelle / 4.1.1 Dateinamen
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 7
4.1.2 Dateistrukturen
Varianten
1. unstrukturiert:
lineare Bytefolgen (Linux, Windows, Mac OS X)
2. satz- oder baumstrukturiert, indexsequenziell (Mainframes)
4. Dateisysteme / 4.1 Dateimodelle / 4.1.2 Dateistrukturen
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 8
Unstrukturierte Dateien (= das Unix/Windows/-Modell)
Datei: Bytefolge
• keinerlei inhaltliche/strukturelle Interpretation durch Betriebssystem
elementares Model
hohe Flexibilität
performant realisierbar
manchmal: auch mühevoll, z.B.
o Speicherung strukturierter Daten wie Bankkonten
o Datenstrukturen aus Programmen etc.
Byte 0 1 2 3 . . .
w i r w e r d e n w i e ns s
Textdatei:
167 151 162 040 162 144 145 156 040 167 151 163 163 145 156
Was wirklich drin steht (UTF-8 Zeichencodierung, oktal („od –ba“))
167 145
Dateistrukturen
4. Dateisysteme / 4.1 Dateimodelle / 4.1.2 Dateistrukturen
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 9
Strukturierte Dateien (Mainframe-Dateisysteme)
oft genutzte Standard-Strukturen
• satzstrukturiert, baumstrukturiert, indexsequenziell
• komfortabel, anwendungsnah
• Vorstufe der DBMS-Schemata
z.B. satzstrukturiert z.B. baumstrukturiert, mit Schlüsseln
wir müssen wissen wir werden KatzeHund Maus
Ibis Iltis
Igel
insert(Igel) →
Szene in Video ...
insert(Ibis,Iltis) →
Dateistrukturen
4. Dateisysteme / 4.1 Dateimodelle / 4.1.2 Dateistrukturen
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 10
4.1.3 Dateiattribute
Sicherheitsattribute
Standard seit 50 Jahren:
wahlfreie Zugriffssteuerung (Discretionary Access Control [DAC])
1. Eigentümer, Gruppe
2. Zugriffssteuerungslisten: Listen mit Benutzern und Rechten
z.B. Unix: Eigentümer, Gruppe, Rest der Welt; jeweils rwx-Flags
z.B. NTFS, Mac OS EFS: Listen von Paaren (Name, Rechte)
(etwas) leistungsfähiger
jüngere, leistungsfähigere Dateisysteme (SELinux, TrustedBSD, SEAndroid):
obligatorische Zugriffssteuerung (Mandatory Access Control [MAC])
1. Klassifikationen
(z.B. „öffentlich/vertraulich/geheim“)
2. Sicherheitslabel
(z.B. Zugehörigkeit zu Organisationseinheit, örtliche Beschränkungen)
4. Dateisysteme / 4.1 Dateimodelle / 4.1.3 Dateiattribute
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 11
Beispiel: Zugriffssteuerungslisten in Unix
00010100100
10001010000
10111001101
01000100011
10001010000
10111001101
01000100011
00101001001
00010100100
10001010000
10111001101
01000100011
00101001001
Statistik
Nutzdaten Meta-Infos
Adr.-Info Eigentümer (z.B. „kuehnhauser“)
Gruppe (z.B. „alle
Lehrstuhlmitarbeiter“)
Rest der Welt
lesen, schreiben
lesen
-Zugriffs-steuerungsliste
Datei
Realisierung: 9 Bits ...
r w - r - - - - -Bits 15..9
rw- r-- --- 1 kuehnhauser CrewX 7 Dez 20:22 ProjectXFile
Dateiattribute
4. Dateisysteme / 4.1 Dateimodelle / 4.1.3 Dateiattribute
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 12
Weitere Attribute
1. Zugriffsstatistiken; Datum
• der Erstellung
• des letzten Lesezugriffs
• des letzten Schreibzugriffs
2. Nutzungszähler
Dateiattribute
4. Dateisysteme / 4.1 Dateimodelle / 4.1.3 Dateiattribute
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 13
4.1.4 Operationen auf Dateien
Benutzung von Dateien: Operationen der Betriebssystem-API (in Klammern die Namen der Unix-API)
Operationen (Systemaufrufe) Typische Parameter
1. Erzeugen (creat, open) Name, Attribute → Filedeskriptor (fd)
2. Löschen (unlink) Name
3. Öffnen (open) Name, Zugriffsart → fd
4. Schließen (close) fd
5. Inhalt lesen (read) fd, Anzahl Bytes (, Position) → Daten
6. Inhalt schreiben (write) fd, Anzahl Bytes (, Position), Daten
7. Positionszeiger setzen (lseek) fd, Position
8. in virtuellen AR einbinden fd, virtuelle Adresse
(mmap)
9. Attribute lesen (stat) Name → Attribute
10. Attribute setzen (chmod/own/grp) Name, Attribute
Syntax und Semantik: BS-spezifisch, definiert in API-Spezifikation
4. Dateisysteme / 4.1 Dateimodelle / 4.1.4 Operationen auf Dateien
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 14
Beispiel: Inhalt lesen
mit expliziter Filepointer-Positionierung
mit impliziter Filepointer-Positionierung
Byte 0 1 2 3 . . . 6 . . .
w i r w e r d e n w i e ns s
Textdatei Filepointer
char Puffer[10];
fd=open(“/Users/kuehnhauser/Desktop/hilbert“,…);
lseek(fd,1);
read(fd,2,Puffer); // Puffer enthält danach „ir“;
lseek(fd,6);
read(fd,3,Puffer); // Puffer enthält danach „rde“
char Puffer[10];
fd=open(“/Users/kuehnhauser/Desktop/hilbert“,…);
read(fd,2,Puffer); // Puffer enthält danach „wi“
read(fd,4,Puffer); // Puffer enthält danach „r we“;
read(fd,2,Puffer); // Puffer enthält danach „rd“
4. Dateisysteme / 4.1 Dateimodelle / 4.1.4 Operationen auf Dateien
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 15
4.1.5 Zusammenfassung
Dateimodelle
unterscheiden sich durch
1. Namen und Namensräume
hierarchisch, Semantik
2. Dateistrukturen
un-, satz- oder baumstrukturiert
3. Attribute
Zugriffsschutz (Eigentümer, Zugriffsrechte, Klassifikationen)
Zugriffsstatistiken
4. Operationen
Semantik von Erzeugen, Löschen, Lese/Schreiboperationen
werden implementiert:
• durch Dateisysteme Anwendungsschnittstelle (Application Programmer‘s Interface, API)
OfficeGUI Google Earth
ABSMatLab Firefox
Betriebssystem-Dienste
Prozessmanagement Dateisysteme Netzwerkmanagement
Ressourcenmanagement
Prozessor-
Ressourcen
Kommunikations-
Ressourcen
Speicher-
RessourcenE/A
Ressourcen
4. Dateisysteme / 4.1 Dateimodelle / 4.1.4 Operationen auf Dateien
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 16
4.2 Dateisysteme
Problem
1. schnelles
2. effizientes
3. robustes
4. sicheres
Speichern und Wiederfinden von Dateien auf persistenten Speichermedien
≈ „Aktenschränke“
4. Dateisysteme / 4.2 Dateisysteme
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 17
Dateisystem Aktenschrank, bestehend aus
1. Metadaten: Datenstrukturen zum Management der Nutzdaten
2. Nutzdaten der Dateien
3. Algorithmen, die ein Dateisystem realisieren
Verbreitete „Aktenschrank“-Typen:1. FAT (File Allocation Table): QDOS, MS-DOS (1978)
2. NTFS (New Technology File System): Windows 2000/XP/Vista/7+
3. HFS+ (Mac OS Extended (journaled)): Mac OS, APFS: iOS
4. Ext∗ (Extended File System (∗=4: journaled)): Linux, IBM AIX
5. NFS (Network File System): Sun; Unix-Systeme, Windows-Systeme, ...
6. ISO 9660 für optische Speichermedien
Dateisysteme
4. Dateisysteme / 4.2 Dateisysteme
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 18
4.2.1 Speichermedien
Physisches Layout von Magnetplattenlaufwerken
1. Plattengeometrie: Sektoren, Spuren; mehrere Lagen: Oberflächen
2. Sektoren: elementare Zugriffseinheiten, z.B. 1024 Byte groß
Sektor eindeutig identifiziert durch 3D-Adresse:
(Sektornummer, Spurnummer, Oberflächennummer)
4. Dateisysteme / 4.2 Dateisysteme / 4.2.1 Speichermedien
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 19
Zugriffszeiten (Desktop/Server Laufwerke, 2017)
Rotationszeit 4-8 Millisekunden (10.000 min-1)
Armpositionierzeit 4-8 Millisekunden
(voller Schwenk, 200-400 Armpositionierungen/Sek)
Zugriffszeit auf Sektor
abhängig von Lage des Sektors in Relation zur aktuellen
Rotationsposition der Platte
Schwenkposition des Armes
• Größenordnung bei heutigen PC-typischen Laufwerken: 6-12 Millisekunden
→ kein wahlfreier Speicher !!
Datenrate 40-170 MByte/Sekunde
→ um Größenordnungen langsamer als Arbeitsspeicher !!
Speichermedien
4. Dateisysteme / 4.2 Dateisysteme / 4.2.1 Speichermedien
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 20
SSDs vs. Magnetplatten (2017)
1. wahlfreier Zugriff (c.g.s.)
2. erheblich geringerer Stromverbrauch (technologieabhängig, 10%)
3. erheblich geringere Zugriffszeiten, 5%
4. erheblich höhere Datenraten, Faktor 3
5. erheblich teurer, Faktor 5-10
Speichermedien
4. Dateisysteme / 4.2 Dateisysteme / 4.2.1 Speichermedien
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 21
4.2.2 Management-Datenstrukturen auf Speichermedien
Ziele
1. Speichern
2. Wiederfinden
von Dateien; schnell, effizient, robust, sicher
Management-Datenstrukturen (Metadatenstrukturen)
Datenstrukturen zur Organisation der Nutzdaten
1. Informationen über das Dateisystem selbst
2. Inhaltsverzeichnisse
3. Informationen über individuelle Dateien
4. Dateis. / 4.2 Dateis. / 4.2.2 Managem.-Datenstrukt. auf Speichermed.
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 22
4.2.2.1 i-Nodes(Information Nodes, Index Nodes)
Informationen über individuelle Dateien: i-Nodes
i-Node: Metainformationen über genau eine Datei (allg.: persistentes Objekt)
abhängig von konkretem Dateisystem:
1. enthaltene Informationen
2. Layout
3. Größe (≥ 128 Byte, teils >>)
Typischer i-Node
Nutzdaten-Adressen
(Sektorliste, Größe)
Zugriffsstatistik
Satzformat
Referenzzähler
Sicherheitsattribute
Eigentümer, Gruppe
Objekttyp (Datei, Verzeichnis, …)
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.1 i-Nodes
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 23
Nutzdaten-Adressen
(Sektorliste, Größe)
Nutzdaten-Adressen
(Sektorliste, Größe)
Man kann hineinsehen
wakatobi> ls –l
- rw- --- --- 1 Anna CrewX 12 Dez 20:22 ProjectXFiles
d rw- r-- --- 3 Anna CrewX 12 Dez 20:24 ProjectXBoard
- rw- r-- --- 1 Bernd Sales 12 Dez 20:24 SalesBoard
l rw- --- --- 1 Chris Sales 22 Dez 9:22 SX -> ProjectXFiles
Zugriffsstatistik
Satzformat
Referenzzähler
Sicherheitsattribute
Eigentümer, Gruppe
Objekttyp (Datei, Verzeichnis, …)
i-Nodes
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.1 i-Nodes
(umseitig)
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 24
Adressierung der Nutzdaten
.
.
.
Sektor 3456789
:
Sektor 7654321
Sektor 1234567
Nutzdatensektor
Nutzdatensektor
Nutzdatensektor
• • •
Nutzdaten-Beschreibung
im i-Node: Sektorliste
Nutzdatensektor
Sektoradressen
Nutzdatensektor
• • •
Sektor 87654
• • •
Nutzdatensektor
Nutzdatensektor
Sektoradressen
Sektoradressen
Sektoradressen
• • •
Sektor 765432
direkte
Adressierung
einfach indirekt
zweifach indirekt
logische i-Node-Erweiterungen (normale Plattensektoren)
i-Nodes
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.1 i-Nodes
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 25
Wo stecken die i-Nodes? → Die i-Node-Tabelle
zentrale Meta-Datenstruktur eines (i-Node basierten) Dateisystems
• (logisch) genau eine je Dateisystem
• erzeugt bei Dateisystem-Erstellung (Unix „mkfs“, „Formatierung“)
• feste Länge
• i-Node-Nummer = Index in dieser Tabelle
(eindeutige Objekt-Id innerhalb eines Dateisystems)
i-Nodes
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.1 i-Nodes
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 26
Nutzung von i-Nodes ...
... beim Lesen von Dateien
1. i-Node-Index der Datei besorgen (aus Verzeichnis, s.u.)
2. mit diesem Index: i-Node in der i-Node-Tabelle finden
3. aus dem i-Node lesen:
a) Schutzinformationen (Sicherheitsattribute)
b) Adressen der Nutzdaten
i-Nodes
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.1 i-Nodes
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 27
... beim Erzeugen von Dateien
create(“/home/anna/ProjectXBoard“,)
1. Suche nach freiem i-Node in der i-Node-Tabelle
2. Dateiinfos in i-Node schreiben (z.B. Struktur, Schutzinformationen)
3. Name und i-Node-Index in Verzeichnis eintragen
... beim Schreiben von Daten
1. Adressierungsinformationen im i-Node aktualisieren
... bei der Freigabe von Dateien
1. Verzeichniseintrag löschen
2. falls letzter Verzeichniseintrag dieser Datei (↑Referenzzähler):
a) i-Node in i-Node-Tabelle als „frei“ markieren
b) Ressourcen (belegte Sektoren) freigeben
i-Nodes
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.1 i-Nodes
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 28
4.2.2.2 Verzeichnisse
Aufgabe
Symbolische, hierarchische Namen ⟼ eindeutige Objekt-Id (=i-Node-Index)
Idee
1. Verzeichnis: Abbildung
symbolischer Namensraum → Objektnamensraum
Pfadnamenskomponente ⟼ Objekt-Id
2. alle Verzeichnisse gemeinsam: Abbildung
hierarchischer symbolischer Namensraum → Objektnamensraum
Pfadname ⟼ Objekt-Id
in Graph-Notation
• symbolischer Namensraum: baumähnlicher Graph
Knoten: Verzeichnisse
Kanten: attributiert mit Namen
• Pfadname: Folge von Kantennamen
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.2 Verzeichnisse
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 29
Realisierung
Verzeichnis = Menge von Paaren (Name, i-Node-Index)
Beispiel
Ein typisches Linux-Wurzelverzeichnis:
wakatobi> ls -ia --format=single-column /2 .2 ..
131073 bin3 dev
786433 etc917505 home786435 lib
1 proc655363 tmpwakatobi>
Verzeichnisse
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.2 Verzeichnisse
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 30
Beispiel: ein Linux-typischer Verzeichnis-BaumLogische Sicht
Wurzelverzeichnis „/“
home bin lib etc tmp
anna bernd chris
dok
Verzeichnis
„/home/chris“
(Knoten)
Dokument
„/home/chris/dok“
(Blatt)
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.2 Verzeichnisse
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 31
Beispiel: ein Linux-typischer Verzeichnis-BaumDatenstrukturen
home
bin
lib
etc
tmp
anna
bernd
chris
dok
i-Node für
„dok“
i-Node Dokument
„/home/chris/dok“
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.2 Verzeichnisse
Wurzelverzeichnis „/“
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 32
Beispiel: ein Linux-typischer Verzeichnis-BaumPhysisch
Beispiel: Pfadnamenauflösung „/home
home
bin
lib
etc
tmp
i-Node-Nummer ●
i-Node-Nummer ●
i-Node-Nummer
i-Node-Nummer
i-Node-Nummer
Wurzelverzeichnis „/“
/chris /dok“ homebin
lib
etc
tmp annaberndchris
dok
Nutzdatenadressen
anna
bernd
chris
i-Node-Nummer
i-Node-Nummer
i-Node-Nummer ●
dok i-Node-Nummer
Indizes in i-Node-Tabelle
i-Node-Tabelle
i-Node für bin
i-Node für home ■
i-Node für chris ■
Verzeichnis „/home“
Verzeichnis „/home/chris“
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.2 Verzeichnisse
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 33
4.2.2.3 Die Freiliste
Management-Datenstruktur für freien Speicher
Sektoren sind
1. entweder in Benutzung; enthalten dann
a) Nutzdaten von Dateien oder Verzeichnissen
b) Metadaten, z.B. i-Nodes
2. oder frei
alle freien Plattensektoren: Freiliste
Organisation
• z.B. als Bitmap, je Plattensektor ein Bit (frei/belegt)
• z.B. als B-Baum (HFS)
effiziente Suche von Mustern
– zusammenhängende Bereiche
– benachbarte Bereiche
– Bereiche bestimmter Größe
0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1
4. Dats. / 4.2 Dats. / 4.2.2 Management-Datenstrukturen / 4.2.2.3 Freiliste
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 34
4.2.2.4 Der Superblock
Einstiegspunkt eines Dateisystems
erzeugt: bei Erstellung eines Dateisystems („mkfs“, „formatieren“)
steht: an wohldefiniertem Ort (direkt hinter (eventuellem) Boot-Sektor)
enthält: Schlüsselparameter
1. Name des Dateisystems
2. Typ (NTFS, Ext∗, HFS, ...) → Layout der Metadaten
3. Größe und Anzahl Sektoren
4. Ort und Größe der i-Node-Tabelle
5. Ort und Größe der Freiliste
6. i-Node-Nummer des Wurzelverzeichnisses
wird als erstes beim Öffnen („montieren“, s.u.) eines Dateisystems vom
Betriebssystem gelesen:
• Typ: passende Betriebssystem-Komponente
• i-Node-Liste, Freiliste: Metadaten zum Management
• Wurzelverzeichnis: logischer Einstiegspunkt
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstruktur. / 4.2.2.4 Superblock
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 35
wakatobi> dumpe2fs –h /dev/sda1
Filesystem volume name: Linux Root
Last mounted on: /
Filesystem magic number: 0xEF53
Filesystem state: clean
Filesystem OS type: Linux
Inode count: 21766144
Block count: 87040162
Block size: 4096
Free inodes: 21541247
Filesystem created: Mon Oct 26 14:19:28 2015
First inode: 11
Inode size: 256
Journal inode: 8
Journal length: 128M
. . .
350 GB
16KB/Datei16KB/Datei
EXT4
Superblock
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstruktur. / 4.2.2.4 Superblock
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 36
4.2.2.5 Zusammenfassung (4.2.2)
Superblock
i-Node für /bin
i-Node für /home
0 1 01 01 0 1 01 homebinetc
annaberndchris
.cshrc
doks
bilder
books
doks
videos
Metadatenstrukturen
1. Superblock
2. Verzeichnisse
3. i-Nodes und i-Node-Liste
4. Freiliste
4. Dats. / 4.2 Dats. / 4.2.2 Managem.-Datenstrukt. / 4.2.2.5 Zusammenf.
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 37
4.2.3 Datenstrukturen u. Algorithmen des Betriebssystems
Ablauf eines Dateizugriffs
1. Anwendungsprogramm:
2. im Folgenden: beteiligte
• Datenstrukturen
• Algorithmen
des Betriebssystems
fd=open(“/home/jim“, O_RDONLY);
switch (access-method) {
case per-Filesystem: read(fd, &buffer, nbytes);
case per-VMM: mmap(start, length, PROT_READ,
MAP_PRIVATE, fd, offset);
}
close(fd);
4. Dats. / 4.2 Dats. / 4.2.3 Datenstrukturen und Algorithmen des BS
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 38
fd=open(“/home/jim“, O_RDONLY);
Pfadnamenauflösung
1. Lesen des i-Nodes des Wurzelverzeichnisses (Superblock)
2. Lesen der Nutzdaten des Wurzelverzeichnisses: Suchen von „home“
3. Lesen des i-Nodes von „home“
4. Lesen der Nutzdaten des „home“-Verzeichnisses: Suchen von „jim“
5. Lesen des i-Nodes von „jim“: Prüfen der Rechte zum Lesen (O_RDONLY)
6. Anlegen eines Filedeskriptors im Prozess-Deskriptor,
Rückgabe von dessen Index (fd) an Aufrufer
home
bin
etc
lib
tmp
i-Node-Nummer •i-Node-Nummer •i-Node-Nummer •i-Node-Nummer •i-Node-Nummer •
Wurzelverzeichnis
i-Node für jim •
anna
bernd
i-Node-Nummer •i-Node-Nummer •i-Node-Nummer •
i-Node für /bin •i-Node für /home •
Prozessdeskriptor
User-Id
fd-Tabelle
(Rechte,
Filepointer)
Index
jim
„/home“-Verzeichnis
Superblock
Datenstrukturen und Algorithmen des Betriebssystems
4. Dats. / 4.2 Dats. / 4.2.3 Datenstrukturen und Algorithmen des BS
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 39
read(fd, &buffer, nbytes);
Transfer von nbytes aus der geöffneten Datei fd zur Variablen buffer
1. Rechteprüfung
2. Zugriff auf Nutzdatenadressen im i-Node über fd-Tabelle im Prozessdeskriptor;
Ergebnis: Sektornummer(n) auf Speichermedium
3. Auftrag an Gerätetreiber: „Transfer der Sektoren in den BS-Cache“
4. Nach Fertigstellung (Interrupt):
Kopie des Caches nach buffer,
Rückgabe der Anzahl der tatsächlich gelesenen Bytes / Fehler
„buffer“
Medium BS-CacheAdressraum des
Anwendungsprozesses
Datenstrukturen und Algorithmen des Betriebssystems
4. Dats. / 4.2 Dats. / 4.2.3 Datenstrukturen und Algorithmen des BS
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 40
... und im großen Kontext:
Anwendungssystem
Anwen-
dungs-
ebene
Betriebs-
system
BS-Dienste
Betriebssystem-Schnittstelle (Application Programmer‘s Interface (API))
Dateisystem
Speicher-
Ressourcen
Hardware Speicher
Anwendungssystem Anwendungssystem
Ressourcenmanagement
KommunikationsmodelleProzessmgmnt . . .
Prozessor-
Ressourcen
Kommunikations-
Ressourcen
misc. E/A
Ressourcen
Ressourcenmanagement
Kommunikation
(LAN, WLAN etc.)Prozessoren misc. E/A (Grafik,
Firewire, USB etc.)
Datenstrukturen und Algorithmen des Betriebssystems
4. Dats. / 4.2 Dats. / 4.2.3 Datenstrukturen und Algorithmen des BS
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 41
... und im großen Kontext:
Anwendungssystem
Anwen-
dungs-
ebene
Betriebs-
system
BS-Dienste
Betriebssystem-Schnittstelle (Application Programmer‘s Interface (API))
HD-Gerätemanager
Hardware
DateisystemDateisystem
buffer
Datenstrukturen und Algorithmen des Betriebssystems
4. Dats. / 4.2 Dats. / 4.2.3 Datenstrukturen und Algorithmen des BS
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 42
Alternative Zugriffsmethode: per VMM
mmap(start, length, PROT_READ, MAP_PRIVATE, fd, offset);
Einblenden einer Datei in (eigenen) Adressraum: vmp, Kap. 3
Zugriffsoperationen: sind reguläre Arbeitsspeicherzugriffe
Zugriff auf Medium: durch reguläre Seitenfehlerbehandlung des VMMs
(→ maparea auf Seitengrenze („page-aligned“))
Beispiel: Wirkung von read vs. mmap
void *maparea;
char buffer[220];
fd=open(“/home/jim“, O_RDONLY);
maparea=malloc(220);
mmap(&maparea, 220, PROT_READ, MAP_PRIVATE, fd, 0);
// per-Filesystem-Variante:
read(fd, &buffer, 220);// hiernach gilt i, 0i220-1:
// maparea[i]==buffer[i]
Datenstrukturen und Algorithmen des Betriebssystems
4. Dats. / 4.2 Dats. / 4.2.3 Datenstrukturen und Algorithmen des BS
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 43
Gegenüberstellung read/write vs. mmap: Kontozugriff
struct konto_t konto;
off_t kontoOffset;
fd=open(“kontodatei“, O_RDWR);
kontoOffset = kontoNr*sizeof(konto_t);
lseek(fd,kontoOffset);
read(fd, &konto, sizeof(konto_t));
konto.stand = 0;
lseek(fd,kontoOffset);
write(fd, &konto, sizeof(konto_t));
struct konto_t kontenDB[kontenZahl];
fd=open(“kontodatei“, O_RDWR);
mmap(&kontenDB, ... , RW, ..., fd, 0);
kontenDB[kontoNr].stand = 0;
6 Operationen je Kontobewegung 1 Operation je Kontobewegung
Datenstrukturen und Algorithmen des Betriebssystems
4. Dats. / 4.2 Dats. / 4.2.3 Datenstrukturen und Algorithmen des BS
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 44
read/write
Umständliche Benutzung
jede Operation erfordert Kopieren (teuer!)
Caching des Dateisystems wird genutzt
kleinste Transfereinheit 1 Sektor
mmap
1. direkter Zugriff auf Daten, implizite Leseoperationen per VMM
2. keine Kopieroperationen
3. VMM, working set, wird genutzt
4. kleinste Transfereinheit 1 Seite
„kontenDB“
„konto“
Datenstrukturen und Algorithmen des Betriebssystems
4. Dats. / 4.2 Dats. / 4.2.3 Datenstrukturen und Algorithmen des BS
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 45
close(fd)
1. Freigabe des Filedeskriptors im Prozess-Deskriptor
2. Zurückschreiben der gecachten Informationen (i-Node, Nutzdaten)
a) implizit, im Rahmen des Dateisystem-internen Cachemanagements
(Alterung)
b) explizit, durch fsync()
munmap(start,length)
1. hebt Assoziation zwischen Datei und Arbeitsspeicher auf (vmp)
weitere Zugriffe: Speicherzugriffsfehler
2. Zurückschreiben modifizierter Seiten
a) implizit, im Rahmen des regulären Pagings (Verlassen des working sets)
b) explizit, durch msync()
Datenstrukturen und Algorithmen des Betriebssystems
4. Dats. / 4.2 Dats. / 4.2.3 Datenstrukturen und Algorithmen des BS
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 46
4.3 Zusammenfassung (Kapitel 4)
Dateimodelle
bestimmen:
Syntax und Semantik von Dateinamen, -strukturen, -attributen, -operationen
Dateisysteme
Aktenschränke mit Dateien;
• Aufgabe: schnelles, effizientes, robustes, sicheres Speichern und
Wiederfinden von Dateien
Metadatenstrukturen auf Speichermedien
1. Superblock: der Einstiegspunkt
2. Verzeichnisse: implementieren hierarchische Namensräume
3. i-Nodes und i-Nodetabelle: Metadaten individueller Dateien
4. Freiliste, Journal
4. Datsysteme / 4.3 Zusammenfassung
Betriebssysteme: ws 2019/20 H.-A. Schindler Folie: 1 - 47
Datenstrukturen des Betriebssystems
1. Filedeskriptortabelle im Prozessdeskriptor
→ offene Dateien (prozessindividuelle Rechte, Filepointer)
2. Caches in den Dateisystem-Implementierungen
• Nutzdatencache (buffer cache)
• Metadatencaches: i-Nodes, Verzeichniseinträge
Performanz
Zugriffsmethoden
1. per lesen/schreiben
2. per VMM
Zusammenfassung
4. Datsysteme / 4.3 Zusammenfassung
kap5.pptxkap5.pptx