• Keine Ergebnisse gefunden

2 Prozesse und Threads

N/A
N/A
Protected

Academic year: 2022

Aktie "2 Prozesse und Threads"

Copied!
51
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Roland Wism ¨uller

Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.dde Tel.: 0271/740-4050, B ¨uro: H-B 8404

Stand: 4. November 2021

Betriebssysteme I

WS 2021/2022

(2)

Betriebssysteme I

WS 2021/2022

2 Prozesse und Threads

(3)

2 Prozesse und Threads ...

➥ Begriffskl ¨arung

➥ Thread-/Prozeßmodell und -zust ¨ande

➥ Implementierung von Prozessen und Threads

➥ Implementierungsvarianten f ¨ur Threads

➥ Thread-Schnittstellen

➥ Tanenbaum 2.1 - 2.2

➥ Stallings 3.1 - 3.2

(4)

Roland Wism ¨uller

Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.dde Tel.: 0271/740-4050, B ¨uro: H-B 8404

Stand: 4. November 2021

Betriebssysteme I

WS 2021/2022

04.11.2021

(5)

2.1 Begriffskl ¨arung

➥ Ein Prozeß ist ein Programm in Ausf ¨uhrung

➥ Wunsch: ein Rechner soll mehrere Programme

”gleichzeitig“

ausf ¨uhren k ¨onnen

➥ Konzeptuell: jeder Prozeß

wird durch eine eigene, virtuelle CPU ausgef ¨uhrt

nebenl ¨aufige (quasi-parallele) Abarbeitung der Prozesse

hat seinen eigenen (virtuellen) Adreßraum (

”Speicher“, ☞ 6)

➥ Real: (jede) CPU schaltet zwischen den Prozessen hin und her

Multiprogrammierung, Mehrprogrammbetrieb

Umschalten durch Umladen der CPU-Register (incl. PC)

Beachte: Annahmen ¨uber die Geschwindigkeit der Ausf ¨uhrung sind nicht zul ¨assig

(6)

2.1 Begriffskl ¨arung ...

Prozeß Prozeß Prozeß Prozeß Prozeß

CPU reale CPU

virtuelle

CPU virtuelle Prozeß

CPU virtuelle

Modell Realisierung

(7)

2.1 Begriffskl ¨arung ...

Ein (klassischer) Prozeß besitzt zwei Aspekte:

➥ Einheit des Ressourcenbesitzes

eigener (virtueller) Adreßraum

allgemein: Besitz / Kontrolle von Ressourcen (Hauptspeicher, Dateien, E/A-Ger ¨ate, ...)

BS ¨ubt Schutzfunktion aus

➥ Einheit der Ablaufplanung / Ausf ¨uhrung

Ausf ¨uhrung folgt einem Weg (Trace) durch ein Programm

verzahnt mit der Ausf ¨uhrung anderer Prozesse

BS entscheidet ¨uber Zuteilung des Prozessors

➥ vgl. Definition aus 1.5.1

(8)

2.1 Begriffskl ¨arung ...

In heutigen BSen: Trennung der Aspekte

Prozeß: Einheit des Ressourcenbesitzes und Schutzes

Thread: Einheit der Ausf ¨uhrung (Prozessorzuteilung)

Ausf ¨uhrungsfaden, leichtgewichtiger Prozeß

➥ Damit: innerhalb eines Prozesses auch mehrere Threads m ¨oglich

d.h., Anwendungen k ¨onnen mehrere nebenl ¨aufige Aktivit ¨aten besitzen

Prozeß 1 Prozeß 2 Prozeß 3

3 Threads in einem Prozeß Thread

Prozeß

Thread 3 (klassische) Prozesse

(9)

2.1 Begriffskl ¨arung ...

Vorteile bei der Nutzung mehrerer Threads in einer Anwendung

➥ Nebenl ¨aufige Programmierung m ¨oglich: mehrere Kontrollfl ¨usse

➥ Falls ein Thread auf Ein-/Ausgabe wartet: die anderen k ¨onnen weiterarbeiten

