12
Modul B-PRG Grundlagen der Programmierung 1 Teil 3: Teil 3: Betriebssysteme, Betriebssysteme, Dateisysteme,Sicherheit Dateisysteme,Sicherheit V20: V20: Prozesse Prozesse Prof. Dr. R. Brause Adaptive Systemarchitektur Institut für Informatik Fachbereich Informatik und Mathematik (12) Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 2 Warum Mehrprozessbetrieb? Effiziente Nutzung des Systems u Mehrprogrammbetrieb: mehrere Teilnehmer am Rechner bzw. Server-Betrieb im Netz v Parallelbetrieb: unterschiedliche CPU-Nutzung parallel auszuführender Prozesse eines Programms Programme und Prozesse

Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

1

Modul B-PRG

Grundlagen der Programmierung 1

Teil 3:Teil 3: Betriebssysteme, Betriebssysteme, Dateisysteme,SicherheitDateisysteme,Sicherheit

V20: V20: ProzesseProzesse

Prof. Dr. R. BrauseAdaptive SystemarchitekturInstitut für Informatik Fachbereich Informatik und Mathematik (12)

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 2

Warum Mehrprozessbetrieb?

Effiziente Nutzung des Systems

u Mehrprogrammbetrieb: mehrere Teilnehmer am Rechner bzw. Server-Betrieb im Netz

v Parallelbetrieb: unterschiedliche CPU-Nutzung parallel auszuführender Prozesse eines Programms

Programme und Prozesse

Page 2: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

2

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 3

CPU-Idle

Diskette

Festplatte

Drucker

... und noch freie Prozessorkapazität fürrechenintensives Programm im Hintergrund

Parallelbetrieb durch Prozesse

Daten drucken

Platte lesen

Daten lesen Daten lesen Daten lesen Daten lesen

Daten drucken Daten drucken

Platte schreiben Platte lesen Platte..

Prozesse

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 4

Was sind Prozesse ?

Prozess = Programmdaten + Prozeßkontext

Prozeß

Daten CPU MMURegister Register

Dateiinfo,Zugriffs- Kernel-rechte stack

Prozeßkontext

Pro-gramm

Stack

Page 3: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

3

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 5

Unix Prozeßkontext

Speicherresidente Prozeßkontrollblöcke PCB der ProzeßtafelScheduling-ParameterSpeicherreferenzen: Code -, Daten-, Stackadressen im Haupt- bzw. MassenspeicherSignaldaten: Masken, ZuständeVerschiedenes: Prozeßzustand, erwartetes Ereignis, Timerzustand, PID, PID der Eltern, User/Group-IDs

Auslagerbarer Benutzerkontext (swappable user structure)Prozessorzustand: Register, FPU-Register, …

Systemaufruf: Parameter, bisherige Ergebnisse, …

Datei-Info-Tabelle (file descriptor table)

Benutzungsinfo : CPU-Zeit, max. Stackgröße, …Kernel-stack: Platz für Systemaufrufe des Prozesses

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 6

Prozeßzustände

Prozesse warten ...auf den Prozessor (bereit)auf eine Nachricht (blockiert)auf ein Zeitsignal (blockiert)auf Daten des I/O-Geräts (blockiert)

nicht-ex.

erzeugt

bereit

iterm niert

nicht-ex

erhalteSignal

aktivrunningZuteilung

blockiert erwarteSignal

Dispatcheraktionen

Page 4: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

4

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 7

Prozeßerzeugung

Ein Programm (Job) kann mehrere Prozesse erzeugen

z.B. UNIX shell (Elternprozeß)

cat Text1 Text2 | pr | lpr

Kindsprozess3Kindsprozess1 Kindsprozess2

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 8

Unix: Prozeßerzeugung

Beispiel shell Pseudocode

LOOPWrite(prompt); (* tippe z. B. ´>´ *)ReadLine(command, params); (* lese strings, getrennt durch Leertaste *)pid := fork(); (* erzeuge Kopie dieses Prozesses *)IF (pid=0) THEN execve(command,params,0)(* Kind: überlade mit Programm *)ELSE wait(pid) (* Eltern: warte aufs Ende vom Kind *)END;

END;

Page 5: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

5

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 9

Kind

if (PID==0){exec („program“)

...};

/* PID = = 0 */

Unix: Prozeßerzeugung

Eltern

PID = fork()/* PID ≠ 0 */

if (PID==0){ ...

...};wait(PID) . . .

exit () };. . .

NebenlNebenlääufigkeitufigkeit

Page 6: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

6

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 11

Threads (Coroutinen)

