Systemprogrammierung - Cheatsheet.pdf

Systemprogrammierung - Cheatsheet
Systemprogrammierung - Cheatsheet Erstellung und Terminierung von Prozessen Definition: Prozesserstellung und -beendigung in Betriebssystemen: Erzeugen (fork), Initialisieren (exec), Beenden (exit). Details: Erstellung: fork() erzeugt Kindprozess Initialization: exec() lädt neues Programm in Prozessraum Beendigung: exit() beendet Prozess Prozesszustände: neu, bereit, laufend, wartend, beendet Wart...

© StudySmarter 2024, all rights reserved.

Systemprogrammierung - Cheatsheet

Erstellung und Terminierung von Prozessen

Definition:

Prozesserstellung und -beendigung in Betriebssystemen: Erzeugen (fork), Initialisieren (exec), Beenden (exit).

Details:

  • Erstellung: fork() erzeugt Kindprozess
  • Initialization: exec() lädt neues Programm in Prozessraum
  • Beendigung: exit() beendet Prozess
  • Prozesszustände: neu, bereit, laufend, wartend, beendet
  • Warteschlange und Planung: Scheduler, Kontextwechsel
  • Wichtige Systemaufrufe: fork(), exec(), wait(), exit()
  • Zustandstransitionen durch Scheduler bestimmt

Interprozesskommunikation (IPC)

Definition:

Austausch von Daten zwischen mehreren Prozessen zur Koordination und Datenkonsistenz.

Details:

  • Pipes: unumkehrbar, einfache Kommunikation zwischen Prozessen.
  • Message Queues: persistente Nachrichtenwarteschlangen.
  • Shared Memory: gemeinsamer Speicherbereich, schnelle Kommunikation.
  • Sockets: Kommunikation über Netzwerke, flexibel.
  • Semaphores: Synchronisation von Prozessen, Vermeidung von Race Conditions.
  • Signals: einfache Steuerungsmechanismen für Prozessereignisse.

Prozesssynchronisation und Deadlock-Behandlung

Definition:

Koordination von Prozessen, um konsistente Zugriffe auf geteilte Ressourcen zu gewährleisten und Vermeidung von Deadlocks.

Details:

  • Wichtige Mechanismen: Semaphoren, Monitore, Spinlocks
  • Deadlock-Bedingungen: Mutual Exclusion, Hold and Wait, No Preemption, Circular Wait
  • Strategien zur Deadlock-Behandlung: Vermeidung, Verhinderung, Erkennung und Behebung
  • Banker's Algorithm zur Deadlock-Vermeidung
  • Warteschlangen-Grafen für Erkennung/Analyse

Paging und virtuelle Speichertechniken

Definition:

Trennung von physischen und virtuellen Adressen zur effizienten Nutzung des Speichers.

Details:

  • Virtueller Adressraum wird in Seiten (Pages) aufgeteilt.
  • Physischer Speicher wird in Rahmen (Frames) aufgeteilt.
  • Seitentabelle (Page Table) zur Verwaltung der Zuordnungen zwischen Pages und Frames.
  • Adressumsetzung durch Hardware: MMU (Memory Management Unit).
  • Seitenaustausch über lokale Platte bei Speichermangel.
  • Effiziente Nutzung durch Vermeidung von Fragmentierung.
  • Formel: Effektive Zugriffszeit \( EAT = (1 - p) \times MA + p \times (P + S + MA) \), wobei \( p \) die Fehlerrate, \( MA \) die Speicherzugriffszeit, \( P \) die Swap-Seitenladezeit, und \( S \) die Zeit zum Speichern der Seite ist.

Journaling-Dateisysteme

Definition:

Dateisysteme, die Änderungen in einem Journal protokollieren, um Datenintegrität zu erhöhen und schnellere Wiederherstellung nach einem Absturz zu ermöglichen.

Details:

  • Verwendet ein Journal, um Metadaten und manchmal Nutzdaten zu speichern
  • Reduziert das Risiko von Datenverlust bei plötzlichen Ausfällen
  • 3 Modi des Journalings: writeback, ordered, journal
  • Beispiele: ext3/ext4, XFS, JFS
  • Metadaten-Journaling vs. Voll-Journaling

Systemaufrufe und ihre Implementierung

Definition:

Systemaufrufe (Syscalls) ermöglichen Programmen die Kommunikation mit dem Betriebssystem, um Dienste wie Dateioperationen oder Speicherverwaltung zu nutzen.

Details:

  • Syscall-Interface als Vermittler zwischen User- und Kernel-Mode
  • Übergabe von Parametern über Register oder Stack
  • Wechsel vom User- in den Kernel-Mode durch Software-Interrupt (z. B. \texttt{int 0x80} auf x86)
  • Implementierung in Betriebssystem-Kernel
  • Fehlerbehandlung durch Rückgabewerte (meistens -1) und Setzen von \texttt{errno}

Socket-Programmierung

Definition:

Erstellen von Anwendungen, die über Netzwerke kommunizieren, unter Verwendung von Sockets.

Details:

  • Sockets bieten eine Schnittstelle für die Kommunikation zwischen zwei Endpunkten.
  • Wichtig: IPv4 vs. IPv6, TCP vs. UDP.
  • Wesentliche Funktionen: socket(), bind(), listen(), accept(), connect(), send(), recv(), close().
  • Verwaltung von Verbindungsabbrüchen und Fehlern notwendig.
  • Beispiel TCP-Server:
    sock = socket(AF_INET, SOCK_STREAM)sock.bind((host, port))sock.listen()conn, addr = sock.accept()data = conn.recv(1024)conn.send(data)conn.close()

Asynchrone und parallele Netzwerkprogrammierung

Definition:

Netzwerkprogrammierung, bei der Aufgaben unabhängig und gleichzeitig bearbeitet werden, um Effizienz und Performance zu steigern.

Details:

  • Asynchrone Programmierung: Tasks starten ohne auf das Ende anderer zu warten; verwendet Callback-Funktionen, Promises oder async/await.
  • Parallele Programmierung: Mehrere Tasks laufen gleichzeitig auf verschiedenen Kernen/Threads; verbessert durch Hardware-Multithreading.
  • Wichtige Konzepte: Event Loop (asynchron), Threads und Prozesse (parallel), Race Conditions, Synchronisation.
  • Bibliotheken: Boost.Asio (C++), asyncio (Python), Tokio (Rust)
  • Typische Paradigmen: Non-blocking I/O, Futures, Channels
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden