6 – Betriebssysteme

Prozessverwaltung, Speicherverwaltung, Dateiverwaltung

Lessons Learned

In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können

  • Allgemeines Konzept von Betriebssystemen

    • Aufgaben von Betriebssystemen
  • Prozessverwaltung

  • Speicherverwaltung

  • Dateiverwaltung

Aufbau

Aufbau

Anforderungen

Wünsche an ein Betriebssystem

Erwartungen

Arten von Betriebssystemen

Gliederung

Aufgaben eines Betriebssystems

Betriebsmittel

Betriebsmittel sind …

  • Aktive, zeitlich aufteilbare
  • Passive, nur exklusiv nutzbare
  • Passive, räumlich aufteilbare

Betriebsmittelverwaltung

Die Betriebsmittelverwaltung besteht im wesentlich aus der …

  • Prozessverwaltung (Verwaltung der CPU)
    • Starten und Beenden von Prozessen
    • Wechsel zwischen Prozessen
  • Speicherverwaltung
    • Zuteilung von Speicher auf die laufenden Prozesse
  • Geräte und Dateiverwaltung
    • Effiziente Zuweisung von Ein-/Ausgabegeräten und Vermittlungs-einheiten (Datenkanäle, Steuereinheiten), Vermeidung von Konflikten
    • Initiierung, Überwachung der Ausführung, Terminierung von Ein-/Ausgabevorgängen.
    • Verwaltung des Dateisystems. Erzeugung eines Namensraums mit zugehörigen Speicherobjekten und gegebenenfalls weiteren Objekten

Abstraktion

Üblicherweise gehört auch das Abstrahieren der verwendeten Technik in vermeidlich “einfachere” Konzepte zu den Aufgaben eines Betriebsystems. Darunter versteht man:

Verbergen der Komplexität der Maschine vor dem Anwender

  • Abstraktion des Maschinenbegriffes (nach Coy):
    • Reale Maschine = Zentraleinheit + Geräte (Hardware)
    • Abstrakte Maschine = Reale Maschine + Betriebssystem
    • Benutzermaschine = Abstrakte Maschine + Anwendungsprogramm

6.1 - Prozessverwaltung

Eigenschaften eines Prozesses, Scheduling

Lessons Learned

In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können

  • Prozesszustände
  • Scheduling / Schedulingstrategien

Prozesse / Prozessverwaltung

Ein Prozess …

  • … ist die Abstraktion eines sich in Ausführung befindlichen Programms
    • Ein Prozess besteht aus den Programmbefehlen und dem Prozesskontext
    • Der Prozesskontext besteht aus dem privaten Adressraum des Programms, geöffneten Streams (Dateien, Sockets, …) und abhängigen Prozessen
  • … wird über die Prozessverwaltung gesteuert
    • Die Prozessverwaltung steuert die Zuteilung von Betriebsmitteln an den Prozess
      • CPU
      • Speicher
      • Ein- und Ausgabegeräte

Multitasking

Der Prozessor kann zwischen mehreren Prozessen hin und her geschaltet werden

  • Im Allgemeinen wird sogenanntes preemptives Multitasking verwendet
    • Das Betriebssystem entscheidet, wann welcher Prozess zur Ausführung kommt
    • Jeder Prozess wird für einige Millisekunden (Zeitscheibe, timeslice) ausgeführt
    • Der Benutzer erhält dadurch den Eindruck von Parallelität

slicing

Prozesszusammenhang

Prozesszusammenhang

Kooperatives Multitasking

Im Gegensatz zum preemptiven Multitasking bestimmt ein Prozess selbst, wann er den Prozessor an andere Prozesse abgibt

  • Nachteile
    • Ein einzelner Prozess kann bei bestimmten Fehlern, z.B. Endlosschleifen, das gesamte System zum Absturz bringen
    • Selbst das Betriebssystem kann nicht mehr rechnen, wenn ein Prozess den Prozessor nicht wieder freigibt

Kooperativ

Preemptiv

Prozesszustände

