Betriebsysteme

Einführung

Aufgabe eines Betriebssystems

Das Betriebssystem soll den Anwender den Zugriff auf die Hardware abstrahieren. Sprich es verwaltet die Betriebsmittel.

Betriebsmittel

Virtuelle Betriebsmittel
virt. Hauptspeicher, virt. Drucker, virt. Prozessoren
Reale Betriebsmittel
jedgliche Hardware, I/O Devices, Speicher, etc

Von-Neumann Architektur

Klassicher Aufbau einer CPU, nur ein Bus System welches zum Flaschenhals werden kann.

Harvard Architektur

Aufbau einer Grafikkarte (GPU) hat den Vorteil, dass sehr schnell viele Daten verarbeitet werden können. Mining, Passwort cracking

Monolitischer Kernel

Alles läuft im Kernel Space. Bis auf die Anwendungen. Nachteile sind dass, das ganze System abstürzt wenn im Kernel etwas crashed.

Vorteile: Performance

Micro Kernel

Nur das minimal Notwendige wird im Kernel Space ausgeführt und soviel wie möglich im Userspace.

Vorteile: Der Vorteil ist eine hohe Stabilität.

Nachteile: Vergleichsweise schlechte Performance.

Hybrid Kernel

Hybrid Kernel sind ein Mix aus Monolith und Micro. Dabei werden Teile im jeweils sinnvollen Teil geladen.

Performance relevante -> Kernel Space (Treiber)

Alles Andere -> User Space

Ein-/Ausgabe

Zwei Adressen
gleiche Adressen können auf verschieden Bereiche zeigen.
Ein Adressraum
alte Intel Architektur, E/A Adressen sind am Ende der Adressen.
Zwei Adressräume
Hybrid aus beidem mit allen Vorteilen.

Datenübertragung

Variante 1
CPU schreibt direkt ins RAM.
Variante 2
via DMA Controller, CPU beantragt die Daten über den DMA Controller. Dieser übernimmt dann den Task bis alle Daten transferiert wurden und meldet dann den Abschluss an die CPU.

Geräteunabhängige I/O Software

  • Abstraktion der Hardware
  • Programme müssen nicht für Computer geschrieben werden.
  • Standards vereinfachen den Umgang mit den Geräten.
  • Device Lock falls ein Gerät bereits in Nutzung ist.

Schichten Modell

Die Schichtenarchitektur (auch Schichtenmodell oder Schichtenmuster) ist ein häufig angewandtes Strukturierungsprinzip für die Architektur von Softwaresystemen. Dabei werden einzelne Aspekte des Softwaresystems konzeptionell einer Schicht (engl. tier oder layer) zugeordnet. Die erlaubten Abhängigkeitsbeziehungen zwischen den Aspekten werden bei einer Schichtenarchitektur dahingehend eingeschränkt, dass Aspekte einer "höheren" Schicht nur solche "tieferer" Schichten verwenden dürfen.

Schichten E/A Funktion
Benutzerprozess E/A-Aufruf, Formatierung der E/A; Spooling
Geräte unabhängige Software Benennung, Schutz, Blockieren, Buffern, Belegen
Treiber Geräteregister initialisieren; Status prüfen
Unterbrechungsroutinen Treiber aufwecken, wenn E/A beendet
Hardware Ausführen der E/A Operation

X-Server und RDP

X-Server und RDP arbeiten beide stark nach dem Schichten Modell und können beide im Server/Client Modell laufen. Wobei RDP etwas weniger sauber getrennt ist.

Prozesse und Threads

Prozesse

Prozesse sind Applikationen weche vom Anwender oder vom System gestartet werden können (Instanz). Webbrowser wie etwa Google Chrome starten für jeden Tab einen eigenen Prozess. Prozesse werden vom OS verwaltet.

Thread

