Grundlagen der Systemprogrammierung - Cheatsheet
Grundkomponenten eines Betriebssystems: Kernel, Shell, und Systembibliotheken
Definition:
Details:
- Kernel: Zentrale Komponente eines Betriebssystems, die direkten Zugriff auf die Hardware und Systemressourcen hat. Verantwortlich für Speicherverwaltung, Prozesssteuerung, Gerätetreiber und Dateisysteme.
- Shell: Schnittstelle zwischen Benutzer und Kernel. Ermöglicht die Eingabe von Befehlen und deren Ausführung. Arten: Kommandozeilen-Shell (z.B. Bash) und grafische Shells (z.B. GNOME).
- Systembibliotheken: Sammlung von Prozessen und Funktionen, die von Programmen verwendet werden können. Erleichtern die Programmierung, indem sie häufig benötigte Funktionen bereitstellen. Beinhaltet Bibliotheken wie libc, die grundlegende Ein-/Ausgabe-Funktionen abdecken.
Prozesskontrollblöcke und Kontextwechsel
Definition:
Prozesskontrollblöcke (PCB) speichern den Zustand eines Prozesses. Kontextwechsel bedeutet das Wechseln der CPU von einem Prozess zu einem anderen durch Speichern und Wiederherstellen von PCBs.
Details:
- PCB enthält: Prozesszustand, Programmzähler, CPU-Register, Speicherinformationen
- Kontextwechsel: Notwendig für Multitasking
- Kontextwechsel besteht aus Speichern des Zustands des laufenden Prozesses und Laden des Zustands des nächsten Prozesses
- Erfordert Overhead und Zeit
Prozessplanung und Scheduling-Algorithmen
Definition:
Prozessplanung: Zuweisung von CPU-Zeit zu Prozessen; Scheduling-Algorithmen: Strategien zur Durchführung der Prozessplanung
Details:
- CPU-Scheduling-Kriterien: Effizienz, Fairness, Durchsatz, Wartezeit
- Wichtige Algorithmen: First-Come-First-Served (FCFS), Kürzester Job Zuerst (SJF), Round Robin (RR), Prioritätenbasiertes Scheduling
- FCFS: Einfach, aber kann Prozessstarvation verursachen
- SJF: Minimiert durchschnittliche Wartezeit, benötigt Vorhersage der Prozess-Dauer
- Round Robin: Zeitscheibenverfahren, geeignet für Zeitsysteme
- Prioritätenbasiert: Prozesse mit höherer Priorität zuerst, kann zu Starvation führen, Lösung: Aging
- Notwendige Begriffe: Kontextwechsel, Dispatcher, Burst-Zeit
Virtueller Speicher: Paging und Segmentierung
Definition:
Seiten- und Segmentierungstechniken zur Speicherverwaltung in Betriebssystemen; Ziel: effiziente Nutzung physischen Speichers und Schutz
Details:
- Paging: Speicher in gleich große Seiten (4KB) unterteilt; Seitentabellen, seitennummerbasierte Zugriffe; virtuelle Adresse = Seitennummer + Seitenoffset
- Segmentierung: Speicher in variable Segmente unterteilt (z.B. Code, Daten); Segmenttabellen, segmentbasierte Zugriffe; virtuelle Adresse = Segmentnummer + Segmentoffset
- Vorteile Paging: Kein externer Fragmentierung, effiziente Speicherverwaltung
- Nachteile Paging: Interne Fragmentierung, Overhead durch Seitentabellen
- Vorteile Segmentierung: Logische Gruppierung von Speicherbereichen, einfache Zugriffsrechte
- Nachteile Segmentierung: Externe Fragmentierung möglich, komplexeres Speicher-Management
Dateisystemtypen und -strukturen
Definition:
Dateisystemtypen und -strukturen sind Konzepte zur Organisation und Verwaltung von Daten auf Speichermedien.
Details:
- Bekannte Dateisystemtypen: FAT32, NTFS, ext3, ext4, HFS+
- Strukturen: Hierarchische Struktur (Verzeichnisse, Unterverzeichnisse), Datei- und Verzeichnisattribute
- Funktionen: Speicherung, Zugriffskontrolle, Integritätssicherung
- Beispiel: In einem Unix-System können Verzeichnisse wie Bäume strukturiert sein \textdollar tree\ beispiel Verzeichnisstruktur
- Superblocks, Inodes, Datablöcke: Wichtige Strukturelemente im Unix Dateisystem
Netzwerkarchitektur und -modelle (OSI und TCP/IP)
Definition:
Netzwerkarchitekturmodelle helfen, die Kommunikation in Netzwerken zu standardisieren und zu vereinfachen.
Details:
- OSI-Modell: 7 Schichten (Physical, Data Link, Network, Transport, Session, Presentation, Application)
- TCP/IP-Modell: 4 Schichten (Network Interface, Internet, Transport, Application)
- Zweck: Interoperabilität und Standardisierung
- Beispielprotokolle:
- OSI: Ethernet (Physical), IP (Network), TCP (Transport)
- TCP/IP: Ethernet (Network Interface), IP (Internet), TCP (Transport)
Verschlüsselungstechniken und sichere Kommunikation
Definition:
Verschlüsselungstechniken schützen die Vertraulichkeit von Daten, sichere Kommunikation stellt sicher, dass Daten nicht unbefugt abgefangen oder manipuliert werden.
Details:
- Symmetrische Verschlüsselung: gleicher Schlüssel für Ver- und Entschlüsselung, z.B. AES
- Asymmetrische Verschlüsselung: öffentlich-privates Schlüsselpaar, z.B. RSA
- Hashing: Datenintegrität durch Erzeugen eines Hash-Werts, z.B. SHA-256
- Digitale Signaturen: Authentizität und Integrität von Nachrichten, z.B. mithilfe von RSA oder DSA
- Transport Layer Security (TLS): Protokoll für sichere Datenübertragung über Netzwerke
- Public Key Infrastructure (PKI): Verwaltung öffentlicher Schlüssel und Zertifikate
Speicherfragmentierung und deren Vermeidung
Definition:
Speicherfragmentierung: Problem, bei dem freier Speicher in kleine, nicht zusammenhängende Blöcke aufgeteilt ist.
Details:
- Externe Fragmentierung: Freier Speicher ist verteilt, kann nicht für große Datenblöcke genutzt werden.
- Interne Fragmentierung: Verteilung von Speicherblöcken führt zu ungenutztem Speicher innerhalb zugewiesener Blöcke.
- Vermeidung: Speicherkompaktierung, Paging, Verwendung von Speicherallokatoren wie malloc/free
- Algorithmus zur Speicherzuweisung: First Fit, Best Fit, Worst Fit