Ein Prozess kann sich in folgenden Zuständen befinden

  • Rechnend:Der Prozessor ist dem Prozess zugeteilt
  • Blockiert:Der Prozess kann nicht ausgeführt werden, bis ein externes Ereignis auftritt
  • Rechenbereit: Der Prozess ist ausführbar, aber der Prozessor ist einem anderen Prozess zugeteilt

Prozesszustände

Der Prozessscheduler organisiert die Übergänge der Prozesse zwischen den einzelnen Zuständen

  1. Der Prozess wartet, z.B. auf Eingabe des Benutzers
  2. Die Zeitscheibe des Prozesses ist abgelaufen oder ein höher priorisierter Prozess muss ausgeführt werden
  3. Der Prozess bekommt eine neue Zeitscheibe zugeteilt
  4. Das Ereignis, auf welches ein Prozess nach 1. gewartet hat, ist eingetreten

Scheduling

Ein guter Scheduling-Algorithmus muss einige Anforderungen erfüllen

  • Fairness: Jeder Prozess erhält einen gerechten Anteil der CPU-Zeit
  • Effizienz: Die CPU und andere Ressourcen sind möglichst ausgelastet
  • Einhaltung der Systemregeln

Weitere Anforderungen hängen vom Einsatzgebiet ab

  • Stapelverarbeitungssysteme
  • Dialogsysteme
  • Echtzeitsysteme

Scheduling auf Stapelverarbeitungssystemen

Zusätzlich Anforderungen an den Scheduler auf einem Stapelverarbeitungssystem

  • Möglichst hohe CPU-Auslastung
    • Es sollte nicht vorkommen, dass die CPU Leertakte hat
  • Job-Durchsatz
    • Die Anzahl der bearbeiteten Aufgaben pro Zeiteinheit sollte maximal sein
  • Minimale Durchlaufzeit
    • Die Zeit, welche ein Job von Ankunft in der Job-Queue bis zur Fertigstellung des Jobs benötigt, sollte minimal sein

Scheduling auf Dialogsystemen

Zusätzlich Anforderungen an den Scheduler auf einem Dialogsystem

  • Kurze Antwortzeiten
    • Der Benutzer sollte nicht das Gefühl haben, auf Reaktionen des Systems, z.B. auf Mausklicks oder Tastatureingaben, warten zu müssen
    • Prozesse, die Interaktion mit dem Benutzer erfordern, sollten vor anderen Prozessen bevorzugt werden
  • Proportionalität
    • Die Antwortzeit verschiedener Prozesse sollte mit der Benutzererwartung übereinstimmen
    • Aus Benutzersicht „einfache“ Aufgaben sollten schneller erledigt werden, als aus Benutzersicht „schwierige“ Aufgaben

Scheduling auf Echtzeitsystemen

Zusätzlich Anforderungen an den Scheduler auf einem Echtzeitsystem

  • Einhaltung von Zeitfenstern
    • Der Scheduler muss einen Überblick über die Zeitfensterb verschiedener Prozesse haben und diesen entsprechend Rechenzeit zuweisen
  • Vorhersagbarkeit
    • Das System muss deterministisch agieren / reagieren

Ideen für Scheduling

First Come, First Serve

Die Prozesse werden nach der Reihenfolge ihres Einfügens in die Job-Queue eines Stapelverarbeitungssystems bearbeitet

  • Die Zuteilung des Prozessors an andere Prozesse findet nur statt, wenn ein laufender Prozess zu warten beginnt oder sich beendet
  • Jeder Prozess kommt garantiert an die Reihe
  • Kurze Prozesse müssen unter Umständen sehr lange warten, bis sie ausgeführt werden
    • Unverhältnismäßig langes Warten auf das Ergebnis

Bsp FCFS

Shortest Job First

Die Prozesse werden aufsteigend nach ihrer geschätzten Ausführungszeit bearbeitet

  • Große Prozesse kommen möglicherweise nie an die Reihe, wenn immer wieder kleinere Prozesse in die Job-Queue eingefügt werden
  • Die Wartezeit auf das Ergebnis eines Prozesses verhält sich in etwa proportional zur Ausführungszeit des Prozesses

Bsp SJF