Ein Thread ist eine parallele Ausführung von Code. Dies macht insbesondere auf Multi-Core Systemen Sinn. Threads werden von der Applikation verwaltet (create/kill). Threads können im Userspace oder im Kernelspace laufen. Heute werden sie meistens im Kernelspace erstellt damit sich das Betriebssystem besser um die Ressourcen kümmern kann. Threads brauchen weniger Ressourcen als ein Prozess vorausgesetzt es handelt sich um ein Multi-Core System. Stirbt ein Thread durch einen Fehler stirbt der ganze Prozess.

  • Threads laufen immer im gleichen Prozess
  • Untereinander sind sie nicht geschützt
  • funktionieren ähnlich wie kleine Prozesse
Virtuelle Prozessoren

Jeder Prozess wird einem virtuellen Prozessor zugeordnet. Dabei sieht es für die Prozesse so aus als ob sie alleinigen Zugriff auf die CPU hat. Das Management übernimmt dabei das OS.

Prozesslebenszyklus

Prozesslebenszyklus

Prozesslebenszyklus

  1. Prozess erzeugt
  2. Ressourcen zuweisen
  3. Code in Speicher laden
  4. Kontext laden und Prozess starten
  5. Prozess beenden
    • Sauberes Ende
    • Fatal Error
    • Kill

Interrupts

Ist eine Unterbrechung im Computerumfeld. Wird auch als Trap bezeichnet. Wichtig es handelt sich dabei nicht um polling! Kurz es sind unvorhergesehen Ereignisse. Interrupts können auch abgeschaltet werden (Masking) sollte aber wenn möglich vermieden oder zumindest kurz gehalten werden.

Synchrone Interrupts

  • Division durch Null
  • Speicherzugriffsverletzungen (Page Fault)

*Asynchrone Interrupts*

  • alle unvorhergesehen Events
  • Hardware Fehler
  • Input von Aussen
Interrupts

Interrupts

Hauptspeicher

Zugriffzeiten

Zeiten    
0,1 ns Register 1KB
2ns Cache 4MB
30-100sn Hauptspeicher 1GB-1TB
0,x -10ms HDD/SSD 200MB-+TB
ms -s DVD  

Lokalitäten

Zeitliche Lokalitäten

Daten die momentan gebraucht werden, werden sehr wahscheinlich auch in naher Zukunft wieder benutzt.

räumliche Lokalitäten

Wurde auf einen Adressbereich zugegriffen ist die Wahrscheinlichkeit hoch, das in naher Zukunft auf eine benachbarte Adresse zugegriffen wird.

Adressen und Adressräume

  • Ein Programm kann nur funktionieren wenn mindestens der aktive Teil im RAM liegt.
  • Die kleinste adressierbare Einheint ist üblicherweise ein Byte.
  • Adressen werden normalerweise hexadezimal notiert.

Heap/Stack/Code

Heap

Daten die über längere Zeit in einem Programm genutzt werden. Etwa neue Instanzen einer Klasse.

Stack

Auf dem Stack landen Daten die nur für kurze Zeit genutzt werden. Etwa lokale Variabeln welche innerhalb einer Funktion genutzt werden.

Code

Daten die beim laden der Anwendung bereits vorhanden sind (Konstanten, und initialisierte Daten).

Adressbaumbelegung

Bild einfügen der zwei Arten (Seite 11 im Hauptspeicher.pdf)

Verwaltungsarten

  • Monopgrogramming
  • Feste Partitionen
  • Variabeln Partitionen und Swapping
  • Virtuellem Speicher und Paging

Monopgrogramming

Feste Partitionen

Fürt zu Fragmention -> siehe Bild Folie 3 Hauptspeicherverwaltung

Variabeln Partitionen und Swapping

Virtuellem Speicher und Paging

  • ist die heute am meist eingesetzte Variante
  • Ein kann mehr Speicher benötigen als das System physikalisch zur Verfügung stellt.
  • Programmiere müssen sich nicht um die RAM Fragmentierung kümmern

Mapping und Paging

Mapping

  • MMU
  • Page Fault (aus einem Grund zu wenig RAM)
  • gewisse Speicherbereiche dürfen nicht ausgelagert werden (Systemdateien)

Paging

Pagetable

Siehe Bild Seite 10 Hauptspeicherverwaltung Page = 4KB Block im RAM

Paginalgorithmus

