+ All Categories
Home > Documents > Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining...

Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining...

Date post: 17-May-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
13
1 Modul: Programmierung (B Modul: Programmierung (B- PRG) PRG) Grundlagen der Programmierung 1 Grundlagen der Programmierung 1 – Teil 3 Teil 3 Prozesse Prozesse Prof. Dr. R. Brause Adaptive Systemarchitektur Institut für Informatik Fachbereich Informatik und Mathematik (12) Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 2 Warum Mehrprozessbetrieb? Effiziente Nutzung des Systems Mehrprogrammbetrieb: mehrere Teilnehmer am Rechner bzw. Server-Betrieb im Netz Parallelbetrieb: unterschiedliche CPU-Nutzung parallel auszuführender Prozesse eines Programms Programme und Prozesse
Transcript
Page 1: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

1

Modul: Programmierung (BModul: Programmierung (B--PRG)PRG)Grundlagen der Programmierung 1 Grundlagen der Programmierung 1 –– Teil 3Teil 3

ProzesseProzesse

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

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 2

Warum Mehrprozessbetrieb?

Effiziente Nutzung des Systems

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

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

Programme und Prozesse

Page 2: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

2

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 3

CPU-Idle

Diskette

Festplatte

Drucker

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

Parallelbetrieb bessere CPU-Nutzung

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 - Teil 3 R.Brause: Prozesse Folie 4

Was sind Prozesse ?

Prozess = Programmdaten

Prozeß

Daten

Pro-gramm

Stack

Prozeßkontext

CPU MMURegister Register

Dateiinfo,Zugriffs- Kernel-rechte stack

+ Prozeßkontext

Page 3: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

3

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 5

Prozeßzustände

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

nicht-ex.

erzeugt

bereit

terminiert

erhalteSignal

nicht-exaktivrunningZuteilung

blockiert erwarteSignal

Dispatcheraktionen

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 6

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

Page 4: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

4

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 7

Beispiel Prozeßerzeugung

Beispiel shell Pseudocode

LOOP

Write(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;

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 8

Kind

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

...};

/* PID = = 0 */

Unix: Prozeßerzeugung

Eltern

PID = fork()

/* PID ≠ 0 */

if (PID==0){ ...

...};

PID = wait(Status) . . .exit(Status) };

. . .

Page 5: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

5

NebenlNebenlääufigkeit:ufigkeit:ThreadsThreads

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 10

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)

Page 6: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

6

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 11

Thread- Typen: lightweight threads

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

Vorteil: sehr schneller thread-Wechsel T1, T2

Nachteil: Blockieren aller threads bei I/O-Warten von einem thread.

Prozeß

T1 T2

Prozeß- I/O

Systemaufruf

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 12

Thread- Typen: heavyweight threads

kontrolliert vom Betriebssystem (z.B. Windows NT)

Vorteil: Unabhängiger I/O aller threads T1, T2

Nachteil:langsamer BS-Systemaufruf nötig⇒ fibers in NT

Prozeß

T1 T2

thread I/O thread I/O

Systemaufruf

Page 7: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

7

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 13

Threads in Python

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

Modul threading:Basiert auf Modul thread.Gekapselte Thread-KlasseHigh-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!

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 14

Threads in Python

Definition der Klasse Thread im Modul threading:

Methode start():Methode start() fügt den Thread dem Python-Schedulerhinzu, und kehrt dann sofort zurück.Derselbe Thread kann nicht mehrmals gestartet werden.

Methode run():

Wird vom Python-Scheduler aufgerufenSobald die Methode run() beendet ist, beendet sich auch der Thread.

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

Page 8: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

8

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 15

Threads in Python

Konstruktor (Auszug):

Thread(target =None, name =None,...)target ist ein aufrufbares Objekt, das von der run()-Methodeaufgerufen 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 - Teil 3 R.Brause: Prozesse Folie 16

Überladen

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") definiere Instanzent2 = countThread(name = "Thread-2")t3 = countThread(name = "Thread-3")t1.start() mache sie dem dispatcher bekanntt2.start()t3.start()

Threads in Python

Beispiel (Implementierung durch Überladen der Methode run()

3 Threads zählen „gleichzeitig“ von 0 bis 9

Page 9: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

9

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 17

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!

ProzeProzeßß--SchedulingScheduling

Page 10: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

10

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 19

Prozeßscheduling

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

Jobende Nutzer

Langzeit-schedul

Kurzzeit-schedul

HierHier: Nur : Nur KurzzeitschedulKurzzeitschedul !!

Ankunft Warteschlange Abgang

Prozessor

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 20

Prozeßscheduling: Ziele

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

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

Problem: Diese Ziele sind weder vollständig noch konsistent

Beispiel AutovermietungSind alle Wagen gut ausgelastet, müssen neue Kunden warten.Wartet kein Kunde, so existieren Autos ohne Benutzung.

Es gibt keinen idealen Schedulingalgorithmus !

Page 11: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

11

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 21

„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

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 22

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.“

Page 12: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

12

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 23

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

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 24

Scheduling mit multiplen Warteschlangen

Korrektheit: Kein Verhungern durch feste Reihenfolge

multi level scheduling: Kein Verhungern durch ansteigende Job-Priorität

extra Warteschlange pro Prio:

Prio 0: Systemprozesse

Prio 1: Interaktive Jobs

Prio 2: Allgemeine Jobs

Prio 3: Rechenintensive Jobs dyn.Prio(t) ++

Round Robin

Page 13: Prozesse - Goethe University Frankfurt · 2007-12-21 · Präemptives Scheduling Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . Dynamic Priority

13

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 25

Beispiele Scheduling

Beispiel non-präempt. PrioritätsschedulingSchedul P2, P3, P1mittl. Bearbeitungszeit: (5 + 8 + 9) : 3 = 7 1/3

Beispiel präemptives SchedulingSchedul P1, P2, P3, Wechsel nach jeweils kurzen Zeitscheibenmittl. Bearbeitungszeit: (3 + 9 + 7) : 3 = 6 1/3

Prozesse P1, P2, P3Priorität 1, 5, 3Länge 1, 5, 3

P1

P2

P3

111

22

2

5 3 1

Grundlagen der Programmierung 1 - Teil 3 R.Brause: Prozesse Folie 26

Beispiele RR-Scheduling

Beispiel Wechsel nach jeweils sehr kurzen Zeitscheibenmittl. Bearbeitungszeit: (3 + 7 + 9) : 3 = 6 1/3 Jobeinheiten

Prozesse P1, P2, P3, Schedul: P1, P2, P3Längen 1, 3, 5,

P1

P2

P3

111

22 2

Beispiel: Wechsel nach großen Zeitscheiben = 1 Jobeinheit

P1

P2

P3

mittl. Bearbeitungszeit: (1 + 6 + 9) : 3 = 5 1/3 Jobeinheiten


Recommended