➥ K ¨urzere Reaktionszeit auf Benutzereingaben

➥ Bei Multiprozessor-Systemen (bzw. mit Hyperthreading):

echt parallele Abarbeitung der Threads m ¨oglich

(10)

2.1 Begriffskl ¨arung ...

Beispiel: GUI-Programmierung

➥ Sequentielles Programm (1 Thread):

while (true) {

ComputeStep(); // z.B. Animationsschritt if (QueryEvent()) { // Ereignis angekommen?

e = ReceiveEvent(); // Ereignis abholen ProcessEvent(e); // und bearbeiten }

}

Verzahnung von Berechnung und Ereignisbehandlung

Polling von Ereignissen: wann / wie oft?

(11)

2.1 Begriffskl ¨arung ...

Beispiel: GUI-Programmierung ...

➥ Nebenl ¨aufiges Programm mit 2 Threads:

Thread 1:

while (true) {

ComputeStep();

}

Thread 2:

while (true) {

e = ReceiveEvent();

ProcessEvent(e);

}

einfachere Programmstruktur

aber: Zugriff auf gemeinsame Variable erfordert Synchroni- sation (☞ 3.1)

(12)

2.1 Begriffskl ¨arung ...

Realisierung von Threads

➥ Heute meist direkt durch das BS

andere Alternativen: siehe 2.5

➥ Konzeptuell: jeder Thread

wird durch eine eigene, virtuelle CPU ausgef ¨uhrt

nebenl ¨aufige (quasi-parallele) Abarbeitung der Threads

nutzt alle anderen Ressourcen seines Prozesses (u.a. den virtuellen Adreßraum) gemeinsam mit dessen anderen

Threads

➥ Real: (jede) CPU schaltet zwischen den Threads hin und her

Multithreading

Umschalten durch Umladen der CPU-Register (incl. PC)

(13)

2.1 Begriffskl ¨arung ...

CPU virtuelle

CPU virtuelle Prozeß

CPU virtuelle

Prozeß

CPU reale

Prozeß Prozeß

Modell Realisierung

(14)

2.2 Thread-/Prozeßzust ¨ande

Ein einfaches Thread-Modell

Prozessor Warteschlange

Start Ende

Hier warten

rechenbereite deaktiviert werden

hinten "anstellen"

Threads

Thread kann

=> er muß sich wieder Nur einer kann rechnen

➥ Anmerkung: alle Modelle in diesem Abschnitt gelten in der selben Form auch f ¨ur klassische Prozesse (mit genau einem Thread)

(15)

2.2 Thread-/Prozeßzust ¨ande

Ein einfaches Thread-Modell

Nur zwei können rechnen

Prozessor Warteschlange

Start Ende

Hier warten

rechenbereite deaktiviert werden

hinten "anstellen"

Threads

Thread kann

=> er muß sich wieder

➥ Anmerkung: alle Modelle in diesem Abschnitt gelten in der selben Form auch f ¨ur klassische Prozesse (mit genau einem Thread)

(16)

2.2 Thread-/Prozeßzust ¨ande ...

Ein einfaches Thread-Modell ...

Prozessor Warteschlange

Start Ende

Zustandsgraph eines Threads

bereit rechnend

Start Ende

wird tatsächlich möchte rechnen, Entzug der CPU

Zuteilung der CPU

Thread

darf aber nicht

Thread gerade ausgeführt

(17)

2.2 Thread-/Prozeßzust ¨ande ...

Zustandsgraph f ¨ur ein erweitertes Thread-Modell

bereit rechnend

Zuteilung der CPU

Entzug der CPU

Ende Start

(18)

2.2 Thread-/Prozeßzust ¨ande ...

Zustandsgraph f ¨ur ein erweitertes Thread-Modell

(eigene Warteschlange, evtl. pro Ereignis) Threads, die z.B. auf E/A warten,

können nicht ausgeführt werden blockiert

Warten auf Ereignis

tritt ein Ereignis

bereit rechnend

Zuteilung der CPU

Entzug der CPU

Ende Start

(19)

