Questions and Answers
Was kennzeichnet ein Prozess in einem Betriebssystem?
Wie wird in vielen Betriebssystemen die Ausführungseinheit eines Prozesses realisiert?
Threads
Prozesse und Threads können unabhängig voneinander auf einem Rechner parallel ausgeführt werden.
False
In einem Prozess-Zustandsmodell können sich Prozesse unter anderem in den Zuständen new, ready, ____, blocked und exit befinden.
Signup and view all the answers
Was passiert, wenn ein Prozess blockiert ist und das Ereignis eintritt, auf das er wartet?
Signup and view all the answers
Was beinhaltet das Process Image (Prozess-Abbild)?
Signup and view all the answers
Threads ermöglichen die Entwicklung von nebenläufigen Anwendungen, die aus mehreren Ausführungsfäden bestehen.
Signup and view all the answers
Welchen Zustand erreicht ein Prozess, der momentan ausgelagert ist und ausführbereit ist, wenn das Ereignis eintritt? Der Prozess befindet sich im Zustand Suspend/_____.
Signup and view all the answers
Welche Funktion wird verwendet, um einen Thread zu beenden?
Signup and view all the answers
Was bewirkt die Funktion pthread_join(...)?
Signup and view all the answers
Was ist eine wichtige Funktion der POSIX Thread Library zur Ermittlung der eigenen Thread-ID durch einen Thread?
Signup and view all the answers
Die Multithreading ist eine konzeptionelle Erweiterung der Multiprogrammierung.
Signup and view all the answers
Was sind wesentliche Unterschiede zwischen Multithreading und __________?
Signup and view all the answers
Was ist der Zweck des Thread Control Blocks (TCB) in einem Multi-Thread-Prozessmodell?
Signup and view all the answers
Was sind einige Beispiele für Programme, die aus mehreren Threads bestehen können?
Signup and view all the answers
Die Threads in einem Prozess arbeiten unabhängig voneinander und sind in einem Konkurrenzverhältnis zueinander.
Signup and view all the answers
Warum ist die Implementierung von parallelen Abläufen mit Threads effizienter als mit Prozessen? Die Kommunikation zwischen Threads erfolgt ohne Beteiligung des _____________.
Signup and view all the answers
Ordne die folgenden Szenarien mit ihren entsprechenden Vorteilen für Multithreading:
Signup and view all the answers
Study Notes
Prozesse und Threads
- Ein Prozess ist ein Programm, das im Stadium der Ausführung ist.
- Ein Prozess ist gekennzeichnet durch:
- Systemressourcen (z.B. Speicher, geöffnete Dateien, Geräte)
- Aktueller Wert des Programmzählers und CPU-Register
- Aktuelle Werte der Variablen
- Prozesse können auch als Tasks bezeichnet werden.
- Ein Prozess ist gekennzeichnet durch:
Multiprogramming/Multitasking
- Ausführung mehrerer Programme (Prozesse) auf einem Rechner, wobei sich mehrere Prozesse eine CPU teilen.
- Auf Mehrprozessormaschinen („Multi-Core“) können mehrere Prozesse echt parallel ausgeführt werden.
- Wenn sich mehrere Prozesse eine CPU teilen müssen, spricht man von Quasi-Parallelität.
- Die Auslastung des Rechners wird erhöht, wenn Prozesse einen Großteil der Zeit mit Warten, insbesondere auf E/A-Operationen, verbringen.
Mechanismen und Strukturen für die Prozessverwaltung
- Ein Betriebssystem muss Mechanismen bereitstellen, um:
- Prozesse zu starten und zu beenden
- zu entscheiden, welcher Prozess wann (und auf welchem Prozessor/CPU) ausgeführt wird
- mehrere Prozesse simultan im Hauptspeicher zu halten
- bei konkurrierenden Zugriffen auf gemeinsame Speicherbereiche Konflikte zu vermeiden
- Ein Betriebssystem muss Strukturen implementieren, um die aktiven Prozesse zu verwalten:
- Queues (Warteschlangen)
- Prozess-Image und Prozess Control Block (PCB)
Prozess-Erzeugung
- Ein Prozess kann durch folgende Ereignisse erzeugt werden:
- Initialisierung des Systems
- Systemaufruf zur Erzeugung eines Prozesses durch einen anderen Prozess
- Benutzeranfrage
- Ein Prozess wird in der Regel durch einen anderen, bereits vorhandenen, Prozess erzeugt:
- Eltern-Prozess (Parent Process): erzeugender Prozess
- Kind-Prozess (Child Process): erzeugter Prozess
Prozess-Terminierung
- Die 4 häufigsten Ursachen für die Beendigung eines Prozesses:
- Normales Beenden (freiwillig): Der Prozess hat seine Arbeit verrichtet und ist nun fertig.
- Beenden aufgrund eines Fehlers (freiwillig): Der Prozess erkennt einen Fehler und stellt eine Anfrage an das Betriebssystem zur Beendigung.
- Beenden aufgrund eines schwerwiegenden Fehlers (unfreiwillig): Der Prozess verursacht einen schweren Fehler, so dass das Betriebssystem den Prozess beendet.
- Beenden durch einen anderen Prozess (unfreiwillig): Ein Prozess kann mittels entsprechender Systemaufrufe andere Prozesse terminieren.
Prozess-Zustandsmodell
- Das Prozess-Zustandsmodell beschreibt die möglichen Zustände, in denen sich ein Prozess befinden kann:
- new: Der Prozess wurde vom Betriebssystem erzeugt.
- ready: Der Prozess ist zur Ausführung bereit.
- running: Der Prozess wird momentan ausgeführt.
- blocked: Der Prozess wartet auf ein Ereignis.
- exit: Die Beendigung des Prozesses wurde initiiert.
- Das Prozess-Zustandsmodell beschreibt auch die möglichen Zustandsübergänge zwischen den Zuständen.
Prozess-Strukturen: Prozess-Abbild (Process Image)
- Ein Prozess-Abbild (Process Image) enthält alle Informationen, die zur Ausführung eines Prozesses durch das Betriebssystem erforderlich sind:
- Speicherinhalt des Prozesses
- Prozessattribute: Welche Attribute charakterisieren einen Prozess und Wo ist der Prozess lokalisiert?
- Ein Prozess-Abbild besteht aus:
- Code-Bereich: Programmcode und statische Daten des Prozesses
- User-Stack und Heap: lokale Variablen und dynamisch erzeugte Daten
- System Stack (auch Kernel Stack): Parameter für Systemaufrufe
Prozesskontrollblock (PCB)
- Ein Prozesskontrollblock (PCB) ist eine Datenstruktur, die von einem Betriebssystem verwendet wird, um einen Prozess zu verwalten.
- Ein PCB enthält Informationen über:
- Prozessidentifikation
- Prozess-Statusinformationen
- Prozess-Kontrollinformationen
- Ein PCB wird von einem Betriebssystem verwendet, um Prozesse zu verwalten und kontrollieren zu können.
Prozesskontrolle: Prozess-Unterbrechungen
- Prozess-Unterbrechungen:
- Eine Unterbrechung des laufenden Prozesses wird durch bestimmte Ereignisse oder Aktionen ausgelöst.
- Die Übertragung der Kontrolle an das Betriebssystem wird durch eine Unterbrechungsroutine eingeleitet.
- Es gibt 3 unterschiedliche Ursachen für den Aufruf von Unterbrechungsroutinen:
- Interrupts (Externe Ereignisse)
- Traps (auch SW-Interrupts, Exceptions)
- Systemaufruf (Supervisor-Call)### Prozesskontrolle
- Ein Systemaufruf (in Form eines SW-Interrupts oder "Trap") kann zu einer Prozess-Unterbrechung führen, die häufig blockierend ist.
- Beispiele für Interrupts:
- Periodischer Takt (Timer): Überprüfung, ob der aktuell ausgeführte Prozess sein Zeitkontingent verbraucht hat.
- E/A-Ereignis nach erfolgreicher Eingabe-/Ausgabe: Der Prozess, der auf die Beendigung der E/A-Aktion gewartet hat, wird in die "ready"-Queue verschoben.
- Speicherfehler (z.B. bei virtuellem Speicher mit Paging): Die referenzierte (virtuelle) Adresse befindet sich nicht im physischen Hauptspeicher (Page Fault).
Thread-Konzept
- Das Thread-Konzept ist ein Konzept, das in modernen Betriebssystemen zur Ausführung von Prozessen eingesetzt wird.
- Moderne Betriebssysteme unterstützen ein Ausführungskonzept, bei dem die Ausführung von Anwendungen (Prozessen) in Form von Threads stattfindet.
- Vorteile des Thread-Konzepts:
- Nebenläufige/parallele Anwendungen können entwickelt werden, die aus mehreren nebenläufigen Threads (Abarbeitungs- bzw. Ausführungsfäden) bestehen, die die Ressourcen der zugehörigen Anwendung (Prozess) gemeinsam nutzen.
- Die Kommunikation zwischen diesen Ausführungsfäden (Threads) ist erleichtert, da alle Threads eines Prozesses auf den gemeinsamen Prozess-Adressraum zugreifen können.
Zusammenhang: Prozess – Thread
- Ein Prozess besitzt Ressourcen (virtueller Adressraum, Process Image, etc.) und ist eine Ausführungseinheit (mit Ausführungszuständen und Priorität).
- Ein Thread ist eine Ausführungseinheit (Faden) innerhalb eines Prozesses, der den Code der jeweiligen Threads ausführt.
- Gemeinsamer Adressraum bei Multithreading: Alle Threads eines Prozesses nutzen den gleichen Adressraum und können auf die gleichen Daten und Ressourcen zugreifen.
Singlethreading vs. Multithreading
- Singlethreading: Ein Prozess besitzt genau einen Thread.
- Multithreading: Ein Prozess kann mehrere Threads haben, die jeweils den Code der jeweiligen Threads ausführen.
- Vorteile von Multithreading:
- Die Generierung eines neuen Threads in einem existierenden Prozess ist in einigen Betriebssystemen schneller als die Generierung eines neuen Prozesses.
- Der Wechsel zwischen den Threads eines Prozesses geht i.d.R. schneller als ein Prozesswechsel.
- Die Kommunikation zwischen den Threads eines Prozesses verläuft häufig ohne Beteiligung des Kernels.
Multithreading – Vorteile
- Vorteile des Multithreading-Programmiermodells:
- Parallele Ausführung von Anwendungen auf mehreren CPUs
- Quasi-parallele Ausführung mehrerer, z.T. blockierender, Abläufe innerhalb einer Anwendung
- Die Anwendung kann im Hintergrund gleichzeitig mit mehreren unterschiedlichen Peripheriegeräten kommunizieren
Multithreading – Herausforderungen
- Herausforderungen bei Multithreading:
- Datenkonsistenz: Mehrere Threads können auf dieselben Daten zugreifen, daher müssen Race Conditions vermieden werden.
- Zugriff auf beschränkte Betriebsmittel: Der Zugriff auf Geräte, Dateien etc. muss zeitlich koordiniert werden, um Zugriffkonflikte zu vermeiden.
- Zusammenarbeit der Threads: Die Threads müssen koordiniert werden, um einen geordneten Ablauf der nebenläufigen Ausführungspfade zu gewährleisten.
Multithreading – Thread-Synchronisation
- Notwendigkeit der Thread-Synchronisation:
- Alle Threads eines Prozesses teilen sich den Adressraum und die Ressourcen des zugehörigen Prozesses.
- Die Threads müssen synchronisiert werden, um sich gegenseitig nicht zu stören oder gemeinsame Datenstrukturen zu beschädigen.
- Die Verfahren zur Synchronisation von Threads sind mit den Verfahren, die für Prozesse zum Einsatz kommen, weitestgehend identisch.
Fallbeispiel: Thread-Konzept im Linux-Betriebssystem
- Die POSIX Thread-Library für C/C++ erlaubt die Implementierung von multithreaded Anwendungen für unterschiedliche Betriebssysteme, die Multithreading und die POSIX-Schnittstelle unterstützen.
- Funktionen der POSIX Thread-Library:
- pthread_create: Erzeugt einen neuen Thread.
- pthread_exit: Beendet einen Thread.
- pthread_cancel: Beendet einen Thread durch einen anderen Thread.
- pthread_join: Wartet, bis der angegebene Thread beendet ist.
- pthread_self: Ermittelt die eigene Thread-ID durch einen Thread.
- pthread_equal: Ermittelt, ob zwei Thread-IDs identisch sind.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Erfahren Sie, wie Betriebssysteme Programme ausführen und lernen Sie, die Begriffe Prozess und Thread zu unterscheiden.