Beispiel: FCFS vs. SJF

Gegeben sind 4 Prozesse mit den folgenden Ausführungszeiten

  • Prozess A: 6 Sekunden
  • Prozess B: 10 Sekunden
  • Prozess C: 2 Sekunden
  • Prozess D: 2 Sekunden

FCFS vs. SJF

Beispiel: FCFS vs. SJF

FCFS vs. SJF

  • First Come, First Serve: $ \frac{6+16+18+20}{4}= 15 sec $
  • Shortest Job First: $ \frac{2+4+10+20}{4}= 9 sec $

Prioritätsscheduling auf Dialogsystemen

Jedem laufenden Prozess wird eine Priorität zugewiesen

  • Zuweisung der Priorität wird vom Betriebssystem gesteuert
    • Es gibt dynamische und statische Zuweisung
  • Es wird immer dem Prozess mit der höchsten Priorität eine Zeitscheibe zugeteilt
  • Neu hinzukommende Prozesse hoher Priorität verdrängen rechnende Prozesse niedriger Priorität
    • Auch der Übergang nach Rechenbereit eines hoch priorisierten Prozesses verdrängt niedrig priorisierte Prozesse

Statische vs. Dynamische Priorität

  • Statische Priorität
    • Jeder Prozess erhält bei seinem Start eine feste Priorität
    • Der Prozess mit der höchsten Priorität bekommt als nächstes eine Zeitscheibe zugeteilt
      • Gibt es mehrere Prozesse mit der gleichen Priorität werden diese im Round-Robin-Verfahren bearbeitet
    • Wird oft in Echtzeitsystemen verwendet
  • Dynamische Priorität
    • Jedem Prozess wird eine Anfangspriorität zugeordnet
    • Der Prozess mit der höchsten Priorität bekommt als nächstes eine Zeitscheibe zugeteilt
      • Die Prioritäten der Prozesse werden dynamisch geändert
      • Es gibt verschiedene Verfahren der Realisierung

Multilevel-Feedback-Queue

Die MFQ ist ein Beispiel für dynamische Prioritätszuweisung

  • Die Prozesse werden anhand ihres bisherigen Ressourcenverbrauchs priorisiert
  • Es werden mehrere FIFO-Queues benutzt
    • Neue Prozesse werden in der höchst priorisierten Queue eingefügt
  • Prioritäten werden abhängig vom Verhalten des Prozesses geändert
    • Der Prozess gibt den Prozessor freiwillig ab
      • Der Prozess wird in dieselbe Queue wieder eingefügt
    • Der Prozess verbraucht seine gesamte Zeitscheibe
    • Der Prozess wird in der nächst niedriger priorisierten Queue wieder eingefügt )

6.2 – Speicherverwaltung

Reale Speicherverwaltung, Virtuelle Speicherverwaltung

Lessons Learned

In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können

  • Reale Speicherverwaltung
  • Virtuelle Speicherverwaltung
    • Grundidee
    • Verdrängungsmechanismen

Reale Speicherverwaltung

Der Arbeitsspeicher wird aus den Prozessen heraus direkt adressiert

  • Die Größe des physikalischen Speichers begrenzt die Anzahl der gleichzeitig ausführbaren Prozessen
    • Nutzung von Swapping, um mehr Prozesse „parallel“ betreiben zu können
  • Probleme realer Speicherverwaltung
    • Fragmentierung des Speichers
    • Suche nach freien Speicherblöcken mittels Belegungstabelle sehr aufwändig

Fragmentierung des Speichers

Beim Ersetzen von Speicherblöcken können viele kleine, freie Bereiche im Speicher entstehen

  • Neue Prozesse finden keine ausreichend großen, zusammenhängenden Bereiche mehr

Beispiel

Reale Speicherverwaltung

