Sie sind auf Seite 1von 36

7.

Dateisysteme
• Dateisystem ist die am häufigsten genutzte Abstraktion, die ein
Betriebssystem bietet
➢ Mechanismus zum bequemen Speichern und Wiederfinden von Daten,
Programmen, … für alle Benutzer
➢ Begriffsdefinitionen
▪ Datei (file): Sammlung von Daten auf einem stabilen Speicher unter
einem gewählten Namen
▪ Verzeichnis, Ordner (directory, folder): Enthält eine Sammlung von
Dateien und anderen Verzeichnissen  Baumstruktur
▪ Dateisystem (file system): enthält einen Verzeichnisbaum; DS-Typ
definiert allgemeine Charakteristika (max. Dateinamenlänge, max.
Dateigröße, Abstraktions-Algorithmus)
▪ Partition: Bereich (zusammenhängende Menge von Blöcken) einer
Festplatte, der ein Dateisystem enthalten kann
▪ Festplatte: persistentes Speichermedium, heutzutage meist entweder
flash-basiert (SSD) oder magnetspeicher-basiert (HDD), üblicherweise in
Partitionen unterteilt

Systemprogrammierung 1
Dateiattribute (Auswahl)
• Name: Symbolischer Bezeichner, aussagekräftig für Benutzer
und üblicherweise zweigeteilt
1. Benutzervergebener Name der Datei
2. Dateierweiterung: Hinweis zu Typ und Format des Inhalts
• Bezeichner: Eindeutige – üblicherweise numerische –
Kennung der Datei im Dateisystem
• Typ: UNIX unterscheidet z.B. reguläre Dateien, Verweise
(Links), spezielle Gerätedateien, Pipes, Sockets…
• Position: Speicherort(e) der Datei (Blockadresse(n) in der
Partition)
• Größe
• Benutzer- und Zugriffsinformationen: Wer darf lesen /
schreiben / ausführen, …
• Zeitpunkte: Erstellung, letzter Zugriff, letzte Modifikation, …
Systemprogrammierung 2
Dateiattribute (Auswahl)
• Name: Symbolischer Bezeichner, aussagekräftig für Benutzer
und üblicherweise zweigeteilt
1. Benutzervergebener Name der Datei
2. Dateierweiterung: Hinweis zu Typ und Format des Inhalts
• Bezeichner: Eindeutige – üblicherweise numerische –
user@host:~$ ls –l test.png
Kennung
-rw-r--r–der Datei
1 user userim Dateisystem
79524 Jul 8 22:32 test.png
user@host:~$ stat test.png
• Typ:File:
UNIX unterscheidet z.B. reguläre Dateien, Verweise
test.png
Size: 79524 Blocks: 160 IO Block: 4096
(Links),
regularspezielle
file Gerätedateien, Pipes, Sockets…
Device: fd00h/64768d Inode: 2101509 Links: 1
• Position: Speicherort(e) der
Access: (0644/-rw-r--r--) Uid: Datei (Blockadresse(n)
( 1000/user) in der
Gid: ( 1000/user)
Partition)
Access: 2018-07-08 22:32:11.867771313 +0200
Modify: 2018-07-08 22:32:07.979771255 +0200
• Größe
Change: 2018-07-08 22:32:07.979771255 +0200
Birth: -
• Benutzer- und Zugriffsinformationen: Wer darf lesen /
schreiben / ausführen, …
• Zeitpunkte: Erstellung, letzter Zugriff, letzte Modifikation, …
Systemprogrammierung 3
Organisationsform der Dateien
• Dateierweiterung ist nur ein Hinweis auf den Inhaltstyp
• BS sieht Dateien nur als Kette von Bytes
• Systemsoftware schafft die Verbindung zwischen Erweiterungen
und Standardanwendungen

• Linux-Shells nutzen diese Verbindung für die Tab-Ergänzung:


user@host:~$ ls
test.csv test.doc test.jpg test.png
user@host:~$ lowriter test <TAB>
user@host:~$ lowriter test.doc

