BSY - Betriebssysteme

Betriebssysteme

Betriebssysteme


L. K.
Diese Lernkarten behandeln grundlegende Konzepte von Betriebssystemen auf Universitätsniveau, mit Fokus auf Prozesse, Threads, CPU, Speicher und I/O. Sie erklären die Unterschiede zwischen Kernel-Level und User-Level Threads, Race Conditions, Synchronisation und die Organisation von Prozessen. Ideal für Studierende der Informatik, die ein tiefes Verständnis der Funktionsweise von Betriebssystemen erlangen möchten.
Flashcards
162
Students
4
Language
German
Category
Computer Science
Level
University
Created / Updated
25.05.2019 / 03.06.2020

Flashcards

Erkläre Process State Information.

Das ist der Inhalt des Prozessregisters. Sie enthält für den Benutzer sichtbare Register (Daten, Adressen), Kontroll- und Statusregister, SP und PC, Prozess Status Wort (PSW) und Flags.

Erkläre Process Control Information.

Enhält Scheduling und Zustandsinformationen, sowie Informationen zu

  • Queues, Prozessprivilegien, Memory Management
  • Ressourcen: Bersitzer und Benutzung

Erkläre den Ablauf einer Prozesserzeugung.

  1. Eindeutigen PID erzeugen
  2. Speicher für Prozess Image allozieren
  3. PCB initialisieren (Defaultwerte setzen)
  4. Verkettung für Queues aufsetzen (z.B. Prozess in die Liste mit neuen Prozessen einfügen)
  5. Weitere Datenstrukturen initialisieren (z.B. Accounting Informationen)

Wie sind Prozesse organisiert?

Hierarchisch (Eltern- und Kindprozesse)

Was macht der System Call fork()?

Er erzugt einen Kindprozess.

Was macht der System Call exec()?

Startet neues Programm

Wann wird der Prozess 0 erzeugt?

Zur Bootzeit.

Wer ist der "Vater" aller Prozesse?

Prozess 1

Alle Prozesse unter Unix haben einen Elternprozess, mit Ausnahme von Prozess 0. Stimmt das?

Ja

Was ist ein Elternprozess?

Der Erzeuger des Prozesses.

Was ist ein Kindprozess?

Ein neuer Prozess.

Das Kind ist eine fast identische Kopie des Vaters. Was ist gleich, was ist anders?

Gleich:

  • Code
  • Daten
  • Offene Files
  • etc.

Anders:

  • Eigene PID

Kann der Elternprozess gleichzeitig mit den Kindern arbeiten?

Ja kann er.

Was sind "Zombies"?

Kinder, die terminieren und auf die der Elternprozess nicht wartet.

Warum müssen Zombies verwaltet werden?

Weil sie BS-Ressourcen belegen.

Was geschieht beim COW (Copy On Write) Verfahren?

Mit dem System Call fork() wird noch keine vollständige Kopie des Elternporzesses erstellt. Datenbereiche werden nur erzeugt, wenn das Kind Daten schreibt.

Warum erstellen viele Unix Implementationen bei fork() zuerst keine Kopie?

Weil der Kindprozess oft mit exec() überlagert wird, weshalb dies ineffizient wäre.

Wie wird das BS ausgeführt?

Das BS arbeitet, wie eine normale Computersoftware und wird als Programm vom Prozessor ausgeführt.

Was sind bei einem Kernel mit eigenem Kontext Prozesse?

Nur Benutzerprogramme. Der BS-Code ist ein eigenständiges Programm mit eigenem Kontext.

Was weisst du über prozessbasierte BS?

Sie haben eine kleine Anzahl von Systemfunktionen ausserhalb von Prozessen (=> Microkernel).

Das BS ist eine Sammlung von Systemprozessen. Grössere Kernel Funktionen sind eigenständige Prozesse. Das ist gut geeignet für Multiprozesssysteme.

Was sind die Vor- und Nachteile eines prozessbasierten BS?

Vorteile:

  • Fördert modulare BS implementation mit sauberen Schnittstellen
  • Nicht kritische Funktionen sind problemlos als Prozesse implementierbar
  • Gut geeignet für Multiprozessorsysteme
  • Schlanker Kernel
  • Leicht erweiterbar

Nachteile:

  • relativ hohe Interprozesskommunikationskosten

Was ist ein Thread?

Eine Unit of Scheduling.

Er ist immer an den Prozess gebunden und stellt ein unabhängiges Stück Code innerhalb eines Prozesses dar. Er teilt sich Adressraum, Daten und Kontext mit anderen Threads, hat aber eigene lokale Variablen, Register, PC, Stack und SP.

Er hat die Ausführungszustände running, ready, etc. und speichert den Threadkontext, wenn er inaktiv ist.

Was versteht man unter Multithreading?

Mehrere Threads pro Prozess

Was sind die Vorteile von Threads?

  • Threadwechsel weniger aufwendig bzw. billiger
  • Aufgabenteilung
  • Unterstützt Multicore-Prozessoren

Was ist Single Threading?

Das BS kennt das Konzept des Threads nicht.

Warum werden Threads verwendet?

  • Kann schnell erzeugt und verwendet werden. Er braucht nur Stack und Speicher für die Register
  • Threadweschsel sind schnell
  • Threads benötigen wenig Ressourcen, keinen neuen Adressraum, keinen eigenen Datenbereich oder Programmcode und keine zusätzlichen BS-Ressourcen.

=> Thread ist "billig"

Wo kommen Threads zur Anwendung?

  • Daten Server
    • mehrere Anfragen "gleichzeitig" innerhalb kurzer Zeit bearbeiten
    • pro Anfage ein Thread ist effizienter als ein Prozess
  • Spreadsheet
    • Ein Thread behandelt Anzeige und Input
    • ein Thread fürht Befehle aus (im Hintergrund)
  • Parallelverarbeitung mit viel Kommunikation
    • Zugriff auf gemeinsame Datenbereiche ist effizienter
    • Matrixmultiplikation auf mehrere Threads verteilen
  • Programme mit Vorer- und Hintergrundaktivitäten
    • z.B. in regelmässigen Abständen Daten sichern

Wo ist eine Anwendung von Threads ungeeignet?

Wenn kein Multiprozessing notwendig ist doer wenn mehrere Prozesse notwendig sind, z.B. Sicherheit, etc.

Welche Zustände kann ein Thread haben?

  • New
  • Ready
  • Running
  • Blocked
  • Stopped

Warum gibt es bei Threads keinen Zustand Suspend?

Weil alle Threads im gleichen Adressraum sind.

Was geschieht mit den Threads, wenn ein Prozess terminiert?

Alle Threads terminieren.

Was geschieht, wenn ein Thread blockiert?

  • user level threads: der Prozess blockiert
  • kernel level threads: der Thread blockiert

Welche Thread-Typen gibt es?

  • User-Level Threads (ULT)
  • Kernel-Level Threads (KLT)

Was ist ein User Level Thread (ULT)?

Hierbei ist die Anwendung verantwortlich für das Threadmanagement (Bibliotheksfunktionen)

Theradwechsel benötigt keine Kernel Mode Privilegien und Threadscheduling ist applikationsspezifisch wählbar

Thread Bibliothek

  • Speichern und Rückspeichern des Threadkontextes
  • Threas erzeugen und beenden
  • Scheduling

Was macht der Kernel bei User-Level Threads?

Der Kernel weiss nichts von Threadaktivitäten, kontrolliert aber nach wie vor die Prozessaktivitäten

Thread macht ein System Call. Der ganze Prozess blockiert, auch die anderen Threads dieses Prozesses. Die meisten System Calls haben diese Wirkung.

Aus Sicht des Threadscheduliers ist der Thread nach wie vor am Laufen. Die Thread Zustände sind unabhängig von Prozesszuständen.
Threads können nicht unterbrochen werden. Sie können nur freiwillig die Kontrolle über CPU abgeben.

Was sind die Vor- und Nachteile von User-Level Threads?

Vorteile:

  • Threadwechsel involviert Kernel nicht
  • Läuft auf jedem BS (Bibliothek notwendig)
  • Schedulingverfahren kann anwendungsspezifisch gewähtl werden, aber oft nicht preemptive
  • Schnell und einfach

Nachteile:

  • Die meisten System Calls blockieren. Prozess blockiert und damit auch die anderen Threads des Prozesses
  • Nur der Kernel kann Prozesse zuweisen, d.h. Parallelverarbeitung ist nicht möglich
  • Page Fault eines Threads blockiert ganzen Prozess

Was sind Kernel Level Threads (KLT)?

Thread Management geschieht durch Kernel.

  • Keine Bibliothek, sondern API zu Threadfunktionen des Kernels
  • Kernel verwaltet Kontextinformationen von Prozessen und Threads
  • Threadwchsel erfordert Intervention des Kernels
  • Schedulierbare Einheit: Therad
  • Threads können auf mehrere Prozessoren verteilt werden

Was sind die Vor- und Nachteile von Kernel-Level Threads?

Vorteile:

  • Kernel kennt alle Threads. Ein Prozess mit 10 Threads kann anders behandelt werden als ein Prozess mit einem Thread
  • Scheduling auf Thread Basis
  • geeignet für Anwendungen, die häufig blockieren, z.B. Server mit viel Interprozesskommunikation.
  • Kernelfunktionen können selbst Multithreaded sein
  • geeignet für SMP

Nachteile:

  • Threadwechsel innerhalb eines Prozesses durch Kernel kostet 2 Mode Switches
  • spürbarer Overhead und höhere Kernelkomplexität. Jeder Thread benötigt Thread Control Block (TCB)
  • sprürbar langsamer bei 1 CPU

Was geschieht bei einer Kombination von KLT und ULT?

Therads werden im User Space erzeugt. Scheduling und Synchronisation geschehen hauptsächlich im User Space.

Programmierer kann zur Optimierung die Anzahl KLTs anpassen.

Threads verwenden gemeinsame Ressourcen. Was ist dabei ein Problem?

Es gibt keinen Schutz der Daten gegen unbeabsichtigten Zugriff.

Study