Beim Starten eines Prozesses wird dieser in einen freien Speicherblock geladen

  • First Fit
    • Wählt den ersten, freien Speicherbereich, welcher groß genug ist
    • Diese Variante ist schnell, verschwendet aber möglicherweise große, freie Blöcke an kleine Prozesse
  • Next Fit
    • Funktioniert wie First Fit, startet aber nicht am Anfang des Speichers, sondern an der Stelle, wo der letzte Prozess eingefügt wurde
  • Best Fit
    • Wählt den kleinstmöglichen, freien Speicherbereich
    • Verteilt Speicher gut, aber die Suche nach freien Speicherblöcken ist sehr aufwändig

Reale Speicherverwaltung

Nachteile reale Speicherverwaltung

  • Nutzung des Speicherplatzes
    • Es muss Platz für das gesamte Programm und die Daten gefunden werden, obwohl diese wahrscheinlich nicht alle gleichzeitig benötigt werden
  • Beschränkung des Speicherplatzes
    • Es kann insgesamt nicht mehr Speicher genutzt werden, als physikalisch vorhanden ist
  • Belegung des Speichers
    • Die Anforderung zusammenhängende Speicherblöcke für Prozesse zu finden, verschärft das Problem der Fragmentierung

Nach einer kurzen Pause geht‘s weiter!

Quelle https://www.youtube.com/watch?time_continue=2&v=6Y0ahMQOLyg

Virtuelle Speicherverwaltung

Virtuelle Speicherverwaltung behebt die Nachteile realer Speicherverwaltung

  • Jedem Prozess wird ein scheinbar zusammenhängender Speicherbereich zur Verfügung gestellt
    • Tatsächlich besteht der Speicher des Prozesses aus nicht zwangsläufig zusammenhängenden virtuellen Pages
    • Der Prozess kann seinen Speicher mit virtuellen Adressen beginnend bei 0 adressieren
  • Die Gesamtheit aller virtuellen Adressen wir als virtueller Adressraum bezeichnet

Virtuelle Pages

Quelle: http://de.wikipedia.org/wiki/Virtuelle_Speicherverwaltung

Virtuelle Pages

Virtuelle Pages werden rechnerintern auf physikalisch vorhandene Pages gleicher Größe abgebildet

  • Die physikalischen Pages können irgendwo im Arbeitsspeicher oder in einer Auslagerungsdatei auf der Festplatte liegen
  • Beim Zugriff eines Prozesses auf eine virtuelle Speicheradresse
    • … wird zunächst die zu dieser Adresse gehörige virtuelle Page ermittelt
    • Anschließend wird die zu dieser virtuellen Page gehörige physikalische Page ermittelt
      • Die Zuordnung von virtuellen und physikalischen Pages und deren Ablageort (Basisadresse) werden in der sogenannten Pagetable gespeichert
    • Die relative Speicheradresse (Offset) ist innerhalb einer Page in virtuellen und physikalischen Pages dieselbe

Virtuelle Pages

Berechnung der physikalischen Speicheradresse

Virtuelle Pages

Berechnung der physikalischen Speicheradresse:

  • Beispiel Adresslänge 16 Bit, 8 Bit Offset (low) und 8 Bit Seitennummer (high)

Seitentabelle:

Eintrag Gültig Seitenrahmen
00 Nein -
01 Ja 0x17
02 Ja 0x20
03 Ja 0x08
04 Nein -
05 Ja 0x10

Zu übersetzen:

virtuelle Adresse physikalische Adresse
0x083A ungültig (Seite 8 ex. nicht)
0x01FF 0x17FF (Seite 1, Rahmen 0x17)
0x0505 0x1005 (Seite 5, Rahmen 0x10)
0x043A ungültig (Seite 4 ungültig)

Paging on Demand

Zu einem Prozess gehörige, jedoch aktuell nicht genutzte Pages, werden auf den Hintergrundspeicher, z.B. Festplatte, ausgelagert

  • Es wird Arbeitsspeicher für andere Prozesse freigegeben
  • Braucht der Prozess die Page zu einem späteren Zeitpunkt wieder, muss sie erneut in den Arbeitsspeicher geladen werden
    • Es muss eventuell eine andere Page aus dem Arbeitsspeicher verdrängt werden
    • Es gibt mehrere Möglichkeiten zu bestimmen, welche Page aus dem Arbeitsspeicher verdrängt wird

Verdrängungsstrategien