Bestimmen die Seiten welche ausgelagert werden sollen basieren auf verschiedenen Kriterien.

  • Optimal
  • NRU
  • FIFO
  • Second Chance
  • Clock Page
  • LRU
  • NFU

Not Recently Used

Firt In First Out

Ziemlich doofe Idee

Clock

Least Recently Used

Working Set

  • Basiert auf der Idee das Adressen bei einander liegen dazugehören.
  • Pages die in einem Zeitraum (t) von einem Prozess verwendet wurden vor dem Auslagern.

WSClock

WSClock = Working Set + Clock Wird in Windows eingesetzt.

Trashing

Passiert wenn zu wenig Hauptspeicher zur Verfügung steht. Da die CPU unter Umständen nicht ausgelastet wird kann es sein das diese dann noch weitere Prozesse startet welche dann noch mehr RAM wollen und so das Problem dann noch verschlimmern.

Dateisysteme

Aufgaben eines Dateisystems:

  • Konsistenz (Bit/Bytes)
  • Metadaten
  • Speicherverwaltung
  • Performance
  • Struktur Verzeichnisse / Dateien
  • Sicherheit

Zusammengefasst muss ein Dateisystem Daten persistens Speichern und die darunterliegende Hardware abstrahieren.

Kleinste mögliche Einheit ist eine Datei. Generell ist das Dateisystem dafür verantwortlich das Dateien geschrieben und gelesen werden.

Aufbau

  • Pro Partition hat man ein Dateisystem.
  • Pro Medium sind mehrere Partition mit verschiedenen Dateisysteme möglich

Speichermedium

Ein Massenspeicher ist ein physikalisches Medium mit Speicherplatz. Der Speicherplatz wird dabei in Blöcke mit einer Grösse von 512 - 4096 Bytes unterteilt. Wobei dies immer für die ganze Partition gilt.

Journaling

  • Journaling wird benötigt um das Dateisystem konsistent zu halten.
  • Dabei werden die Operationen im Dateisystem nach ACID ausgeführt. Sprich es werden nur Aktionen als komplett angesehen welche komplett ausgeführt wurden. Ansonsten gelten sie als nicht geschrieben.
  • In der Theorie müssten Dateisysteme mit Journaling keine Dateisystemchecks machen. In der Praxis kommt es aber dann doch vor das man einen Check durchführen muss.
  • Es gibt zwei Arten von Journaling, einmal nur die Metadaten und einmal das Full Journaling bei dem auch die Konsistenz der Dateiinhalte überprüft wird.

GPT

  • unbegrenzt Partitionen
  • 18 ExaByte Disken
  • 18 ExaByte Partitionen
  • Prüfsumme über der Partitiontable, kann aus Backup Table wieder hergestellt werden.

MBR

  • max. 4 physische Partitionen, mehr nur mit logischen Partitionen
  • max 2TB Disken
  • max 2TB Partitionen

UEFI

  • Hotplug
  • graphischer Modus
  • Maus/Touch Input

BIOS

  • nur Tastatur
  • kein Hotplug

Arten

FAT32

  • Kompatibilität
  • max 4 GB Dateigrösse
  • kleinste Grösse 16KB

NTFS

  • grosse Dateien möglich (16TB)
  • Sicherheitseinstellungen
  • kleinste Grösse 4KB
  • Je nach Sicherheitseinstellung langsamer als FAT32

REFS

  • Dateipfade länger als 255 Zeichen
  • sehr grosse Dateien möglich 16 ExaByte
  • REFS ist proprietär

BTRFS

  • GPL Lizenz
  • unterstützt RAID und Subpartitionen
  • Copy on Write
  • zu allen Dateien werden Metadaten abgelegt

HFS+

  • Zugriffsgeschwindigkeit
  • höhere Effizienz
  • Case insensitiv

Dateiverwaltung

contiguous allocation

Ist die schnellste Variante zum lesen. Beim Schreiben ergeben sich Probleme da freier Platz gefunden werden muss. Hinterlässt "Löcher" welche zu klein für Dateien sein können. Dies führt zu Fragmentation (Windows XP defrag). Desweiteren weiss das Betriebssystem nicht wie gross eine Datei werden kann. Dies kann dann dazu führen das manchmal eine Datei komplett neu in einen grösseren freien Speicherbereich kopieren. Wir heute praktisch nicht mehr eingesetzt.

