Betriebssysteme (Vorlesung mit Übungen) - Cheatsheet
Unterschied zwischen Prozessen und Threads
Definition:
Prozesse und Threads sind Ausführungseinheiten, aber mit unterschiedlichen Ressourcen und Ausführungsumgebungen.
Details:
- Prozess: Schwergewichtige Ausführungseinheit, eigene Adressräume, interprozessale Kommunikation notwendig.
- Thread: Leichtgewichtige Ausführungseinheit, gemeinsamer Adressraum innerhalb eines Prozesses, einfachere und schnellere Kommunikation und Kontextwechsel.
- Prozesse haben unabhängige Resourcen (eigener Speicher, eigene Register).
- Threads teilen Resourcen eines Prozesses, reduzieren Overhead.
- Multithreading: Höhere Effizienz, parallele Ausführung innerhalb eines Prozesses, besser für komplizierte Anwendungen wie Webserver.
- Multitasking: Gleichzeitige Ausführung mehrerer Prozesse, bessere Nutzung der CPU durch Kontextwechsel.
Prozessscheduling-Algorithmen
Definition:
Zuteilung von CPU-Zeit an Prozesse. Ziel: Maximierung der Effizienz und Fairness der Prozessausführung.
Details:
- FCFS: First Come, First Served. Einfache Implementierung, aber lange Wartezeiten möglich.
- SJF: Shortest Job First. Minimalisiert die durchschnittliche Wartezeit, aber schwer vorhersagbar.
- RR: Round Robin. Jeder Prozess erhält eine feste Zeitspanne (Zeitscheibe).
- Prioritätsbasiert: Zuteilung basierend auf Prozesspriorität. Hohe Priorität erhält mehr CPU-Zeit.
- Multilevel Queue: Kombination mehrerer Algorithmen durch Aufteilung in verschiedene Warteschlangen.
- Multilevel Feedback Queue: Prozess kann in eine andere Warteschlange wechseln, dynamische Anpassung der Priorität.
Physische und virtuelle Speicherverwaltung
Definition:
Verwaltung von physischem und virtuellem Speicher durch das Betriebssystem. Virtueller Speicher abstrahiert physische Hardware und ermöglicht eine bessere Speicherverwaltung und Schutzmechanismen.
Details:
- Physischer Speicher: Tatsächlich vorhandener RAM.
- Virtueller Speicher: Abstraktionsschicht, die es ermöglicht, mehr Speicher zu adressieren als physisch vorhanden ist; verwendet Paging und/oder Segmentierung.
- Paging: Unterteilung des virtuellen Speichers in gleich große Blöcke, sogenannte Seiten (\textit{Pages}).
- Page Tables: Datenstruktur zur Verwaltung von Seiten und deren Entsprechung im physischen Speicher.
- Page Fault: Tritt auf, wenn eine angeforderte Seite nicht im physischen Speicher ist. Betriebssystem muss diese Seite laden.
- Segmentierung: Alternative zu Paging. Aufteilung des Speichers in unterschiedlich große Segmente.
- Virtuelle Adressen: Adressen, wie sie vom Programm gesehen werden.
- Physische Adressen: Tatsächliche Speicheradressen im RAM.
- Translation Lookaside Buffer (TLB): Cache-Speicher für schnelle Übersetzung von virtuellen zu physischen Adressen.
Paging und Segmentation
Definition:
Speicherverwaltungstechniken zur effizienten Nutzung von Hauptspeicher und zum Schutz von Speicherbereichen.
Details:
- Paging: Teilt Speicher in gleich große Blöcke (Seiten, Frames).
- Segmentation: Teilt Speicher in logische Einheiten (Segmente).
- Paging-Tabelle: Übersetzt Seitenzahl zu Frame-Nummer.
- Segmenttabelle: Enthält Basisadresse und Länge der Segmente.
- Formeln:
- Physikalische Adresse bei Paging: \[\text{PhysAddr} = \text{FrameNum} \times \text{FrameSize} + \text{Offset}\]
- Physikalische Adresse bei Segmentierung: \[\text{PhysAddr} = \text{BaseAddr} + \text{Offset}\]
- Kombination: Paged-Segmented Memory Management.
- Anwendungen: Schutzmechanismen, effizientere Speicherzugriffe.
Speicherzuweisungsmethoden für Dateien
Definition:
Methoden zur Organisation und Verwaltung von Speicherplatz für Dateien auf Datenträgern; wichtig für Effizienz und Zugriffszeit.
Details:
- Kontinuierliche Speicherzuweisung: Dateien werden in einem zusammenhängenden Block gespeichert.
- Verkettete Speicherzuweisung: Dateien bestehen aus Blöcken, die durch Zeiger miteinander verbunden sind; sequentieller Zugriff effizient, zufälliger Zugriff weniger.
- Indirekte Speicherzuweisung: Zeiger auf Zeiger (mehrere Ebenen); besser für große Dateien.
- FAT (File Allocation Table): Tabelle mit Einträgen, die den Speicherort und die Folgeblöcke jeder Datei enthalten.
- Indexierte Speicherzuweisung: Verwenden Indexblöcke, die Zeiger auf Datenblöcke enthalten; effizient für große Dateien und wahlfreien Zugriff.
Gerätetreiber und Geräteschnittstellen
Definition:
Gerätetreiber sind Softwarekomponenten, die eine Kommunikationsschnittstelle zwischen Betriebssystem und Hardwaregeräten bereitstellen.
Details:
- Geräteschnittstellen: definieren, wie das OS mit Hardware interagiert
- Arten von Treibern: Gerätetreiber für Blockgeräte (z. B. Festplatten), Zeichengeräte (z. B. Tastaturen) und Netzwerkgeräte (z. B. Netzwerkkarten)
- Wichtige Funktionen: Initialisierung, Steuerung und Betrieb von Geräten
- Treiberarchitektur: monolithische Treiber vs. modulare Treiber
- API und ABI: Application Programming Interface und Application Binary Interface
- Wichtige Konzepte: Interrupts, DMA (Direct Memory Access), PIO (Programmed Input/Output)
- Beispiele: Unix/Linux-Gerätetreiber (char, block, net), Windows-Treibermodelle (WDM, KMDF)
Authentifizierungs- und Autorisierungsmethoden
Definition:
Überprüfung der Identität (Authentifizierung) und Zuweisung von Rechten (Autorisierung)
Details:
- Authentifizierung: Überprüfung der Identität des Benutzers
- Methoden: Passwörter, Biometrie, Tokens, Zwei-Faktor-Authentifizierung
- Autorisierung: Zuweisung und Überprüfung der Zugriffsrechte
- Zugriffssteuerungsmodelle: DAC (Discretionary Access Control), MAC (Mandatory Access Control), RBAC (Role-Based Access Control)
- Prinzip der minimalen Rechte: Benutzer erhalten nur die für ihre Aufgaben notwendigen Rechte
- Implementierung in Betriebssystemen: Benutzer und Gruppenverwaltung, ACLs (Access Control Lists)
Virtuelle Maschinen und Hypervisoren
Definition:
Virtuelle Maschinen (VMs) sind simulierte Rechnerumgebungen, die auf einem physikalischen Host laufen und durch Hypervisoren verwaltet werden.
Details:
- Hypervisor: Software zur Verwaltung von VMs, Typ 1 (bare-metal) und Typ 2 (hosted)
- VMs erlauben Ausführung mehrerer Betriebssysteme auf einer physischen Hardware
- Isolation der VMs sowohl auf Hardware- als auch auf Softwareebene
- Ressourcenverteilung durch den Hypervisor, z.B. CPU, RAM, Netzwerke
- Wichtige Hypervisoren: VMware ESXi, Microsoft Hyper-V, KVM
- Anwendungsfälle: Serverkonsolidierung, Tests, Sicherheit, Cloud-Computing