Ähnlich wie beim Caching gibt es auch hier verschiedene Verdrängungsstrategien

  • FIFO (First-In, First-Out)
    • Die Page, welche bereits am längsten im Speicher liegt, wird verdrängt
  • LRU / LFU (least recently / frequently used)
    • Die Page welche am längste nicht mehr bzw. am seltensten zugegriffen wurde, wird verdrängt
  • Unversehrtheit der Speicherseite
    • Es werden Pages ausgelagert, die sich im Arbeitsspeicher nicht geändert haben, sodass Schreiboperationen auf die Festplatte entfallen

Verdrängungsstrategien

FIFO-Strategie

  • Seitenanforderungen: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Referenzfolge 1 2 3 4 1 2 5 1 2 3 4 5
Arbeitsspeicher Page 1 1 1 1 4 4 4 5 5 5 5 5 5
Page 2 2 2 2 1 1 1 1 1 3 3 3
Page 3 3 3 3 2 2 2 2 2 4 4
Kontrollzustand Page 1 0 1 2 0 1 2 0 1 2 3 4 5
Page 2 - 0 1 2 0 1 2 3 4 0 1 2
Page 3 - - 0 1 2 0 1 2 3 4 0 1

Anzahl Einlagerungen: 9

Verdrängungsstrategien

LRU-Strategie

  • Seitenanforderungen: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Referenzfolge 1 2 3 4 1 2 5 1 2 3 4 5
Arbeitsspeicher Page 1 1 1 1 4 4 4 5 5 5 3 3 3
Page 2 2 2 2 1 1 1 1 1 1 4 4
Page 3 3 3 3 2 2 2 2 2 2 5
Kontrollzustand Page 1 0 1 2 0 1 2 0 1 2 0 1 2
Page 2 - 0 1 2 0 1 2 0 1 2 0 1
Page 3 - - 0 1 2 0 1 2 0 1 2 0

Anzahl Einlagerungen: 10

Verdrängungsstrategien

„Future“-Strategie

  • Seitenanforderungen: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Referenzfolge 1 2 3 4 1 2 5 1 2 3 4 5
Arbeitsspeicher Page 1 1 1 1 1 1 1 1 1 1 3 4 4
Page 2 2 2 2 2 2 2 2 2 2 2 2
Page 3 3 4 4 4 5 5 5 5 5 5
Kontrollzustand Page 1 4 3 2 1 3 2 1 - - - - -
Page 2 - 4 3 2 1 3 2 1 - - - -
Page 3 - - 7 7 6 5 5 4 3 2 1 -

Anzahl Einlagerungen: 7

Verdrängungsstrategien

Übung - Strategie: FIFO

  • Seitenanforderungen: 1, 4, 2, 5, 3, 2, 1, 4, 2, 5
Referenzfolge 1 4 2 5 3 2 1 4 2 5
Arbeitsspeicher Page 1
Page 2
Page 3
Kontrollzustand Page 1
Page 2
Page 3

Anzahl Einlagerungen:

Verdrängungsstrategien

Übung - Strategie: FIFO

  • Seitenanforderungen: 1, 4, 2, 5, 3, 2, 1, 4, 2, 5
Referenzfolge 1 4 2 5 3 2 1 4 2 5
Arbeitsspeicher Page 1 1 1 1 5 5 5 5 4 4 4
Page 2 - 4 4 4 3 3 3 3 2 2
Page 3 - - 2 2 2 2 1 1 1 5
Kontrollzustand Page 1 0 1 2 0 1 2 3 0 1 2
Page 2 - 0 1 2 0 1 2 3 0 1
Page 3 - - 0 1 2 3 0 1 2 0

Anzahl Einlagerungen: 9

Pageflattering

Wenn einem Prozess nicht genügend Pages zur Verfügung stehen, kann es passieren, dass sehr oft Pages nachgeladen / ersetzt werden müssen