linked list allocation

Jede Datei ist eine verknüpfte Liste von Blöcken. Jeder Block verweist auf den nachfolgenden Block. Der Diskkopf muss viele Bewegungen machen um Dateien zu finden. Wenn es einen Fehler in der Liste gibt ist die Datei ab diesem Punkt beschädigt.

linked list using table

Indexed allocation (I-nodes)

Jede Datei hat Index Blöcke welche auf die Blöcke verweisen welche die Datei enthalten. Ist heute der eingesetzte Standard.

Freier Speicherverwaltung

Bitmap
jeder Block hat ein Bit welches angibt ob er frei ist oder nicht. Kann zu Problemen bei einem Absturz führen.
Linked List
alle freien Blöcke sind in einer linked List verhenkt. Wenn ein Block nicht mehr frei ist wird er aus der Liste gelöscht.
Hybride
in der Praxis werden oft Hybriden aus den beiden Systemen eingesetzt.

Metadaten

Können je nach Filesytem sehr unterschiedlich sein.

NTFS Streams

Kann für jede Datei wieder eine Datei ablegen welche Zusatzinformationen über die Hauptdatei enthält. Etwa Thumbnail oder ähnliches. Nachteil davon ist diese Zusatzdatei wieder Zusatzinformationen enthällt.

Sind Zeiger auf eine Datei. Dabei verwendet der Symlink sehr wenig Speicherplatz. Der Platz der Datei wird so nur einmal verwendet.

Spare Files

Ein-/Ausgabe im Detail 1

3 mögliche Hardware Klassen

  1. Blockorientierte Geräte Festplatten, etc.
  2. Zeichenorientierte Geräte Zeigegeräte, Netzwerkkarten, etc.
  3. Weder noch oder beides Uhren und Zufallsgeneratoren

Geräte Klassen nach Verwendungszweck

  • Speichergeräte
  • Übertragungsgeräte
  • Geräte für Menschmaschine-Kommunikation
  • Fesplatten, CDs, USB-Sticks, etc.
  • Netzwerkkarten, Modems, etc.
  • Peripherie und Audio

NEXT Kommunikationsarten

  • Port
    • Netzwerk
  • Bus
    • daisy chain
    • gemeinsame direkte Adressierung?
  • Via Controlller
  • Adressierung
    • ? Das gleiche wie SPS? direkte über I/Os
    • I/O via Memory-Maps

NEXT CPU - IO Device Kommunikation

  • [2018-02-13 Die] Muss die CPU so kommunizieren um Daten zwischen dem Buffer und des Controllers zu vermitteln?

Die CPU kommuniziert via Register des Controllers mit dem Gerät. Zusätzlich gibt es oft noch einen Buffer für das schreiben und Lesen von Dateien aus dem Dateisystems. Jedes Controllerregistier hat seinen eigenen Port und eine eindeutige Speicheradresse zugewiesen.

NEXT I/O port space

  • [2018-02-13 Die] Heisst REG register?

Die Menge aller Ein-/Ausgabeports bildet den Ein-/Ausgabeport-Namensraum.

IN REG, PORT
Der Prozessor liest im Port und legt das Ergebniss im Register ab.
OUT PORT, REG
Der Prozessor schreibt den Inhalt des Registers in ein Controllerregistier.

Powermanagement

Gründe für Energieverwaltung

Computer die tragbar sind sollten länger Akku haben. Zudem wurden die Computer von den Usern nicht mehr abgeschaltet. Umweltschutz mit dem Energy Star Label.

Standardisierung

Begann 1990 mit APM und wurde 1996 mit ACPI erweitert. Wir auch heute noch genutzt. ACPI ist dabei in Geräteklassen organisiert. ACPI beinhaltet auch die termische Regulierung der Komponenten sowie die dazugehörigen Sensoren. Auch externe Geräte werden von ACPI verwaltet.

Power States

Global Gx
System Sx
Processor Cx
PCI Bx
PCI Lx
Devices Dx

