Kapitel 7

This commit is contained in:
WieErWill 2020-12-22 15:59:59 +01:00
parent 6121026ccb
commit f061852499
2 changed files with 442 additions and 0 deletions

View File

@ -393,3 +393,121 @@ Fragen und Fragestellungen zum Verständnis zur Vorlesung
---
> Wie funktioniert Segmentierung mit Paging und wozu ist diese Verfahrensweise gut?
# Dateisysteme
> Wozu werden Dateien benutzt?
---
> Wie ist eine Datei definiert?
---
> Welche wichtigen Eigenschaften sollten Dateien haben und warum?
---
> Welche Aufgabe haben Dateimodelle?
---
> Wodurch unterscheiden sich verschiedene Dateimodelle?
---
> Wozu werden (symbolische) Dateinamen benutzt?
---
> Welche Transparenzeigenschaften können durch die Gestaltung der Dateinamen ausgedrückt werden?
---
> Was ist ein hierarchischer Namensraum und welche vorteilhafte
---
> Eigenschaft besitzt dieser?
---
> Welche Vorteile besitzen unstrukturierte Dateien?
---
> Warum gibt es trotzdem strukturierte Dateien?
---
> Nennen Sie typische Dateiattribute.
---
> Was sind Sicherheitsattribute und wie können diese aussehen?
---
> Welche Dateioperationen werden in jedem Dateisystem benötigt?
---
> Welche Funktion haben die Operationen „lseek“ und „mmap“ und käme man auch ohne diese beiden Funktionen aus?
---
> Welche Aufgaben haben Dateisysteme?
---
> Was ist Ihnen über das physische Layout von Magnetplatten bekannt?
---
> Charakterisieren Sie den Begriff „Sektor“ warum ist er wichtig?
---
> Welches sind wichtige Parameter von Speichermedien?
---
> Wie unterscheiden sich die Eigenschaften von Magnetplatten und SSDs prinzipiell?
---
> Welche prinzipiellen Management-Datenstrukturen gibt es?
---
> Welche Informationen enthält ein i-Node?
---
> Welche Aufgaben haben Verzeichnisse?
---
> Wie kann ein symbolischer hierarchischer Namensraum dargestellt werden?
---
> Durch welche 2 Formen können freie Speicherbereiche beschrieben werden?
---
> Was wird durch den Superblock beschrieben?
---
> Welche prinzipiellen Informationen sind hier zu finden?
---
> Beschreiben Sie die einzelnen Schritte verschiedener Dateizugriffsarten
---
> Welche Management-Datenstrukturen sind dabei und zu welchem Zweck beteiligt?

View File