Der Prozess verbringt mehr Zeit mit dem Warten auf den Speicher, als mit der eigentlichen Ausführung:

  • Ursachen:
    • Prozesse ohne Lokalität: Random Access auf große Speicherbereiche
    • Zu viele Prozesse
    • Schlechte Ersetzungsstrategie
  • Lösung:
    • Zuteilung einer genügend großen Anzahl von Pages
    • Begrenzung der Prozessanzahl
    • Codeoptimierung, sodass der Prozess lokaler arbeitet

Lokale vs. Globale Ersetzung

Es gibt zwei mögliche Varianten Pages zu ersetzen

  • Lokale Ersetzung
    • Ein Prozess ersetzt immer nur seine eigenen Pages
      • Statische Zuteilung von Pages an Prozesse
      • Nachladen / Ersetzen von Pages liegt in der Verantwortung der Prozesse
  • Globale Ersetzung
    • Ein Prozess ersetzt auch Pages anderer Prozesse
      • Dynamisches Verhalten der Prozesse kann berücksichtigt werden
      • Im Schnitt bessere Effizienz, da ungenutzte Pages von anderen Prozessen verwendet werden können

Prozesse und Speicher

Virtuelle Speicherverwaltung sorgt implizit dafür, dass mehrere Prozesse nicht gegenseitig auf ihre Speicherbereiche zugreifen können

  • Versucht ein Prozess auf eine Adresse zuzugreifen, für welche er selbst keinen Speicher allokiert hat, wird die dazugehörige Page nicht gefunden
    • Es tritt ein Segmentation Fault auf
  • Gezielt auf den Speicher anderer Prozesse kann nicht zugegriffen werden, da erst bei der Umsetzung der virtuellen Adresse der physikalische Speicher referenziert wird

Speicherbereinigung

Wird in einem Prozess Speicher dynamisch zur Laufzeit allokiert, muss dieser auch irgendwann wieder freigegeben werden

  • Wird der Speicher nicht freigegeben, steht dem Prozess irgendwann kein Speicher mehr zur Verfügung
  • Der Prozess kann dies selbst tun
    • z.B. in C/C++ mit free() oder delete()
    • Volle Kontrolle über belegten Speicher, aber kompliziert
  • Es kann eine automatische Speicherbereinigung (engl. Garbage Collection) verwendet werden
    • z.B. in JAVA
    • Ist bequem, entzieht dem Programmierer aber die Kontrolle über den Speicher

Speicherbereinigung

Vorteile der Speicherbereinigung

  • Einige Programmierfehler im Umgang mit Speicher(De-)Allokation können vermieden werden
    • Doppelte Freigabe von Speicher
    • Zugriff auf bereits freigegebene Objekte
  • Das Programm läuft möglicherweise schneller, da Speicher gezielt und gesammelt freigegeben werden kann

Speicherbereinigung