x steht dabei für eine Zahl beginnend bei 0. Je nach Geräteklasse gibt es andere maximal Werte. Generell gilt umso höher die Zahl ist umso höher ist die Energieersparnis.

CPU Throttling

Um Strom zu sparen können moderne CPUs ihre Taktfrequenz regulieren. Zusätzlich wird dieses Feature oft auch verwendet um die CPU kühl zu halten. Dies wird vorallem bei Smartphones of verwendet. Bei x86 Systemen gibt es auch das Gegenteilige Feature um kurzzeitige Lastspitzen abzuarbeiten.

Nebst dem regulieren der Taktfrequenz können auch einzelne Cores deaktiviert werden.

Green IT

Aspekte

Geht hauptsächlich um Energie sparen und den verantwortungsvollen Umgang mit Resourcen und den fairen Abbau von Materialien.

PUE

Rechenzentren werden mit dem sogennanten PUE (Power usage effectiveness). Beim PUE wird der gesamte Energieverbrauch des Datenzenters durch den Energie verbrauch des IT-Equipment gerechnet. Der ideale Wert liegt dabei bei 1.0. Realistische Werte für Europa liegen zur Zeit bei etwa 1.12.

Stromverlust

Bereits bei der Übertragung gehen Aufgrund von Abwärme und Widerständen unterwegs um die 11% verloren.

Stromkosten

Lampe mit 250W 3h/Tag an 300 Tagen.

250W * 3h * 300 Tage = 225'000 = 225kWh Bei .25 CHF pro kWh ergeben sich 56 CHF pro Jahr.

Verteilte Systeme

Begriff

Ein verteiltes System ist eine Gruppe voneinander unabhängige Computer die dem User wie ein einzelnes kohärentes System erscheinen.

Verteilte prevasive Systeme

Kleine bis sehr kleine Systeme etwa Smartphones oder IoT Devices.

Verteilte Betriebssysteme

Spielen in der Praxis eigentlich keine Rolle.

Begriffe in verteilten Systeme

CORBA wird heute praktisch nicht mehr eingesetzt. REST bildet sich als der defacto Standard ab im Bezug auf Interfaces.

Vorteile

  • Lastverteilung
  • Ausfallsicherheit
  • Skalierbarkeit
  • Flexibilität
  • Transparenz

Nachteile

  • grosser Administrativer Aufwand

Probleme

  • Heterogenität
  • Symbolische Namen zur Adressierung finden
  • Persitenz der Daten
  • Fehlersemantik bei der Kommunikation

Heterogenität

Probleme die auftreten da die Systeme verschieden zu einander sind:

  • Anwendungen müssen gleich kommunizieren
  • Unterschiedliche Sprachkonzepte in der Runtime (.NET, Python, Java)
  • Unterschiedliche Zeichendarstellung (UTF-8, etc.)
  • Unterschiedliche Speicherun (etwa Zeilenende Problematik)

Gateway

Wäre eine Möglichkeit zwischen zwei unterschiedlichen Runtimes zu übersetzen. Wird in der Praxis allerdings nicht angewendet.

RPC / RMI

Grundidee

Der anfragende Rechner fragt beim Naming Service für einen Dienst an. Der Naming Dienst liefert ihm darauf hin den "Namen" des zuständigend Dienstes. Der anfragende Rechner kann nun direkt beim zuständigen Server anfragen.

Kommunikationsablauf

Die Kommunikation läuft in der Regel synchron ab. Passiert die Kommunikation asynchron würde es etwa bedeuten das der User über das Ende einer Aktion informiert wird aber die Daten noch effektiv in der Datenbank gespeichert werden müssen. Synchron ist einfacher umzusetzen.

Implementierungskonzept

Das Proxymodel ist in der Regel das Implementierungskonzept das in der Praxis am häufigsten verwendet wird.

Glossary

<>
Central Processing Unit
<>
Direct Memory Access Controller
<>
Graphics Processing Unit
<>
Remote Procedure Call
<>
Remote Method Invocation

Revision #1
Created Tue, Feb 5, 2019 5:35 PM by Andreas Zweili
Updated Wed, Feb 13, 2019 6:44 AM by Andreas Zweili