2.2 Thread-/Prozeßzust ¨ande ...

Zustandsgraph f ¨ur ein erweitertes Thread-Modell ...

Die Verwaltungsdatenstruktur für

(z.B. zum Auslesen des Exit−Status) Thread ist terminiert, Ver−

waltungsdaten sind noch vorhanden den Thread ist bereits

angelegt, der Thread

selbst existiert aber noch nicht

beendet

neu Start Ende

Löschung Erzeugung

blockiert

Warten auf Ereignis

tritt ein Ereignis

bereit rechnend

Zuteilung der CPU

Entzug der CPU

(20)

2.2 Thread-/Prozeßzust ¨ande ...

Eine Warteschlange f ¨ur alle blockierten Threads

Warten auf Ereignis Warteschlange für

blockierte Threads

Prozessor Start

Warteschlange für

Ende

Deaktivierung bereite Threads

(21)

2.2 Thread-/Prozeßzust ¨ande ...

Eine Warteschlange pro Ereignis

Warteschlange für Ereignis 1

Warteschlange für

...

Ereignis 2

Warten auf Ereignis 2 Warten auf Ereignis 1 Prozessor

Start

Warteschlange für

Ende

Deaktivierung bereite Threads

(22)

2.3 Erzeugung und Terminierung von Prozessen

Gr ¨unde f ¨ur Prozeßerzeugung:

➥ Initialisierung des Systems

Hintergrundprozesse (Daemons) f ¨ur BS-Dienste

➥ Benutzeranfrage

Interaktive Anmeldung, Start eines Programms

➥ Erzeugung durch Systemaufruf eines bestehenden Prozesses

➥ Initiierung eines Batch-Jobs

in Mainframe-BSen

➥ Technisch wird ein neuer Prozeß (fast) immer durch einen Systemaufruf (z.B. fork bzw. CreateProcess) erzeugt

f ¨uhrt zu Prozeßhierarchie

(23)

2.3 Erzeugung und Terminierung von Prozessen ...

Beispiel: Prozeßhierarchie unter UNIX

Shell Shell

Init Initialisierungsprozeß

sshd

Compiler Editor

Login Login

Benutzer

interpreter (Shells) pro Mehrere Kommando−

ein Login−Prozeß Für jeden Benutzer

lpd Daemons

QSort

QSort QSort

Anwendungen

(24)

2.3 Erzeugung und Terminierung von Prozessen ...

Gr ¨unde f ¨ur Prozeßterminierung:

➥ Freiwillig

durch Aufruf von z.B. exit bzw. ExitProcess

normal oder wegen Fehler

➥ Unfreiwillig (Abbruch durch BS)

wegen schwerwiegender Fehler, z.B. Speicher ¨uberschreitung, Ausnahme, E/A-Fehler, Schutzverletzung

durch andere (berechtigte) Prozesse, ¨uber Systemaufruf (z.B.

kill bzw. TerminateProcess)

Teilweise ist noch eine Reaktion des Prozesses auf das Ereignis m ¨oglich (☞ 3.2.4: Signale)

(25)

2.4 Implementierung von Prozessen und Threads

➥ BS pflegt Prozeßtabelle mit Informationen ¨uber alle Prozesse

der Eintrag f ¨ur einen Prozeß heißt Prozeßkontrollblock

➥ Analog: Threadtabelle f ¨ur alle Threads

Eintrag: Threadkontrollblock

➥ Prozeßadressraum, Prozeßkontrollblock und Threadkontroll- bl ¨ocke beschreiben einen Prozeß vollst ¨andig

➥ Typische Elemente des Prozeßkontrollblocks:

Prozeßidentifikation, Zustands- und Ressourceninformation

➥ Typische Elemente des Threadkontrollblocks:

Threadidentifikation, Zustandsinformation

Scheduling- und Prozessorstatus-Information

(26)

2.4 Implementierung von Prozessen und Threads ...

Inhalt des Prozeßkontrollblocks

➥ Prozeßidentifikation

Kennung des Prozesses und des Elternprozesses