gemeinsamer Prozeßkontext (Speicher-Addressbereich, Dateien (file handles)

Thread 1

Thread 2

Thread 3

Gemeinsamer Prozeßkontext

asynchroner, paralleler, unterschiedlicher Programmverlauf (eigener stack)

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 12

Thread- Typen: lightweight threads

n kontrolliert vom Benutzerprogramm (z.B. Unix-Bibliothek)

Vorteil: sehr schneller thread-WechselNachteil: Blockieren aller threads bei I/O-Warten

von einem thread.

Prozeß

T1 T2

Prozeß- I/O

Systemaufruf

Page 7: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

7

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 13

Thread- Typen: heavyweight threads

n kontrolliert vom Betriebssystem (z.B. Windows NT)

Vorteil: Unabhängiger I/O aller threadsNachteil:langsamer BS-Systemaufruf nötig

⇒ fibers in NT

Prozeß

T1 T2

thread I/O thread I/O

Systemaufruf

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 14

Threads in Python

Modul thread:§ Funktionen zur Erstellung und Verwaltung von Threads.§ Low-Level Thread-Programmierung

Modul threading:§ Basiert auf Modul thread.

§ Gekapselte Thread-Klasse

§ High-Level Thread-Programmierung

Hinweis: Die mitgelieferte Entwicklungsumgebung von Python – IDLE – ist nicht thread-sicher, so sind zum Beispiel die Ausgabefunktionen nicht synchronisiert.

Insbesondere bringt die gleichzeitige Ausführung von print-Anweisungen IDLE zum Absturz!? Eigene Programme, die Threads benutzen, von der

Kommandozeile aus starten!

Page 8: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

8

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 15

Threads in Python

Definition der Klasse Thread im Modul threading:

Konstruktor (Auszug):Thread(target =None, name =None,...)§ target ist ein aufrufbares Objekt, das von der run()-Methode

aufgerufen wird. Aufrufbares Objekt: __call__() Methode ist definiert.

§ name ist der Name des Threads. § Wenn die Subklasse den Konstruktor überschreibt, so muss

sichergestellt werden, dass zuerst der Konstruktor der Basisklasse (Thread.__init__()) aufgerufen wird, bevor der Thread benutzt wird.

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 16

Threads in Python

Methode start():§ Starten des Threads. § Derselbe Thread kann nicht mehrmals gestartet werden.

§ Methode start() fügt den Thread dem Python-Schedulerhinzu, und kehrt dann sofort zurück.

Methode run():§ Wird vom Python-Scheduler aufgerufen

§ Sobald die Methode run() beendet ist, beendet sich auch der Thread.

Implementierung von Threads durch § überladen der Methode run(self) in der Klasse Thread§ oder durch Übergeben eines aufrufbaren Objekts.

Page 9: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

9

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 17

Threads in Python

Beispiel (Implementierung durch Überladen der Methode run()):3 Threads zählen „gleichzeitig“ von 0 bis 9:import threading

class countThread(threading.Thread):def run(self):

self.counter = 0while self.counter != 10:

print self.getName() , self.counterself.counter = self.counter + 1

t1 = countThread(name = "Thread-1")t2 = countThread(name = "Thread-2")t3 = countThread(name = "Thread-3")t1.start()t2.start()t3.start()

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 18

Threads in Python

Ausgabe:Thread-1 0Thread-1 1Thread-1 2Thread-1 3Thread-1 4Thread-1 5Thread-1 6Thread-1 7Thread-1 8Thread-1 9Thread-2 0Thread-2 1Thread-2 2Thread-2 3Thread-2 4

Thread-3 0Thread-3 1Thread-3 2Thread-3 3Thread-3 4Thread-2 5Thread-2 6Thread-2 7Thread-3 5Thread-2 8Thread-3 6Thread-2 Thread-3 79Thread-3 8Thread-3 9…

Fehlende Synchronisation!

Thread 3 unterbricht Thread 2während der Ausgabe!

Page 10: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

10

ProzeProzeßß--SchedulingScheduling

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 20

Prozeßscheduling

Vorplanung in verschiedenen ZeitmaVorplanung in verschiedenen Zeitmaßßststääbenben

Jobende Nutzer

Langzeit-schedul

Kurzzeit-schedul

Hier: Nur Hier: Nur KurzzeitschedulKurzzeitschedul !!

Ankunft Warteschlange Abgang

Prozessor

Page 11: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

11

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 21

Prozeßscheduling: Ziele

n Maximale Auslastung der CPUZiel ist die 100%ige Auslastung der CPU, normal 40%–90%.

n Minimale Wartezeit (waiting time)Wartezeit in der bereit-Liste minimieren (einziger Scheduling-parameter)

Problem: Die Ziele sind weder vollständig noch konsistent

Beispiel AutovermietungWerden bestimmte Kunden bevorzugt, müssen andere warten.Sind alle Wagen gut ausgelastet, müssen neue Kunden warten.

Es gibt keinen idealen Schedulingalgorithmus !

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 22

„Jeder Prozeß läuft so lange, wie er will.“

First Come First Serve (FCFS).Einsortieren in der Ankunftsreihenfolge (FIFO-Warteschlange).

Nicht-präemptives Scheduling

Shortest Job First (SJF)Job mit kürzester Bedienzeit zuerst (min. mittl. Wartezeit).

Ankunft Warteschlange Abgang

Prozessor

Priority Scheduling (PS)PrioÚProzeß; Bevorzugung von hoher Prio.

ProblemSJF und PS erlauben verhungern (starvation) von benachteiligten Prozessen

Page 12: Modul B-PRG Grundlagen der Programmierung 1Präemptives Scheduling Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer! Abbruch Ankunft Warteschlange Abgang Prozessor

12

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 23

Präemptives Scheduling

Einführung von „Zeitscheiben“: Rücksichtslose Prozesse/Benutzer!

Abbruch

Ankunft Warteschlange Abgang

Prozessor

Prozeß2Prozeß1Prozeß3Prozeß2Prozeß1

Zeitscheibe

„Jeder Prozeß läuft nur so lange, wie er darf.“

Grundlagen der Programmierung 1 R.Brause: Prozesse Folie 24

Round Robin (RR)Einsortieren in der Ankunftsreihenfolge (FIFO-Warteschlange) + Zeitscheibe

Präemptives Scheduling

Shortest Remaining Time FirstJob mit kürzester verbleibender Bedienzeit zuerst .

Dynamic Priority Round Robin (DPRR)wachsende Prio-Vorstufe + RR

Kombinationen aller Strategien