@ -1682,3 +1682,327 @@ Architekturprinzipien
2. mikrokernbasierte Architekturen
- feingranulare Adressraum-Isolation, auch zwischen Betriebssystem-Komponenten
# Dateisystem
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
## Dateimodelle
### Aufgabe: Präzise Festlegung der Semantik der Abstraktion „Datei“
Varianten 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
### 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
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
Varianten
1. unstrukturiert: lineare Bytefolgen (Linux, Windows, Mac OS X)
2. satz- oder baumstrukturiert, indexsequenziell (Mainframes)
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.
- Speicherung strukturierter Daten wie Bankkonten
- Datenstrukturen aus Programmen etc.
Strukturierte Dateien (Mainframe-Dateisysteme)
- oft genutzte Standard-Strukturen
- satzstrukturiert, baumstrukturiert, indexsequenziell
- komfortabel, anwendungsnah
- Vorstufe der DBMS-Schemata
- z.B. satzstrukturiert oder baumstrukturiert mit Schlüsseln
### Datei-Attribute
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)
Weitere Attribute
1. Zugriffsstatistiken; Datum
- der Erstellung
- des letzten Lesezugriffs
- des letzten Schreibzugriffs
2. Nutzungszähler
### Operationen auf Dateien
Benutzung von Dateien: Operationen der Betriebssystem-API
| Operationen (Systemaufrufe) | Typische Parameter|
| -- | -- |
| Erzeugen (create, open) | Name, Attribute -> Filedesckriptor (fd) |
| Löschen (unlink) | Name |
| Öffnen (open) | Name, Zugriffsart -> fd |
| Schließen (close) | fd |
| Inhalt lesen (read) | fd, Anzahl Bytes (,Position)-> Daten |
| Inhalt schreiben (write) | fd, Anzahl Bytes (, Position), Daten |
| Positionszeiger setzten (Iseek) | fd, Position |
| in virtuellen AR einbinden (mmap) | fd, virtuelle Adresse |
| Attribute lesen (stat) | Name -> Attribute |
| Attribute setzten (chmod/own/grp) | Name, Attribute |
(in Klammern die Namen der Unix-API)
Syntax und Semantik: BS-spezifisch, definiert in API-Spezifikation
### 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
## Dateisysteme
Problem
1. schnelles
2. effizientes
3. robustes
4. sicheres
Speichern und Wiederfinden von Dateien auf persistenten Speichermedien
Dateisystem $\approx$ Aktenschrank, bestehend aus
1. Metadaten: Datenstrukturen zum Management der Nutzdaten
2. Nutzdaten der Dateien
3. Algorithmen, die ein Dateisystem realisieren
4.
Verbreitete „Aktenschrank“-Typen:
- FAT (File Allocation Table): QDOS, MS-DOS (1978)
- NTFS (New Technology File System): Windows 2000/XP/Vista/7+
- HFS+ (Mac OS Extended (journaled)): Mac OS, APFS: iOS
- Ext (Extended File System (=4: journaled)): Linux, IBM AIX
- NFS (Network File System): Sun; Unix-Systeme, Windows-Systeme, ...
- ISO 9660 für optische Speichermedien
### 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)
- 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 !!
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
### 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
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 >>)
- 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
- beim Erzeugen von Dateien create(“/home/anna/ProjectXBoard“,<Schutzinformationen>)
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
#### 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
- Realisierung: Verzeichnis = Menge von Paaren (Name, i-Node-Index)
#### 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
#### 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
## Datenstrukturen u. Algorithmen des Betriebssystems
Ablauf eines Dateizugriffs
1. Anwendungsprogramm
2. im Folgenden: beteiligte Datenstrukturen und Algorithmen des Betriebssystems
`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,
7. Rückgabe von dessen Index (fd) an Aufrufer
`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
Alternative Zugriffsmethode: per VMM
- `mmap(start, length, PROT_READ, MAP_PRIVATE, fd, offset);`
- Einblenden einer Datei in (eigenen) Adressraum: vm p , Kap. 3
- Zugriffsoperationen: sind reguläre Arbeitsspeicherzugriffe
- Zugriff auf Medium: durch reguläre Seitenfehlerbehandlung des VMMs
Vergleich Bsp Kontozugriff
read/write
```bash
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));
```
=> 6 Operationen
mmap
```bash
struct konto_t kontenDB[kontenZahl];
fd=open(“kontodatei“, O_RDWR);
mmap(&kontenDB, ... , RW, ..., fd, 0);
kontenDB[kontoNr].stand = 0;
```
=> 1 Operation
- read/write
- Umständliche Benutzung
- jede Operation erfordert Kopieren (teuer!)
- Caching des Dateisystems wird genutzt
- kleinste Transfereinheit 1 Sektor
- mmap
- direkter Zugriff auf Daten, implizite Leseoperationen per VMM
- keine Kopieroperationen
- VMM, working set, wird genutzt
- kleinste Transfereinheit 1 Seite
- close(fd)
1. Freigabe des Filedeskriptors im Prozess-Deskriptor
2. Zurückschreiben der gecachten Informationen (i-Node, Nutzdaten)
- implizit, im Rahmen des Dateisystem-internen Cachemanagements (Alterung)
- explizit, durch fsync()
- munmap(start,length)
1. hebt Assoziation zwischen Datei und Arbeitsspeicher auf (vm p )
- weitere Zugriffe: Speicherzugriffsfehler
2. Zurückschreiben modifizierter Seiten
- implizit, im Rahmen des regulären Pagings (Verlassen des working sets)
- explizit, durch msync()