Benutzerkennung

Liste der Kennungen aller Threads

➥ Zustandsinformation

Priorit ¨at, verbrauchte CPU-Zeit, ...

➥ Verwaltungsinformation

Daten f ¨ur Interprozeßkommunikation (☞ 3)

Prozeßprivilegien

Tabellen f ¨ur Speicherabbildung (Speicherverwaltung, ☞ 6)

Ressourcenbesitz und -nutzung

offene Dateien, Arbeitsverzeichnis, ...

(27)

2.4 Implementierung von Prozessen und Threads ...

Inhalt des Threadkontollblocks

➥ Threadidentifikation

Kennung des Threads

Kennung des zugeh ¨origen Prozesses

➥ Scheduling- und Zustandsinformation

Threadzustand (bereit, rechnend, blockiert, ...)

ggf. Ereignis, auf das der Thread wartet

Priorit ¨at, verbrauchte CPU-Zeit, ...

➥ Prozessorstatus-Information

Datenregister

Steuer- und Statusregister: PC, PSW, ...

Kellerzeiger (SP)

(28)

2.4 Implementierung von Prozessen und Threads ...

Elemente von Prozessen und Threads

Elemente pro Prozeß Elemente pro Thread Adreßraum Befehlsz ¨ahler

ge ¨offnete Dateien Register Kindprozesse Keller

Signale Zustand (bereit, ...) Privilegien

...... genauer: Kellerzeiger

➥ (Bei Verwendung h ¨oherer Programmiersprachen:

lokale Variable sind pro Thread, globale pro Prozeß)

(29)

2.4 Implementierung von Prozessen und Threads ...

Ablauf einer Prozeßerzeugung

➥ Eintrag mit eindeutiger Kennung in Prozeßtabelle erzeugen

➥ Zuteilung von Speicherplatz an den Prozeß

f ¨ur Programmcode, Daten, und Keller

(siehe sp ¨ater: 6. Speicherverwaltung)

➥ Initialisierung des Prozeßkontrollblocks

Ressourcen evtl. von Elternprozeß geerbt

➥ Erzeugung und Initialisierung eines Threadkontrollblocks

PC und SP (und alle anderen Register)

Threadzustand: bereit

Prozeß startet mit genau einem Thread

➥ Einh ¨angen des Threads in die Bereit-Warteschlange

(30)

2.4 Implementierung von Prozessen und Threads ...

Ablauf eines Threadwechsels

1. Prozessorstatus im Threadkontrollblock sichern

PC, PSW, SP, andere Register

2. Thread- und Prozeßkontrollblock aktualisieren

Threadzustand, Grund der Deaktivierung, Buchhaltung, ...

3. Thread in entsprechende Warteschlange einreihen

4. N ¨achsten bereiten Thread ausw ¨ahlen (☞ 5. Scheduling) 5. Threadkontrollblock des neuen Threads aktualisieren

Zustand auf

”rechnend“ setzen

6. Falls neuer Thread in anderem Prozess liegt:

Aktualisierung der Speicherverwaltungsstrukturen (☞ 6) 7. Prozessorstatus aus neuem Threadkontrollblock laden

(31)

2.4 Implementierung von Prozessen und Threads ...

Anmerkungen

➥ Beim Threadwechsel innerhalb desselben Prozesses entf ¨allt die Aktualisierung der Speicherverwaltungsstrukturen

Threads im selben Prozeß haben gemeinsamen Speicher

➥ BS (Scheduler) entscheidet direkt, welcher Thread als n ¨achstes rechnen soll

falls n ¨otig, wird dann auch der Prozeß mit umgeschaltet

Scheduler kann/sollte die Zuordnung von Threads zu Prozessen bei der Entscheidung ber ¨ucksichtigen

z.B. wegen unterschiedlicher Kosten

(32)

2.4 Implementierung von Prozessen und Threads ...

Wann erfolgt ein Threadwechsel?

➥ Threadwechsel kann immer dann erfolgen, wenn BS die Kontrolle erh ¨alt:

bei Systemaufruf (z.B. E/A)

Thread gibt Kontrolle (d.h. Prozessor) freiwillig ab

bei Ausnahme (z.B. unzul ¨assigem Befehl)

Prozeß wird ggf. beendet

evtl. auch Behandlung der Ausnahme durch BS

bei Interrupt (z.B. E/A-Ger ¨at, Timer)

Behandlung des Interrupts erfolgt im BS

periodischer Timer-Interrupt stellt sicher, daß kein Thread die CPU monopolisieren kann

(33)

Roland Wism ¨uller

Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.dde Tel.: 0271/740-4050, B ¨uro: H-B 8404

Stand: 4. November 2021

Betriebssysteme I

WS 2021/2022

11.11.2021

(34)

2.4 Implementierung von Prozessen und Threads ...

Ablauf beim Systemaufruf

➥ Durch Hardware: Einsprung ins BS (Systemmodus)

➥ Ablauf im BS:

Sichern des gesamten Prozessorstatus (1)

Ausf ¨uhrung bzw. Initiierung des Auftrags

dabei je nach Auftrag Thread in Zustand

”bereit“ oder in Zustand

”blockiert“ setzen (2,3)

Sprung zum Scheduler (4-7)

Aktivieren eines (anderen) Threads

dieser Thread wird nach R ¨uckkehr in den Benutzer- modus fortgesetzt

(35)

2.4 Implementierung von Prozessen und Threads ...

Ablauf bei Ausnahme

➥ Durch Hardware: Einsprung ins BS (Systemmodus)

➥ Ablauf im BS:

Sichern des gesamten Prozessorstatus (1)

je nach Art der Ausnahme:

Beenden des Prozesses (2)

Blockieren des Threads (2,3)

(z.B. bei Seitenfehler, ☞ 6.3.2: dyn. Seitenersetzung)

Behebung der Ursache der Ausnahme (2,3)

Sprung zum Scheduler (4-7)

(36)

2.4 Implementierung von Prozessen und Threads ...

Ablauf bei Interrupt

➥ Durch Hardware: Einsprung ins BS (Systemmodus)

➥ Ablauf im BS:

Sichern des gesamten Prozessorstatus (1)

aktuellen Thread auf

”bereit“ setzen (2,3)

Ursache der Unterbrechung ermitteln

Ereignis (z.B. Ende der E/A) entsprechend behandeln

evtl. blockierte Threads wieder auf

”bereit“ setzen (2,3)

Sprung zum Scheduler (4-7)

(37)

2.5 Realisierungsvarianten f ¨ur Threads

Realisierung durch BS-Kern

Threadtabelle Prozeßtabelle Betriebssystem

Prozessor System−

modus modus Benutzer−

Prozeß 1 Prozeß 2

➥ Heute g ¨angigste Realsierungsvariante

(38)

2.5 Realisierungsvarianten f ¨ur Threads ...

Realisierung durch BS-Kern: Diskussion

➥ Vorteile:

bei Blockierung eines Threads kann BS einen anderen Thread desselben Prozesses ausw ¨ahlen

bei Mehrprozessorsystemen: echte Parallelit ¨at innerhalb eines Prozesses m ¨oglich

➥ Nachteil: hoher Overhead

Threadwechsel ben ¨otigt Moduswechsel zum BS-Kern

Erzeugen, Beenden, etc. ben ¨otigt Systemaufruf

(39)

2.5 Realisierungsvarianten f ¨ur Threads ...

Realisierung im Benutzeradreßraum

Prozeßtabelle Laufzeitsystem

Threadtabelle Benutzer−

modus

System−

modus

Prozeß 1 Prozeß 2

Betriebssystem

Prozessor

➥ Genutzt in fr ¨uhen Thread-Implementierungen

(40)

2.5 Realisierungsvarianten f ¨ur Threads ...

Realisierung im Benutzeradreßraum: Diskussion

➥ Vorteile:

keine Unterst ¨utzung durch BS notwendig

schnelle Threaderzeugung und Threadwechsel