Systemprogrammierung 4
Beispiel-Dateityp:
ausführbare Programme
• Systemaufruf der exec-Familie: BS soll aktuellen Prozess mit
gegebenem Programm ersetzen
• Dazu muss BS Programmdatei öffnen und analysieren
➢ Möglichkeit 1: Stapelverarbeitungsdatei
➢ Erste Zeile enthält das sog. Shebang (#!), gefolgt vom Dateinamen des
Programms, das die Anweisungen in der Datei verstehen und abarbeiten kann
➢ Beispiel: ein Shell-Script
#!/bin/sh
# bei Fehlern während der Abarbeitung des Skriptes sofort stoppen
set –e

# aktuellen Mensaplan nach /tmp herunterladen, anzeigen


# (mit PDF-Viewer „evince“) und schließlich wieder löschen
cd /tmp
wget https://www.stw.berlin/assets/speiseplaene/321/aktuelle_woche_de.pdf
evince aktuelle_woche_de.pdf
rm aktuelle_woche_de.pdf

exit 0

Systemprogrammierung 5
Beispiel-Dateityp:
ausführbare Programme
• Systemaufruf der exec-Familie: BS soll aktuellen
Prozess mit gegebenem Programm ersetzen
• Dazu muss BS Programmdatei öffnen und analysieren
➢ Möglichkeit 2: kompiliertes Programm (Linux: ELF Binary)
➢ Erste vier Bytes enthalten eine spezielle Bytefolge („magic“)
➢ Der Rest des Headers ist das „Inhaltsverzeichnis“:
▪ Beginn und Größe des Programmcodes („Text“), der
Daten, usw.
▪ Einstiegspunkt: nachdem das Programm vollständig
geladen wurde, an welcher virtuellen Adresse ist die
erste Instruktion?
➢ Es folgen die eigentlichen Programminhalte:
▪ Code („Text“)
▪ Daten
▪ Symboltabelle (sehr nützlich zum Debuggen)
▪ Liste von Funktionen, die aus anderen (zusätzlich zu
ladenden) Bibliotheken benutzt werden solle
Systemprogrammierung 6
Verzeichnisbaum
• Hierarchische Organisation von Verzeichnisen
➢ Sicherheit durch Zugriffsrechte und Benutzeridentifikation
➢ Komfort: jeder Benutzer hat alle Namen zur Verfügung
• Pfade
➢ Vollständige Dateispezifikation über Pfadangabe und Dateiname
➢ Absoluter Pfad: Weg vom Wurzel-Verzeichnis aus
➢ Relativer Pfad: Weg vom aktuellen (Arbeits-)Verzeichnis aus
➢ Spezielle Navigations-Symbole:
/
. aktuelles Verzeichnis
.. übergeordnetes Verzeichnis
bin home lib
~ Heimat-Verzeichnis des Nutzers
➢ Beispiele:
ls alice bob libc.so
/home/alice/foo.txt

../bob/foo.txt

~/foo.txt foo.txt foo.txt

Systemprogrammierung 7
Laufwerke (Windows) vs.
Mounting (Linux)
• Windows: jede Partition (die ein Dateisystem enthält) ist
als separates „Laufwerk“ sichtbar, das über einen
Laufwerksbuchstaben identifiziert wird
➢ Dateisystem mit Windows-Installation in der Regel „C:“
➢ Weitere Partitionen dann meist „E:“, „F:“, …
➢ Echte Laufwerke für Wechselmedien auch als Buchstabe
▪ Disketten-Laufwerke: „A:“, „B:“
▪ CD/DVD-Laufwerke: „D:“

➢ Absolute Pfade beginnen mit Laufwerksbezeichnung, z.B.


C:\Windows\system32\kernel32.dll
➢ Relative Pfade wie unter Linux (auch mit „..“):
..\..\Temp\temp.txt

Systemprogrammierung 8
Laufwerke (Windows) vs.
Mounting (Linux)
• Linux: alle Partitionen werden in eine einzige Verzeichnisstruktur
eingebunden
➢ Systempartition bildet die globale Wurzel
➢ Zusätzliche Partitionen können an ein leeres Träger-Verzeichnis
(„Mount point“) einer anderen Partition angedockt werden (gemountet)

mount P2 /home

P1 (system) P2 P1 (P2 unter /home) /


/ /
bin home lib

bin home lib alice bob


ls alice bob libc.so

ls libc.so foo.txt foo.txt

foo.txt foo.txt

Systemprogrammierung 9
UNIX Verweise (Links)
• Link = Verweis auf eine Datei in einem anderen Verzeichnis
 Dateien können in mehreren Verzeichnissen sichtbar sein
➢ Hard Link: beide Einträge verweisen auf denselben eindeutigen
Bezeichner im Dateisystem  kein Unterschied zwischen „Quelle“ und
„Ziel“ des Links
▪ Beim Löschen einer der beiden ist die Datei am anderen Ort noch
da
▪ Hard Links nur innerhalb eines Dateisystems möglich

➢ Soft Link (Symbolic Link): Link enthält den symbolischen Bezeichner


(also den Dateinamen) des Ziels
▪ Link definiert also nicht die Datei direkt, sondern ist eine
„Weiterleitung“
▪ Wenn Originaldatei gelöscht wird, ist der Link „dangling“ und kaputt
(und die Datei nicht mehr zugreifbar)
▪ Soft Links über den gesamten Verzeichnisbaum möglich, also auch
über Dateisysteme / Mount points hinweg

Systemprogrammierung 10
Physische Geometrie
und Adressierungsmodi
• Seit Einführung des IBM PC (1983) und Disketten: Tupel aus
Zylinder, Kopf und Sektor (CHS) identifiziert Position auf Medium
➢ Zylinder: Nummer des Rings
➢ Kopf: identifiziert die
Platte (die Leseköpfe
schweben zwischen
den rotierenden
Plattenscheiben)
➢ Sektor: ein Winkel-
bereich des Zylinders
auf der angegebenen
Platte (entspr. 512 Byte)
• Ablösung durch „Logische Blockadressierung“ (LBA): tatsächliche
Geometrie des Mediums wird verborgen, Blöcke werden mit einer
einzigen Nummer adressiert, Festplatten-Controller übersetzt
LBACHS
Systemprogrammierung 11
Partitionierung einer Festplatte
(MBR-Schema, 1983)
• Sektor 0 der Festplatte: MBR (Master Boot Record)
➢ 446 Bytes Boot-Code
➢ 4*16 Bytes: Partitionstabelle (Start/Ende-Adresse der Partitionen)
➢ 2 Bytes: „magic“
• Jede Partition enthält ein Dateisystem
➢ Bootblock: Code zum Laden des in dieser Partition installierten BS
➢ Superblock: Schlüsselparameter des Dateisystems („magic“ zur Typ-
Identifikation, Anzahl Blöcke, administrative Informationen)
➢ Liste der freien Blöcke
➢ Verwaltungsstrukturen für die existierenden Dateien und Verzeichnisse
➢ Eigentliche Daten

Partitionstabelle
MBR Partition 1 Partition 2 Partition n

Bootblock Superblock Freispeicher I-Nodes root Dateien und Verzeichnisse

Systemprogrammierung 12
Zusammenhängende Zuordnung
Dateien → Datenblöcke
• Einfachste Abbildung: Zusammenhängende Belegung
➢ Dateiblöcke gleicher Größe werden direkt hintereinander abgelegt

• Vorteile
➢ Dateizugriff mit maximaler Effizienz  Lesen einer Datei mit einer
kontinuierlichen Operation
➢ Direkter Zugriff auf einzelne Blöcke möglich
➢ Einfache Verwaltung, da lediglich die Länge und die Indexnummer des
ersten Datenblocks bekannt sein müssen

Systemprogrammierung 13
Zusammenhängende Zuordnung
Dateien → Datenblöcke (2)

• Nachteile
➢ Fragmentierung des
Datenträgers durch
Löschen/Anlegen von
Dateien unterschiedlicher
Länge
➢ Probleme, wenn mehrere
Dateien zum Schreiben
offen gehalten werden
müssen
 Nur in speziellen Fällen
brauchbar
• Wiederentdeckung durch
Beschreiben von CD-
ROMs / DVDs / Blu-Rays

Systemprogrammierung 14
Belegung durch verkettete Listen
(allgemeine Idee)
• Dateien können beliebig auf die Datenblöcke verteilt werden
• Zuordnung erfordert geeignete Datenstrukturen
➢ Interne Verkettung
➢ Externe Verkettung
➢ Indexblöcke
• Interne Verkettung ohne Verwaltungsdatenblöcke
➢ Startblock ist direkt im Dateiverzeichnis abgelegt
➢ Jeder Block verweist auf seinen Nachfolger
➢ Ausschließlich sequentielles Lesen möglich

Datei A

B A B B A A B
Block 0 Block 1 Block 1 Block 2 Block 0 Block 2 Block 3
0 1 2 3 4 5 6
Datei B
Systemprogrammierung 15
Belegung durch verkettete Listen:
Interne Verkettung
• Vorteile
➢ Keine externe Fragmentierung,
Größenvorgabe nicht nötig
➢ Einfaches Anlegen von Dateien
(Ein Verzeichniseintrag)
• Nachteile
➢ Teil des Blocks reserviert für
Zeiger  interne Fragmentierung
➢ Ineffizienter Zugriff: Auswertung
vorhergehender Blöcke beim
Zugriff notwendig
➢ Zuverlässigkeit: Dateiverlust
durch Zerstörung eines Blocks.
Doppeltverkettung vergrößert die
interne Fragmentierung
• Abhilfe: Gruppierung mehrerer
Blöcke in Cluster
Systemprogrammierung 16
Belegung durch verkettete Listen:
Externe Verkettung (Hilfstabelle)
• Einsatz bei MS-DOS: FAT = File Allocation Table
• Eigenschaften der Allokationstabelle Phys. Nächster
➢ Je eine Zeile pro Block des Datei- BlockNr. Datenblock
systems mit Verweis auf Adresse 0 2
des nächsten Blocks Anfang 1 5
➢ FAT wird an fest reservierter Stelle Datei B 2 3
einer Partition gehalten und laufend 3 6
aktualisiert Anfang
Datei A 4 1
➢ Startblock einer Datei wird im 5 7
Verzeichniseintrag abgelegt 6 NULL
➢ Dateiende durch NULL-Zeiger angezeigt („kein 7 NULL
Folgeblock“)
• Nachteile Ende
Ende
➢ Ineffizienter Zugriff, da bei jedem Zugriff ein Datei B
Lesevorgang in der FAT notwendig ist
Datei A
Sprung an Partitionsanfang
➢ Bei Fehler im FAT droht massiver Datenverlust; daher
redundant vorhanden
Systemprogrammierung 17
Belegung durch verkettete Listen:
Indexblöcke
• Zentrale Tabelle wie FAT ist Single Point of Failure und
skaliert nicht mit Größe der Festplatte

• Idee: Tabelle dezentralisieren  einzelne Tabelle („Index“)


für jede Datei
• Verzeichniseintrag verweist nicht auf ersten Datenblock,
sondern auf einen sogenannten Indexblock
➢ Indexblock: enthält Blockliste für diese Datei
(als Array, nicht verkettet – daher auch schneller Zugriff an
beliebige Positionen der Datei)
➢ Zerstörung des Indexblocks  Verlust nur dieser einen Datei

Systemprogrammierung 18
Indexblöcke:
Verschachtelung
• Problem: Indexblock hat nur Platz für begrenzte Zahl Einträge
• Wie organisiert man das Abspeichern größerer Dateien?
 Seitentabellen-Idee aufgreifen: Indexblöcke verschachteln!

• Idee: (dafür insgesamt weniger) Indizes im Haupt-Indexblock


verweisen auf weitere Indexblöcke anstatt auf Datenblöcke
• Implementierungs-Probleme: Wann wählt man die Tiefe? Wo wird
die festgehalten? Usw.
Indexblock (variabel verschachtelt)
Indexblock Indexblock (verschachtelt)
Datenblöcke

Systemprogrammierung 19
Indexblöcke: Diagramm
• Zugriffsschema bei Indexblöcken
➢ Lese den Indexblock
➢ Lese die i -te Zeile für den Zugriff
auf den i -ten Block aus
➢ Folge dem Zeiger zur Position des
Blocks
• Belegung eines ganzen Blocks für
Indexblock: ungünstig
➢ Übliche Blockgröße: 4kB
 Platz für 1024 (32-bit)-Indizes
➢ Für kleine Dateien: massive
Platzverschwendung!
➢ Maximale Dateigröße: nur
1024*4kB = 4MB!
➢ Wie speichern wir kleine Dateien
effizienter? Und wie speichern wir
größere Dateien überhaupt?
Systemprogrammierung 20
Inodes:
Beispiel (ext2/ext3-Dateisystem)

• Indexblöcke heißen
bei UNIX inodes (aus
„index nodes“)
• ext2/ext3:
Kombiniertes Schema
➢ Direct Blocks:
Datenblock-Indizes
➢ Single Indirect: (12)
Verweis auf Block,
der weitere Daten-
block-Indizes enthält
➢ Double Indirect: Zwei
Zwischenstufen
➢ Triple Indirect: …

Systemprogrammierung 21
Inodes:
ext4 Extents
• Inode-Struktur: Platz für 4 Extents (anstelle von 15 Block Indizes)
• Jede Extents-Struktur enthält eine Start-Dateiblocknummer, ab der sie
zuständig ist
➢ Entweder: Länge + Zugeordnete Start-Dateisystemblocknummer (DS)
➢ Oder: Verweis auf einen separaten Block mit weiteren Extents-
Einträgen, die den verwalteten Bereich weiter unterteilen
• Beispiele (mit 4 Extents und mit mehr als 4 Extents):
➢ Dateiblöcke 0-55  ab Dateisystemblock 1200
Dateiblöcke 56-1400  ab Dateisystemblock 9950
Dateiblöcke 1401-1410  ab Dateisystemblock 10
Dateiblock 1411  Dateisystemblock 9
0-39: ➔ DS ab: 1200
0-55: ➔ DS ab: 1200 ab 0: ➔ Extents-Block 40-52: ➔ DS ab: 9700
56-1400: ➔ DS ab: 9950 56-1400: ➔ DS ab: 9950 53-55: ➔ DS ab: 1253
1401-1410: ➔ DS ab: 10 1401-1410: ➔ DS ab: 10
1411-1411: ➔ DS ab: 9 1411-1411: ➔ DS ab: 9

Systemprogrammierung 22
Realisierung von Verzeichnissen
• Verzeichnisse müssen mindestens Namen und Referenz auf jedes
enthaltene Objekt (Datei, Unterverzeichnis, Link, …) enthalten
1. Einfache Organisation: Alle Meta-Informationen (Name, Typ, Größe,
Zugriffsrechte, …) werden direkt im Verzeichniseintrag gespeichert
 Verzeichnis ist Liste von Einträgen (z.B. MS-DOS)
2. Inode-basierte Verzeichnisse haben kürzere Einträge, die nur den
Dateinamen und die Nummer der jeweiligen Inode aufnehmen (UNIX)
• Merke: Inodes selbst sind namenlos! Der Name steht im
Verzeichnis, das die Datei (den Link, …) enthält!

1 Spiele Attribute 2 Spiele


Mails Attribute Mails Inode-
Strukturen
News Attribute News
Source Attribute Source

Systemprogrammierung 23
Verwaltung des Plattenspeichers
• Ausgangssituation: Fast alle Dateisysteme teilen die Dateien in Blöcke
fester Größe auf
• Wie groß soll ein solcher Block sein?
➢ Spuren, Sektoren, Zylinder  geräteabhängig, ungeeignet
➢ Kompromiss zwischen Zugriffsgeschwindigkeit und Fragmentierung
➢ Beispiel Datenrate/Platzbelegung als Funktion von der Blockgröße bei einer
mittleren Dateigröße von 1680 Bytes

Belegung des
Plattenplatzes
Datenrate (KByte/s)

Plattenbelegung
(Prozent)
Datenrate

Blockgröße (Byte)

Systemprogrammierung 24
Log-basierte Dateisysteme
• Aktuelle Situation
➢ CPU-Geschwindigkeit steigt sehr schnell an
➢ Vergrößerung der Kapazitäten von Speicher und Caches
➢ Festplatten werden immer größer, Geschwindigkeitszuwachs kann
jedoch mit dem CPU-Zuwachs nicht mithalten
 Bedeutung von Caches und Konsistenzproblemen wird immer größer

• Beispiel: Löschen einer Datei


1. Dateieintrag aus dem Verzeichnis entfernen
2. Inode der Datei freigeben (Inode als „frei“ markieren)
3. Von der Inode belegte Datenblöcke freigeben (DS-Freiliste updaten)

• Systemcrash zwischen Schritt 1 und 2?  „Orphaned Inode“


• Systemcrash zwischen Schritt 2 und 3?  vermisste Blocks

Systemprogrammierung 25
Zuverlässigkeit von
Dateisystemen: Konsistenz
• Konsistenzüberprüfung
➢ Vergleich der Daten in den Verzeichnissen mit den Datenblöcken auf der
Festplatte und ggf. Behebung der Inkonsistenzen
➢ Kritisch bei Inodes, Verzeichnisblöcken, Listen freier Segmente
➢ Realisierung mit Hilfsprogrammen wie scandisk, fsck, …
➢ Überprüfung von Dateien und Blöcken

• Vorgehensweise bei Blöcken


➢ Zwei Tabellen mit Zählern, wie häufig ein Block vorkommt in
▪ Einer Datei
▪ Der Liste mit freien Segmenten
➢ Auslesen aller Inodes und Überprüfung aller Blöcke
➢ Bei Konsistenz ist jeder Block in genau einer Tabelle

Vermisster Block Blocknummer


Konsistenter Zustand

Systemprogrammierung 26
Konsistenzüberprüfung (2)
• Was kann passieren?
➢ Vermisster Block: Speicherplatzverschwendung  Freiliste aktualisieren
➢ Datenblock doppelt als frei ausgewiesen  Freiliste aktualisieren
➢ Block kommt in zwei Dateien vor  kritischer Fall
▪ Wird eine Datei gelöscht, so wird der Block als frei gekennzeichnet
▪ Block wird kopiert  beide Dateien haben eigenen Block
▪ Meldung an Benutzer, da eine Datei evtl. durcheinander gebracht wurde

• Verzeichnisüberprüfung
➢ Analoger Zähler für Dateien statt Blocks
➢ Rekursive Untersuchung des Verzeichnisbaums und der Inodes
➢ Bei Konsistenz stimmen beide Zähler überein
➢ Fehler: Überflüssige („orphaned“) Inodes oder doppelte Einträge

Block zweimal frei Block in zwei Dateien Blocknummer

Systemprogrammierung 27
Log-basierte Dateisysteme (2)
• Entwicklung von log-basierten Dateisystemen (auch transaktions-
basierte oder Journaling Dateisysteme)
➢ Verwendung des Transaktionskonzepts und der Recoverymechanismen
• Grundidee:
➢ Dateisystem enthält einen abgeteilten Bereich: das „Logbuch“
➢ Logbuch = Ringpuffer mit den nächsten geplanten Operationen
➢ Wenn eine Operation ausgeführt werden soll:
1. Beschreibung der Operation ins Logbuch schreiben
2. Eine Prüfsumme der Beschreibung ans Logbuch anhängen
3. Cache der Festplatte leeren
4. Operation durchführen
5. Operation im Logbuch als vollständig abgeschlossen markieren
➢ Beim Hochfahren des Systems (womöglich nach Crash): Replay
(„Wiedereinspielen“) aller nicht abgeschlossenen Operationen im
Logbuch  „Ganz-oder-gar-nicht“-Prinzip!

Systemprogrammierung 28
Log-basierte Dateisysteme:
Stufen von Journaling
• Vollständig: Daten und Metadaten werden über das Journal
verarbeitet
➢ Vorteil: volle Konsistenz-Garantie
➢ Nachteil: alle Daten werden 2x ins Dateisystem geschrieben!
 große Leistungseinbußen bei Schreibvorgängen
• Metadata-Only: Inhalt von Datenblöcken wird nicht ins Journal
geschrieben
➢ Vorteil: deutlich erhöhte Performance (Daten werden nur 1x geschrieben)
➢ Nachteil: möglicher Datenverlust, selbst wenn die Metadaten dank Journal
konsistent bleiben
➢ Beispiel: Anhängen von Text an eine Datei
➢ Bei Absturz: neue Größe der Datei korrekt vom Journal replayed, aber neu
angehängte Inhalte nicht im Journal  verloren
• Journal muss nicht zwangsläufig Teil des DS sein
➢ Journal auf anderer Festplatte (z.B. SSD)
➢ Journal in batterie-gestütztem („battery-backed“) RAM
Systemprogrammierung 29
Disk quotas (Plattenkontingente)
• Maximal erlaubte Anzahl von Dateien und Blöcken, die ein
bestimmter Benutzer belegen kann
• Unterscheidung zwischen Soft- und Hardblocklimits bzw.
Dateilimits
➢ Soft limits: Überschreitung x Mal möglich, x a-priori definiert und
enthält die entsprechende Anzahl von Warnungen
▪ Benutzer dürfen ihre Kontingente kurzfristig überschreiten, vor dem
Abmelden werden jedoch die Daten wieder gelöscht
▪ Falls nicht, wird beim erneuten Anmelden überprüft, ob ein Softlimit
für die Anzahl Blöcke oder Dateien überschritten ist
▪ Falls ja  Warnmeldung und x = x - 1
▪ Ist x = 0  Keine weitere Anmeldung möglich
➢ Hard limits: keine Überschreitung, Speicherung endet mit Fehlermeldung
• Realisierung der Quotas mit zwei Tabellen
➢ Tabelle 1: Details der geöffneten Datei, Benutzer, Zeiger auf
Quotatabelle
➢ Tabelle 2: Belegung insgesamt, Angaben Soft/Hard limits, Anzahl
verbleibender Warnungen
Systemprogrammierung 30
Leistungsaspekte: Interaktion
Cache – Dateisystem – Treiber
• Beschleunigung durch Caching der zu schreibenden Blöcke
➢ Festplattentreiber sortiert die Schreibaufträge zur Optimierung der
Schreibvorgänge
• Strategien bei Schreiben gecachter Daten auf Festplatte
➢ Write through (Synchronous Write): Abschaltung des Caches
 Daten und Metainformationen werden sofort geschrieben
➢ Careful write: Verzögertes Schreiben
▪ Alle Schreiboperationen erfolgen spätestens nach einer
vorgegebenen Maximalverzögerung
▪ Inkonsistenzen beim Systemausfall möglich
➢ Lazy write: Änderungen werden zunächst nur im Cache
durchgeführt
▪ Zyklische Analyse des Speichermediums, z.B. alle 30 Sekunden
 nach Systemausfall gravierende Inkonsistenzen möglich
▪ Bei NTFS: Logdatei zur Rekonstruktion von Schreibvorgängen

Systemprogrammierung 31
Weitere Leistungsaspekte
• Vorauslesen von Blöcken
➢ Wird ein Block angefordert, so werden die darauf folgenden Blöcke
gleich mit ausgelesen  Blöcke sind im Cache, wenn sie gebraucht
werden
➢ Vorgehensweise vom großen Vorteil bei sequentiellen Dateien, aber
nachteilig bei wahlfreiem Zugriff (Bandbreitenverlust, unnötige
Cachebelegung)  Anpassung an aktuelles Verhalten notwendig
➢ Fragmentierung und Defragmentierung: Blöcke sollen hintereinander
liegen, damit sie in einem „Rutsch“ gelesen werden können
▪ liegen logisch zusammengehörende Blöcke verstreut über die
Platte, spricht man von Fragmentierung
▪ Durch Defragmentierung werden die Blöcke verschoben und
zusammengeführt
▪ Fragmentierung spielt bei SSDs keine Rolle

• Virtuelle Festplatten (RAM Disk)


➢ Ein Teil des Hauptspeichers wird als virtuelle Festplatte ausgewiesen
 schneller Schreib/Lesezugriff bei temporären Dateien
Systemprogrammierung 32
Backup
• Backup: Datensicherung auf redundante Speichermedien
• Restore: Wiederherstellung verlorener/veränderter Daten
anhand der Backup-Kopien nach
➢ Festplattencrash und anderen Katastrophen
➢ Datenverlust nach Fehlbedienung
• Unterscheidung: Vollständige und inkrementelle Sicherung
➢ Vollständige Sicherung: Alle Daten werden auf Backupmedium kopiert
➢ Inkrementelle Sicherung: Sicherung aller Daten, die sich seit der
letzten Sicherung geändert haben
➢ Üblich: Wöchentliche vollständige Sicherung (etwa Wochenende) und
tägliches inkrementelles Backup
➢ Sicherung eines Zyklus (etwa 3-4 Wochen) auf unterschiedlichen
Medien
➢ Von Zeit zu Zeit  Vollständige Sicherung, die nicht überschrieben
wird, d.h. ein bestimmter System- und Datenzustand wird konserviert
• Backupmedien sollen vor Gefahren wie Feuer, Wasserschäden,
Erdbeben, Raub, usw. geschützt werden
Systemprogrammierung 33
Backup (2)
• Physische Datensicherung
➢ Beginnend mit Block 0 werden alle Blöcke der Festplatte auf ein Band
geschrieben
➢ Überspringen freier Blöcke  Speicherung der Blocknummer
notwendig
➢ Zugriff auf Bitmap erforderlich, um defekte und daher ausgeblendete
Blöcke zu erkennen
➢ Vorteil: einfach und schnell
➢ Nachteil: keine Inkrementelle Sicherung möglich

• Logische Datensicherung
➢ Beginnend bei einem oder mehreren vorgegebenen Verzeichnissen
werden alle Unterverzeichnisse rekursiv durchlaufen und die darin
enthaltenen Dateien gesichert
➢ Auf dem Band werden sorgfältig identifizierte Dateien abgelegt 
Restauration gesicherter Dateien einfach
➢ Standardvorgehensweise bei den meisten Betriebssystemen

Systemprogrammierung 34
Backup (3): Sicherung eines
Beispieldateisystems
• Alle Verzeichnisse, die auf
einem Pfad zu einer
modifizierten Datei liegen,
werden gesichert, obwohl sie
selbst nicht verändert
wurden
➢ Wiederherstellung
modifizierter Dateien auf
einem frischen System durch
vollständigen Pfad möglich
➢ Restaurationsort, Besitzer,
Zugriffsmodi, Zeiten werden
korrekt hergestellt, obwohl
das Homeverzeichnis der
Datei gelöscht wurde

Systemprogrammierung 35
Backup (4): Sicherungsalgorithmus
in vier Phasen

• Rekursives Durchlaufen aller Verzeichnisse. Aufbau einer Bitmap, die


mit den Nummern der I-Nodes indiziert wird. Für jede modifizierte Datei
wird der entsprechende Eintrag markiert. Alle Verzeichnisse werden –
verändert oder nicht – markiert
• Erneuter rekursiver Durchlauf und Aufhebung der Markierung aller
Verzeichnisse, die keine modifizierten Dateien enthalten
• Nun ist es bekannt, welche Verzeichnisse und Dateien gesichert werden
müssen  Erweiterung der Verzeichnisse um Attribute und Sicherung
• Analog für Dateien: Erweiterung um Attribute und Sicherung
Systemprogrammierung 36

Das könnte Ihnen auch gefallen