Nachteile der Speicherbereinigung

  • Der Zeitpunkt der Garbage Collection ist nicht deterministisch und hängt von diversen Faktoren ab
    • z.B. Belegung des Speichers
    • Der Algorithmus zur Berechnung des Startzeitpunkts variiert von Plattform zu Plattform (z.B. von C# von JAVA)
  • Aufgrund des non-Determinismus ist eine Garbage Collection nicht ohne Weiteres für Echtzeitsysteme geeignet

6.3 - Dateisysteme

Grundlegende Organisation, Beispiele

Lessons Learned

In diesem Kapitel geht es darum, folgende Dinge zu verstehen und zu können

  • Startsequenz eines Rechners
  • Ablageorganisation für Daten
  • Attribute
  • Sicherheitsaspekte
    • paralleler Zugriff
    • Stromausfall kompensieren

BIOS (Basic Input / Output System)

Das BIOS (altgriechisch „βίος“, zu deutsch „Leben “) …

  • … ist die Firmware bei x86-PCs
  • … liegt im nichtflüchtigen Speicher auf der Hauptplatine eines PCs
  • … leitet den Start des Betriebssystems ein.
    • Power-On Selbsttest → alle Komponenten funktionsfähig?
    • Hardwareinitialisierung → Netzwerkchip, Tastatur, Maus, …
    • BIOS-Passwort, HDD-Passwort (sofern vorhanden)
    • Darstellung Startbildschirm
    • Bootsektor → Bootloader
  • Hersteller: American Megatrends, ATI, Phoenix/Award, IBM, …

BIOS → UEFI

UEFI ist die zentrale Schnittstelle zwischen…

  • … der Firmware, …
  • … den einzelnen Komponenten eines Rechners …
  • … und dem Betriebssystem
    • Fokus auf 64-Bit Betriebssystemen
    • Secure-Boot

MBR (Master Boot Record)

Der MBR ist der erste Sektor eines bootbaren Speichermediums
und enthält…

  • … (optional) einen Bootloader
    • 440 Byte Code + 6 Byte Zusatzinformationen
  • … eine Partitionstabelle
    • maximal 4 Partitioneneinträge zu je 16 Byte
  • … eine Magic Number
    • Wert: 0xAA55

MBR → GPT

Dateisysteme - Allgemeines

Das Dateisystem stellt eine Ablageorganisation für Daten auf einem Datenträger des Computers (z.B. der Festplatte) dar

  • Dateien müssen geöffnet (lesend, schreibend) und wieder geschlossen werden können
  • Dateinamen müssen auf die physikalischen Adressen auf dem Datenträger gemapped werden
  • Spezielle Eigenschaften des Datenträgers (Festplatte vs. USB-Stick vs. …) müssen berücksichtigt werden

Dateien

Abhängig vom verwendeten Dateisystem haben Dateien unterschiedliche Attribute

  • Generell haben Dateien folgende Attribute
    • Dateiname
    • Ablageort (Ordner, Verzeichnis)
    • Größe
    • Zugriffsrechte

Arten von Dateisystemen

Es gibt verschiedene Arten von Dateisystemen

  • Lineare Dateisysteme
    • Daten werden direkt hintereinander auf den Datenträger geschrieben
    • Verwendung auf Lochkarten, Lochstreifen, Magnetbändern, …
  • Hierarchische Dateisysteme
    • Daten werden in einer Verzeichnisstruktur abgelegt
    • Verwendung auf modernen Datenträgern (Festplatte, SSD, USB-Stick, …)
  • Netzwerkdateisysteme
    • Speicher auf Servern wird intern wie ein lokales Dateisystem verwendet, das Betriebssystem wandelt Zugriffe auf Dateien in Netzwerk-kommunikation um
    • Verwendung auf modernen Systemen

Vergleich mehrerer Dateisysteme

Interessante Features von Dateisystemen:

    • Clusterfähig
    • Deduplicating
    • Snapshots
    • Verlinkbarkeit
    • Zugriffsrechte

Hierarchische Dateisysteme

Ausgehend vom sog. Wurzelverzeichnis werden Verzeichnisse und Dateien hierarchisch organisiert

Hierarchische Dateisysteme

Sicherheitsaspekte

Dateisysteme müssen Mechanismen zur Behandlung bestimmter Situationen bereitstellen

  • Paralleler Zugriff im Multitasking
    • Bereitstellung von Locks für den Dateizugriff
    • Locks können für die gesamte Datei oder nur bestimmte Bereiche (z.B. bei Datenbanksystemen) genutzt werden
  • Stromausfall während einer Schreiboperation
    • Es muss Datenkonsistenz gewährleistet werden
    • Atomare Operationen, welche entweder abgeschlossen oder ausstehend sind
      • Journaling-Dateisysteme

Journaling Dateisysteme

Alle Aktionen auf der Festplatte werden protokolliert und erst als gültig angesehen, nachdem das Beenden einer Aktion im Protokoll (Journal) vermerkt wurde

  • Man unterscheidet zwischen Metadaten- und Full-Journaling
    • Bei Metadaten-Journaling wird nur die Konsistenz des Dateisystems als solches gewährleistet
    • Bei Full-Journaling wird zusätzlich die Konsistenz von Dateiinhalten gewährleistet
  • Ein Journaling-Dateisystem arbeitet ähnlich, wie die Transaktionskontrolle eines Datenbankmanagementsystems

Journaling Dateisysteme – Beispiel

Eine Datei soll in ein anderes Verzeichnis verschoben werden

  1. Entferne den Eintrag der Datei aus dem Quellverzeichnis
  2. Füge den Eintrag der Datei dem Zielverzeichnis hinzu
  • Beide Schritte werden zunächst nur im Journal vermerkt und nicht direkt ausgeführt
    • Erst wenn ein Schritt auf dem Dateisystem vollständig korrekt vorgenommen wurde, wird der zugehörige Eintrag aus dem Journal gelöscht bzw. als erledigt markiert
  • Stürzt das System z.B. durch einen Stromausfall, während der Änderungen am Dateisystem ab, können die Änderungen aus dem Journal erneut auf die Festplatte geschrieben werden
    • Eventuell vor dem Absturz schon vorgenommene, aber nicht bestätigte Änderungen, werden überschrieben

FAT32 – File Allocation Table

NTFS – New Technology File System

Vergleich mehrerer Dateisysteme

ReFS Ext4 ZFS
Größe einer Datei 16 EiB – 1 Byte Größe des Dateisystems 16 EiB
Anzahl aller Dateien 264 248
Länge des Dateinamens 255 Unicodezeichen 255 Bytes
Größe des Dateisystems 4 ZiB 1 EiB 256 ZiB
Hauptsächlich genutzt bei…

Rechteverwaltung

Rechteverwaltung wird auf Multiuser-Systemen benötigt

  • Dateien können z.B. für alle einsehbar (Lesezugriff), aber nur für den Systemadministrator änderbar (Schreibzugriff) gekennzeichnet werden
  • Rechteverwaltung unter Windows relativ „neues“ Konzept
    • Unter Windowssystemen erst ab NTFS als Dateisystem möglich

Rechteverwaltung unter Unix

user1@computer:~$ ls -la
insgesamt 76
drwxr-xr-x 15 user1 user1 4096 Aug 29 15:25 .
drwxr-xr-x  6 root  root  4096 Aug 29 15:24 ..
-rw-r--r--  1 user1 user1 3771 Aug 29 15:24 .bashrc
drwxr-xr-x  2 user1 user1 4096 Aug 29 15:24 Bilder
drwx------ 14 user1 user1 4096 Aug 29 15:25 .cache
drwx------ 12 user1 user1 4096 Aug 29 15:25 .config
drwxr-xr-x  2 user1 user1 4096 Aug 29 15:24 Dokumente
drwxr-xr-x  2 user1 user1 4096 Aug 29 15:24 Downloads
drwx------  3 user1 user1 4096 Aug 29 15:24 .local
...

Rechteverwaltung unter Unix

Rechte Besitzer Gruppe Dateigröße Änderungsdatum Name
drwxr-xr-x 2 user1 user1 4096 Aug 29 15:24 Bilder
  • Das d am Anfang gibt an ob es sich um ein Verzeichniss handelt (anderfalls Datei)
  • Rechte sind aufgeteilt in 3 Blöcke mit jeweils **r**ead, **write und ex**ecute
  • Das x-Recht bei Verzeichnissen heisst traversieren (durchqueren)
  • Die Blöcke stehen für Rechte des …
    • Besitzers (rwx)
    • der zugeordneten Gruppe (r-x)
    • alle Anderen Benutzer (r-x)

6.4 - Bekannte Betriebssysteme

Windows, Linux, Mac OSX…

Disk Operating System

Windows Zeitleiste

Windows 3.1

Windows 98

Windows NT 4.0

Windows XP

Windows 7

Windows 8

Windows 10

Windows im Wandel der Zeit…

Quelle: https://www.youtube.com/watch?v=hUc69YdiQ4c

Windows im Wandel der Zeit…

Quelle: https://www.youtube.com/watch?v=mpcliHKybZw

Werbung bringt nicht allzuviel…

Quelle: https://www.youtube.com/watch?v=Uh64nPT7JWk&start=94

Ubuntu Linux

Linux wird beliebter

Quelle: https://youtu.be/Co6FePZoNgE?t=58

Ubuntu – References in pop culture

Quelle: https://www.youtube.com/watch?v=t5Ye-yPYTJY

Mac OS X

iOS

Android