z.B. Zeit f ¨ur Erzeugung (BS: Solaris, CPU: Sparc2; alt!) Benutzer-Thread Kernel-Thread Prozess

52 µs 350 µs 1700 µs

individuelle Scheduling-Algorithmen m ¨oglich

➥ Nachteile:

blockierender Systemaufruf blockiert alle Threads

macht eine Hauptmotivation f ¨ur Threads zunichte

Threads m ¨ussen Prozessor i.d.R. freiwillig abgeben

Threadwechsel erfolgt durch Bibliotheksfunktion

(41)

2.5 Realisierungsvarianten f ¨ur Threads ...

Hybride Realisierung

Laufzeitsystem

Prozeßtabelle

Threadtabelle

Threadtabelle Benutzer−

modus

System−

modus

Prozeß 1 Prozeß 2

Kernel−Threads Betriebssystem

Prozessor

Benutzer−Threads

➥ Z.B. in alten Versionen von Solaris

➥ Heute: f ¨ur Programme mit sehr vielen nebenl ¨aufigen Aktivit ¨aten

(42)

2.6 Schnittstellen zur Nutzung von Threads

➥ Alle heute g ¨angigen BSe unterst ¨utzen (Kernel-)Threads

➥ Anwendungen nutzen jedoch i.d.R. nicht die Systemaufrufe, sondern h ¨ohere Programmierschnittstellen

➥ Beispiele:

POSIX Threads (Programmierbibliothek)

Java Threads (Sprachkonstrukt)

(43)

2.6 Schnittstellen zur Nutzung von Threads ...

POSIX Threads (PThreads)

➥ IEEE 1003.1c: Standardschnittstelle zur Programmierung mit Threads

(weitestgehend) betriebssystemunabh ¨angig

in fast allen PC/Server-BSen verf ¨ugbar

➥ Programmiermodell:

bei Programmstart: genau ein (Master-)Thread

Master-Thread erzeugt andere Threads und wartet auf deren Beendigung

Prozeß terminiert bei Beendigung des Master-Threads

(44)

2.6 Schnittstellen zur Nutzung von Threads ...

PThreads: Funktionen zur Threadverwaltung (unvollst ¨andig)

➥ pthread create: erzeugt neuen Thread

Parameter: Prozedur, die der Thread abarbeiten soll

Ergebnis: Thread-Handle ( = Referenz)

➥ pthread exit: eigene Terminierung (mit Ergebniswert)

➥ pthread cancel: terminiert anderen Thread

➥ pthread join: wartet auf Terminierung eines Threads, liefert Ergebniswert

(45)

2.6 Schnittstellen zur Nutzung von Threads ...

Code-Beispiel: Hello World mit PThreads in C

Erzeugung des Threads Diese Funktion wird durch einen neuen Thread abgearbeitet

Warten auf Beendigung int main(int argc, char **argv) {

void * SayHello(void *arg) {

}

#include <pthread.h>

}

exit(0);

/* FEHLER! */

if (pthread_create(&t, NULL, SayHello, NULL) != 0) { }

pthread_join(t, NULL);

pthread_t t;

return NULL;

printf("Hello World!\n");

(46)

2.6 Schnittstellen zur Nutzung von Threads ...

Java Threads

➥ Grundlage: die Klasse Thread

Konstruktoren (u.a.):

Thread(), Thread(Runnable target)

Methoden (u.a.):

void start() – startet einen Thread

void join() – wartet auf Ende des Threads

➥ Definieren von Threads

Deklaration einer neuen Klasse

als Unterklasse der Klasse Thread

oder: als Implementierung der Schnittstelle Runnable

Uberschreiben / Implementieren der Methode¨ void run() mit dem auszuf ¨uhrenden Code

(47)

2.6 Schnittstellen zur Nutzung von Threads ...

Code-Beispiel: Hello World mit Java Threads (1)

Diese Methode wird durch den neuen

Thread abgearbeitet

Warten auf Beendigung Erzeugung des Threads {

}

public class MyThread extends Thread

}

t.join();

t.start();

