Was sind Prozesse und was sind Threads?
Das Prozess- und Threadmodell sind wesentliche Konzepte der Betriebssystementwicklung
Prozess sind Betriebssystemmittel, die verwaltet werden müssen
Threads werden je nach Implementierung vom Betriebssystem oder einer Laufzeitumgebung verwaltet.
Die Informationen von Prozessen und Threads werden in PCB bzw. TCB verwaltet.
Was ist ein Thread?
Prozess besitzt Ausführungsfaden (thread)
Thread: werden für die Ausführung auf CPU verwaltet
Threads besitzen:
Befehlszähler (PC)
Register
Stack
=> mehrere Fäden innerhalb eines Prozesses
Was ist ein Prozess?
Traditionelles Modell:
Prozess hat
einen Adressraum
einen Ausführungsfaden
Manchmal wünschenswert:
mehrere „Ausführungsfäden“ parallel zu haben
wie eigenständige Prozesse, aber gemeinsamer Adressraum
Ein Prozess bündelt zusammengehörige Ressourcen.
Ressourcen:
Adressraum
Offene Files
Kinderprozesse
Accounting
Was ist das Prozess-Modell?
Auftrag ist der Auslöser eines Arbeitsvorgangs für das Betriebssystem
Prozess bezeichnet die gesamte Zustandsinformation eines laufenden Programms
Jedes Programm wird in einem Prozess ausgeführt
Programm ist eine statische Verfahrensvorschrift für die Verarbeitung
Prozess ist konkrete Instanziierung eines Programms innerhalb eines Rechners
Was ist Multitasking und Multiprocessing?
Multitasking ist die logische Erweiterung von Multiprogramming.
Die CPU bearbeitet viele Jobs und switched diese Jobs entsprechend dem eingestellten Quantum recht schnell.
Multiprocessing bezeichnet ein System mit mehreren CPUs bzw. Kerne die mehrere Prozesse parallel bearbeiten können
Was ist Paralellität? Was ist Nebenläufigkeit?
Nebenläufigkeit bezeichnet die Fähigkeit eines Systems, Prozesse voneinander unabhängig zu bearbeiten bzw. auszuführen.
Parallelität bezeichnet die tatsächliche Ausführung eines Prozesses auf mehreren CPUs.
Nebenläufigkeit ist der allgemeinere Begriff.
Was sind Virtuelle und reale Prozesse?
Das Betriebssystem ordnet im Multiprogramming jedem Prozess ein virtueller Prozessor zu
Bei echter Parallelarbeit wird jedem virtuellem Prozessor jeweils ein realer Prozessor zugeordnet
Im quasi-parallelen oder nebenläufigen Betrieb wird jedem realen Prozessor für eine gewisse Zeit ein virtueller Prozessor zugeordnet.
Eine Prozessumschaltung erfolgt nach einer vorgegebenen Strategie
Was bedeutet Prozesszustände?
Prozesse, die bearbeitet werden sollen, müssen verwaltet werden
Es müssen Ressourcen zugeteilt werden
Es müssen üblicherweise mehrere Zustände durchlaufen werden
Die einzelnen Zustände modellieren das Verhalten im System
Was ist das Prozesszustandsmodell?
Prozesse warten ...
auf den Prozessor (bereit)
auf eine Nachricht (blockiert)
auf ein Zeitsignal (blockiert)
auf Daten des I/O-Geräts (blockiert)
Was ist ein Prozesslebenszyklus?
Ein Prozess wird erzeugt:
Systemcall fork(Unix)
CreateProzess (Windows)
Der Programmcode und die Daten werden in den Speicher geladen.
Das Betriebssystem generiert eine eindeutige Identifikation (PID: Process Identification).
Ein PCB wird in der Prozesstabelle angelegt.
Übergang von (nicht existent) -> bereit (1)
Das Betriebssystem wählt einen Prozess (bereit) aus und dieser fängt seine Berechnung an (aktiv running). (2)
Der Prozess wird blockiert (warten auf Input, Betriebsmittel). Er geht von „aktiv running“ in den Zustand „Wartend“. (3)
Der Blockierungsgrund ist aufgehoben (Betriebsmittel verfügbar) Der Prozess geht von „Wartend“ in den Zustand „bereit“. (4)
Das Betriebssystem entzieht dem Prozess die CPU und stellt ihn zurück in den Zustand (bereit). (5)
Der Prozess terminiert. Er geht von „aktiv running“ in den Zustand „nicht-ex“.(6)
PCB wird aus der Tabelle entfernt
PID wird gelöscht.
Was ist ein Prozesskontext?
Was ist ein Kontextwechsel?
Prozesskontext
Kontextwechsel
Wenn das Betriebssystem ein Prozess ablöst, muss der Hardware-Kontext des zu suspendierenden Prozesses für eine neue Aktivierung aufbewahrt werden. (PCB)
Der Hardware-Kontext des neu zu aktivierenden Prozesses wird aus seinem PCB in die Ablaufumgebung geladen.
Prozessabarbeitung:
Vor- und Nachteile von Threads?
Vorteile:
Prozesswechselzeiten sind kürzer als zwischen normalen Prozessen (kleinerer Kontext, keine Umschaltung zwischen unterschiedlichen Betriebsmittelausstattungen)
Gemeinsame Nutzung von Betriebsmitteln wird erleichtert (insbesondere eines gemeinsamen Speicherbereichs) Beispiele:
Tabellenkalkulationsprogramm mit Subprozessen für Eingabe und Berechnung
Serverprozesse in Client/Server-Anwendungen: Bereitstellung bestimmter Betriebsmittel
Mit Wartezeiten verbundene Ein/Ausgabe-Aufträge können von eigenen Subprozessen abgewickelt
Nachteile:
Koordination der Subprozesse und Zugriff auf gemeinsame Betriebsmittel nur durch Programmierer
Ohne Nutzung von Wartezeiten für Ein-/Ausgabe nehmen sich Subprozesse nur gegenseitig Rechenzeit weg, ohne den Gesamtprozessablauf zu beschleunigen
Ein Wechsel zwischen Subprozessen verschiedener Prozesse kostet genauso viel Zeit wie ein normaler Prozesswechsel.
Wie werden Threads implementiert (2 Möglichkeiten)?
Es gibt zwei Möglichkeiten Threads zu implementieren:
Implementieren auf Benutzerebene
Eine Threadbibliothek übernimmt das Scheduling und das Umschalten
Threadtabelle wird im Benutzerspeicher verwaltet
Implementieren auf Kernelebene
Verwalten im Kernelmodus
Kernel stellt die Methoden bereit
Keine spezielle Threadbibliothek erforderlich
Threadtabelle wird im Kernelspeicher verwaltet
Was macht Prozesskoordinierung aus?
Faktoren:
Konkurrenz
mind. zwei Prozesse
ein Betriebsmittel
exklusiv
Kritischer Abschnitt
exklusiver Zugriff
keine Parallelität
Problem:
(„Race conditions“: kontextbedingt, nichtwiederholbare Effekte durch „überholende“ Prozesse)
a) Unterbrechung beim Aushängen von B durch Einhängen von A
Prozess A ist weg!
b) Unterbrechung beim Einhängen von A durch Aushängen von B
Prozess B bleibt erhalten!
Was ist Konkurrenz (Anforderungen)?
Zwei Prozesse dürfen nicht gleichzeitig in ihren kritischen Abschnitten sein (mutual exclusion).
Jeder Prozess, der am Eingang eines kritischen Abschnitts wartet, muss irgendwann den Abschnitt auch betreten dürfen: kein ewiges Warten darf möglich sein (fairness condition).
Ein Prozess darf außerhalb eines kritischen Abschnitts einen anderen Prozess nicht blockieren.
Es dürfen keine Annahmen über die Abarbeitungsgeschwindigkeit oder Anzahl der Prozesse bzw. Prozessoren gemacht werden.
Welche 4 Bedingungen müssen bei Konzurrenz gelten?
Keine zwei Prozesse gleichzeitig in kritischem Abschnitt
Keine Annahmen über relative Geschwindigkeit oder Anzahl der CPUs
Kein Prozess außerhalb seines kritischen Abschnitts darf andere Prozesse behindern oder blockieren
Kein Prozess darf ewig auf seinen Eintritt in den kritischen Abschnitt warten
Was ist Semaphore?
(DEUTLICH GEKÜRZT)
Höherwertiges Konzept zur Lösung des Mutual-ExclusionProblems.
verwalten intern
eine Warteschlange für Prozesse bzw. Threads, die am Eingang warten müssen.
Einen Semaphorzähler, der angibt wie viele Prozesse in den kritischen Abschnitt dürfen.
Für den Eintritt und für den Austritt gibt es zwei Operation
P(): wird beim Eintritt in den kritischen Abschnitt aufgerufen. Der Semaphorzähler wird dabei um 1 vermindert, sofern er größer als 0 ist. Wenn der Zähler 0 ist, wird der Zutritt verwehrt.
V(): wird beim Verlassen des kritischen Abschnittes aufgerufen. Der Semaphorzähler wird um 1 erhöht.
Passieren P(s) waitFor (signal)
Aufruf vor kritischem Abschnitt, warten falls besetzt
Verlassen V(s) send (signal)
Aufruf nach dem kritischen Abschnitt, Aktivieren eines wartenden Prozesses
Voraussetzung/Forderung:
„Atomare Aktion“:
Entweder vollständige Transaktion oder gar keine! („roll back“ bei Abbruch)
Es gibt 2 Typen von Semaphoren
Binäre Semaphore (Mutex): mit zwei Zustände (locked, unlocked).
Zählsemaphore: Dies ist der allgemeine Semaphor mit beliebig vielen Zuständen.
Beispiele:
Ereignissynchronisation
Reihenfolge hängt von Ereignissen ab
Interprozesskommunikation (IPC)
Austausch von Ergebnissen
Was sind Kommunikationsformen und wichtige Mechanismen bei IPC (Interprocess Communication)?
Kommunikationsformen:
verbindungsorientiert versus verbindungslos
speicherbasiert versus nachrichtenbasiert
synchron versus asynchron
halbduplex versus vollduplex
Varianten der Empfängeradressierung
Wichtige Mechanismen
Gemeinsame Nutzung von Datenbereiche
innerhalb eines Prozesses
über Shared Memory (prozessübergreifend)
über externe Speicherobjekte wie Dateien
Kommunikation
Pipes und FIFOs
Message Queues
Sockets
Was bedeutet verbindungsorientiert oder verbindungslos?
verbindungsorientiert
Zuerst wird ein logischer Verbindungskanal aufgebaut und ein Verbindungskontext ausgetauscht
z.B. Adressinformationen
Kommunikationsablauf
Verbindungsaufbau
Datenübertragung
Verbindungsabbau
verbindungslos
Es wird keine logische Verbindung aufgebaut.
Die Nachrichten enthalten immer die vollständige Adressierungsinformation
Was bedeutet Synchron und Asnchron?
synchron:
Sender und Empfänger blockieren, um sich abzustimmen
Sender sendet eine Anfrage und wartet bis der Empfänger antwortet
Zweiwegkommunikation
asynchron
Sender und Empfänger blockieren sich nicht gegenseitig
Sender sendet eine Anfrage und wartet nicht auf den Empfänger, sondern arbeitet weiter
Puffer zum Speichern der Anfrage notwendig
Was ist Asynchrone nachrichtenbasierte Kommunikation?
Publish-Subscribe
Publisher sendet eine Nachricht bestimmten Typs an mehrere Interessenten (Subscriber)
Ein Empfänger kann sich als Subscriber für ein oder mehrere Themen registrieren
Point to Point
Nachricht von einem Partner zu einem anderen Partner über eine Warteschlange
Was sind Varianten der Empfänger Adressierung?
Bei der Nachrichten orientierten Kommunikation unterscheidet man verschiedene Adressierungsarten
Unicast(1:1):
Ein Partner kommuniziert mit genau einem Partner
Multicast(1:n):
Ein Sender adressiert eine Gruppe von Empfängern.
Anycast(1:1..n):
Ein Sender adressiert eine Gruppe von Empfänger. Aber mindestens einer der Empfänger nimmt die Nachricht entgegen.
Broadcast:
Diese Adressierung sendet Nachrichten an alle möglichen Empfängern (Beziehung1:m, wobei m die Anzahl aller möglichen Partner ist)
Was ist Speicherbasierte Kommunikation?
Kommunikation von Threads innerhalb eines Prozesses
Synchronisierungsmaßnahmen nötig (Locks, Semaphore)
Kommunikation zwischen Prozessen über Shared Memory
Kommunikation zwischen Prozessen über Dateien
Was ist Nachrichtenbasierte Kommunikation?
Prozess übergreifende Kommunikation.
Aufbau eines Kommunikationskanals und kommunizieren direkt miteinander
Beispiele: Pipes, FIFOs, Sockets, Message Queues
Pipes
Einweg-Kommunikationskanäle, die es einem Prozess erlauben mithilfe des Betriebssystem einem anderen Prozess Daten bzw. Nachrichten zu schicken.
Sie werden zur Laufzeit erzeugt und nach Beendigung wieder zerstört.
Benannte Pipes
werden wie Dateien behandelt werden.
Sie erhalten einen Namen und können von beliebigen Prozessen, die eine Berechtigung haben, verwendet werden.
Sie überleben einen Prozess und sogar einen Neustart des Betriebssystems.
Nachrichtenwarteschlagen
Mehrere Prozesse können miteinander kommunizieren
Point-to-Point- oder Publisher-Subscribe-Kommunikation möglich
Kommunikation auf Basis abgegrenzter Nachrichten mit definierter Länge
Kommunikation von entfernten Prozessen auf Basis des Internets mittels:
TCP (verbindungsorientiert)
UDP (verbindungslos)
Prozesse werden über die IP-Adresse und Portnummer identifiziert.
Basis der Kommunikation ist typischerweise RPC
Last changeda year ago