MyThread t = new MyThread();

{ }

System.out.println("Hello World!");

public void run() {

public static void main(String[] args)

(48)

2.6 Schnittstellen zur Nutzung von Threads ...

Code-Beispiel: Hello World mit Java Threads (2)

Erzeugung des Threads Warten auf Beendigung

Diese Methode wird durch den neuen

Thread abgearbeitet

} {

public class HelloWorld implements Runnable

}

t.join();

t.start();

Thread t = new Thread(runner);

HelloWorld runner = new HelloWorld();

{

public static void main(String[] args) }

System.out.println("Hello World!");

{

public void run()

(49)

2.6 Schnittstellen zur Nutzung von Threads ...

Anmerkungen zu den Code-Beispielen

➥ Programmiermodell:

bei Programmstart: genau ein Thread

Prozeß terminiert erst, wenn alle Threads beendet sind

➥ Jeder Thread darf nur einmal ¨uber start() gestartet werden

➥ Ubergabe von Parametern und Ergebnissen:¨

¨uber Attribute des Thread bzw. Runnable-Objekts

Eingabeparameter werden vor start() gesetzt (z.B. durch Konstruktor)

Ergebnisse k ¨onnen nach join() z.B. durch Getter-Methoden ausgelesen werden

(50)

2.7 Zusammenfassung / Wiederholung

➥ Zwei Aspekte:

Prozeß: Einheit der Ressourcenverwaltung, Schutzeinheit

Thread: Einheit der Prozessorzuteilung

pro Prozeß mehrere Threads m ¨oglich

➥ Threadmodell

Zust ¨ande

”rechnend“,

”bereit“,

”blockiert“ + andere

Warteschlangen

➥ Zum Prozeß geh ¨oren u.a.:

Adreßraum, ge ¨offnete Dateien, Signale, Privilegien, ...

➥ Zum Thread geh ¨oren u.a.:

Befehlsz ¨ahler, CPU-Register, Keller(zeiger), Scheduling-Zustand, ...

(51)

2.7 Zusammenfassung / Wiederholung ...

➥ Threadwechsel:

Umladen des Prozessorkontexts

bei Prozeßwechsel auch Wechsel der Speicherabbildung

kann bei Systemaufruf, Ausnahme und Interrupt erfolgen

➥ Realisierungsvarianten f ¨ur Threads:

im BS-Kern, Benutzeradreßraum, hybrid

➥ Thread-Schnittstellen:

POSIX-Threads, Java Threads

Referenzen

ÄHNLICHE DOKUMENTE

Sobald die wait()-Methode ausgeführt wird, können andere syncronized Anweisungen starten und der Thread wartet bis er benachrichtigt wird. Die notify()-Methode wird ebenfalls

• boolean tryAcquire(int permits, long timeout, TimeUnit unit) permits Freisignale nehmen (blockierend mit Timeout). •

Lehrstuhl für Connected Mobility Fakultät für Informatik Technische Universität München.. November 2020 Hinweis: Mit * gekennzeichnete Teilaufgaben sind ohne Lösung

Berech- nung von zustandsspezifischen Raten, Pseudo-Survivorfunktionen und Anteilsfunktionen (sowohl f¨ ur vollst¨andige Daten als auch f¨ ur teilwei- se rechtszensierte

Berechnung von zustandsspezifischen Raten, Pseudo-Survivorfunktionen und Anteilsfunktionen (sowohl f¨ur vollst¨andige Daten als auch f¨ur teilweise rechtszensierte

• Funktion blockiert, bis ¨ uber einen Deskriptor readfds, writefds oder exceptfds Daten gelesen oder geschrieben werden k¨ onnen bzw. eine Datei ihren Status

Welche der folgenden Elemente (bzw. Ressourcen) geh¨oren bei einem Betriebssystem, das mehrere Threads pro Prozess unterst¨utzt, zum Prozeß (sind also allen Threads des

Objekte vom Typ Thread sind Prozesse, die parallel ablaufen k¨onnen wichtige Methoden:.. • run() , um den Prozess laufen