Prozesse und Scheduling

Prozesse und Scheduling Windows 2000 Teng Gan Email:[email protected] Betriebssysteme WS02/03 Gruppe 3 Universität Paderborn Inhalt 1. Job, Prozess, Thre...
Author: Hedwig Gerber
6 downloads 2 Views 247KB Size
Prozesse und Scheduling Windows 2000 Teng Gan Email:[email protected] Betriebssysteme WS02/03 Gruppe 3

Universität Paderborn

Inhalt 1. Job, Prozess, Thread und Fiber 1.1. 1.2. 1.3. 1.4. 1.5. 1.6.

Job Prozess Erzeugung von einem Prozess Starten von einem Prozess Erzeugen von einem Thread One-to-One + Many-to-Many-Multithreading-Modell

2. Interprozesskommunikation (IPC) 2.1. Pipes 2.2. Mailslots 2.3. Winsock 2.4. Local-Procedure-Calls (LPC) 2.5. Remote-Procedure-Calls (RPC) 2.6. Asynchronous-Procedure-Calls (APC) 2.7. Component Object Model (COM) 2.8. DCOM 2.9. Clipboard 2.10.File-Mapping

( Gruppe 3 )

Prozesse und Scheduling (Windows)

2

Inhalt 3. Sychronization und Scheduling 3.1. Synchronisation 3.2. Scheduler und DPC 3.3. Thread-Priorität 3.4. Scheduling-Algorithmus 3.4.1. Arbeitsweise des Schedulers 3.4.2. Strategien zur Verbesserung des Schedulings

4. Literatur

( Gruppe 3 )

Prozesse und Scheduling (Windows)

3

1. Grundlegende Konzepte 1. Job: Job ist eine Sammlung der als Einheit verwalteten Prozessen Kontingent in einem Job bestimmt: max. Anzahl von Prozessen gesamte CPU-Zeit und max. Speichernutzung für jeden Prozessen individuell und für allen Prozessen zusammen Sicherheitseinschränkungen für Prozesse 2. Prozess: Container für Ressourcen 4-GB-Adressraum ( 2 bis 3 GB für Benutzer, der Rest für BS ) Jeder Prozess besitzt: eine Prozess-ID, min. einen Thread, eine Handle-Tabelle, ein Access-Token Vater-Kind-Hierarchie durch Duplizierung und Weitergabe von Handles

( Gruppe 3 )

Prozesse und Scheduling (Windows)

4

1. Grundlegende Konzepte Die Beziehung zwischen Jobs, Prozessen, Threads, Fiber:

Fiber Thread Benutzermoduls ThreadKeller

BenutzerModuls

Adressraum Prozess

Job Kernmodus ThreadKeller Access Token

P

( Gruppe 3 )

T

T

ProzessHandleTabelle

Prozesse und Scheduling (Windows)

KernModuls

T

T

P

5

1. Grundlegende Konzepte 3. Erzeugung von einem Prozess: Benutzermodus

Applikation

Kernel32.dll 9 Prozess- und Thread-Handles

1 Win32-API:CreatProzess NtCreatProzess 2 7 NtCreatThread

6 Objekt-Handle 10 Prozess- und Thread-Handles Prozess erzeugen 3

Win32-Subsystem csrss.exe 8 Thread erzeugen Systemschnittstelle (ntdll.dll) 5

Prozessmanager Kernmodus

( Gruppe 3 )

Objectmanager 4 Prozess-Objekt erzeugen

Prozesse und Scheduling (Windows)

6

1. Grundlegende Konzepte 4. Starten von einem Prozess Nachdem ein Prozess erzeugt wird, übergibt kernel32.dll die Prozess- und Thread-Handles an das Subsystem. Der Thread ruft eine Prozedur des Laufzeitsystems zur Initialisierung auf und startet die Ausführung des Hauptprogramm. 5. Erzeugen von einem Thread Ein Prozess führt CreateThread aus, das eine Prozedur in kernel32.dll aufruft. Diese Prozedur erzeugt einen Benutzer-Stack in diesem Prozess und ruft dann den NtCreateThread auf. 6. One-to-One + Many-to-Many-Multithreading-Modell • One-to-One-Modell: Bessere Nebenläufigkeit, teuere Verwaltung Ein Thread läuft in den Kernmodus,

UL-Threads

falls er einen Systemaufruf ausführt, sonst im Benutzermodus. k ( Gruppe 3 )

Prozesse und Scheduling (Windows)

k

k

KL-Threads 7

1. Grundlegende Konzepte 6. One-to-One + Many-to-Many-Multithreading-Modell (fortgesetzt) • Many-to-Many-Multithreading-Modell durch Fiber • Fiber: Leichtgewichtiger Thread Verwaltung ( Erzeugen, Scheduling ) von Fiber nur im Benutzerraum API-Funktionen: ConvertThreadToFiber: Fiber erzeugen und starten CreateFiber: Fiber erzeugen SwitchToFiber: Fiber starten DeleteFiber: Fiber beenden • Jeder Thread kann mehrere Fiber haben.

( Gruppe 3 )

Prozesse und Scheduling (Windows)

8

2. Interprozesskommunikation Windows 2000 bietet zahlreiche Mechanismen, mit den die Prozessen miteinander kommunizieren können: 1. Pipes Anonym-Pipe: • Alle Anonym-Pipes haben einen gleichen Name. • One-Way-Datentransfer zwischen Vater- und Kindprozessen. • Nur für lokale Kommunikation. createPipe 1 Pipe-Server

Anonym-Pipe

write to pipe or read from pipe Pipe-Client 3

2 send Write-Handle to client or send Read-Handle to Client ( Gruppe 3 )

Prozesse und Scheduling (Windows)

9

2. Interprozesskommunikation Named-Pipe: • Jedes Pipe besitzt eigenen individuellen Name. • One-Way- und Two-Way-Datentransfer zwischen einem Pipe-Server und einem oder mehreren Pipe-Clients. • Kommunikation lokal oder über Netzwerk Instanz of Named-Pipe

Pipe-Server

createNamedPipe 1

Instanz of Named-Pipe

Pipe-Client 1 2 CreateFile or CallNamedPipe 2

Instanz of Named-Pipe

Pipe-Client 2

2. Mailslots • One-Way-IPC durch Netzwerk • Besitzer eines Mailslots kann Nachrichten aus seinem Mailslot erhalten • Broadcast-Messaging mit Datagram ( Gruppe 3 )

Prozesse und Scheduling (Windows)

10

2. Interprozesskommunikation 3. Winsock • Windows 2000 Sockets-API, Session-Layout-Interface • Geeignet für Kommunikation durch Netzwerk • Kommunikation zwischen unterschiedlichen Systemen möglich (kompatible mit UNIX-Sockets ) 4. Local-Procedure-Calls (LPC) • Nachrichtenaustausch-Mechanismus für Prozessen im lokalen System • LPC wird eingesetzt, um die Diensten von Windows 2000 Subsystemen zu fordern. create 1 Server ( Subsystem )

( Gruppe 3 )

Port-Object

request 2

3

4 Create two communication channels and return handle to one of the channels to client Prozesse und Scheduling (Windows)

Client

11

2. Interprozesskommunikation 5. Remote-Procedure-Calls (RPC) • Ein Prozess kann die Prozedur von einem anderen Prozess durch Netzwerk aufrufen. • Kommunikation zwischen unterschiedlichen Systemen möglich • Geeignet für Applikationen mit Client-Server-Architektur 6. Asynchronous-Procedure-Calls ( APC ) • Ähnlich wie asynchrones Signal unter UNIX • Benutzer-Thread kann APC benutzen, um eine Funktion (z.B. SystemDienst) auszuführen, wenn der Thread in der Zukunft signalisiert wird. Die Ausführung dieser Funktion wird diesen Thread nicht blockieren. • Wird sehr viel von Executiven für E/A-Operationen verwendet 7. Component Object Model ( COM ) • Interface zur Manipulation von Daten in den Objekten • Kommunikation zwischen COM-Komponenten der Applikationen ( Gruppe 3 )

Prozesse und Scheduling (Windows)

12

2. Interprozesskommunikation 8. DCOM • DCOM ist eine COM-Erweiterung für Windows 2000 • Zusammen mit RPC bietet DCOM transparente Methode für die Entwicklung der verteilten Applikationen 9. Clipboard • Depository für gemeinsame benutzten Daten zwischen Prozessen ( z.B. Cut oder Copy-Operation ) • Die Datenformat muss von Prozessen unterstützen. • Kommunikation auf eine Maschine und durch Netzwerk 10. File-Mapping • Eine Datei als Speicher eines Prozesses zu benutzen • IPC durch gemeinsame Nutzung einer Datei ( Synchronisation nötig ) • Nur lokale Nutzung

( Gruppe 3 )

Prozesse und Scheduling (Windows)

13

3. Synchronisation und Scheduling ( 3.1. Synchronisation ) 1. Semaphor ( Kernobjekt ) Besitzt Sicherheitsdeskriptoren und Handles. API-Funktionen: CreateSemaphore: erzeugt Semaphoren DuplicateHandle: dupliziert ein Handle auf ein Semaphor ReleaseSemaphore(up): für up-Operation WaitForSingleObject(down ): für down-Operation 2. Mutex ( Kernobjekt ) Handles eines Mutex können dupliziert und weitergegeben werden. API-Funktionen: CreateMutex:Mutex erzeugen oder einen Handle eines Mutex-Objekts öffnen WaitForSingleObject: für Sperren ReleaseMutex: für Entsperren

( Gruppe 3 )

Prozesse und Scheduling (Windows)

14

3. Synchronisation und Scheduling ( 3.1. Synchronisation ) 3. Kritische Sektion Ähnlich wie Mutex, wird nur von Threads innerhalb eines Prozesses benutzt. ( Effizienter als Mutex) 4. Ereignis ( Kernobjekt ) WaitForSingleObject: auf ein Ereignis warten SetEvent: ein Ereignis signalisieren Zwei Zustände von Ereignis: gesetzt (signaled) oder nicht gesetzt (nonsignaled) Manuell zurücksetzende Ereignisse: Ereignis ist gesetzt: Alle wartenden Threads werden freigelassen. Ereignis bleibt gesetzt bis ResetEvent explizit aufgerufen wird. Automatisch zurücksetzende Ereignisse: Ereignis ist gesetzt: Nur ein wartender Thread wird freigelassen. Ereignis wird in nicht gesetzten Zustand zurückgesetzt. Durch PulseEvent wird Ereignis gesetzt, bestimmte Anzahl der Threads werden freigelassen und Ereignis wird wieder in nicht gesetzten Zustand zurückgesetzt. ( Gruppe 3 )

Prozesse und Scheduling (Windows)

15

3. Synchronisation und Scheduling ( 3.1. Synchronisation ) 5. Low-Level-Prozessor-Synchronisation Auf Multiprozessor-Maschine muss es verhindert werden, dass mehrere Threads gleichzeitig die gemeinsam benutzten Daten verändern. Dafür wird Spinlocks verwendet. Während ein Thread einen Spinlock besetzt, wird die Verdrängung ( Preempty ) deaktiviert.

( Gruppe 3 )

Prozesse und Scheduling (Windows)

16

3. Synchronisation und Scheduling ( 3.2. Scheduler und DPC) Das Scheduling wird durch Aufrufe des Scheduler (Dispatcher) oder DeferredProcedur-Call (DPC) im Kernmodul durchgeführt. 1. Ein aktuell laufender Thread muss den Scheduler aufrufen, wenn der Thread blockiert wird durch ein Objekt z.B.Semaphor,Mutex, E/A usw.,oder der Thread ein Synchronisationsobjekt (z.B.Ereignis ) signalisiert, oder die Zeitscheibe des Threads abgelaufen ist. 2. DPC wird erzeugt, wenn ein Thread auf eine E/A-Operation wartet oder ein Thread eine down-Operation auf ein Semaphor ausgeführt und eine Zeitspanne gesetzt hat. Wenn diese E/A-Operation fertig ist oder die Zeitspanne abgelaufen ist, wird DPC nach der Ausführung der Unterbrechungsbehandlungsroutine ausgeführt. ( Gruppe 3 )

Prozesse und Scheduling (Windows)

17

3. Synchronisation und Scheduling ( 3.3. Thread-Priorität ) Prioritäten der Threads sind entscheidend für die Thread-Auswahl von Scheduler. Durch den API-Aufruf SetPriorityClass wird die Priorität eines Prozess gesetzt: ( Echtzeit, Hoch, Über normal, Normal, Unternormal, Idle ) Durch den Aufruf SetThreadPriority wird die Priorität eines Threads in seinem Prozess gesetzt: ( Zeitkritisch, Höchste, Übernormal, Unter normal, Niedrigste, Idle ) Die Kombinationen der Priorität eines Prozesses mit den Prioritäten seiner Threads bilden 32 Prioritäten. Die Prioritäten von 16 bis 31 werden für das System reserviert. Administrator kann diese Prioritäten den Threads explizit zuweisen. Die Prioritäten von 0 bis 15 gehören den Benutzerthreads.

( Gruppe 3 )

Prozesse und Scheduling (Windows)

18

3. Synchronisation und Scheduling ( 3.3. Thread-Priorität ) Diese Prioritätstabelle dient als die Eingabe für Scheduling-Algorithmus. Win32-Prozessklassen-Prioritäten

Win32-Thread-Prioritäten

Echtzeit

Hoch

Unter normal

Idle

Zeitkritisch

31

15

15

15

15

15

Höchste

26

15

12

10

8

6

Über normal

25

14

11

9

7

5

Normal

24

13

10

8

6

4

Unter normal

23

12

9

7

5

3

Niedrigste

22

11

8

6

4

2

Idle

16

1

1

1

1

1

( Gruppe 3 )

Über Normal normal

Prozesse und Scheduling (Windows)

19

3. Synchronisation und Scheduling ( 3.4. Scheduling-Algorithmus ) 1. Arbeitsweise des Scheduling-Algorithmus: Das System stellt eine Prioritätsliste mit den 32 Prioritäten zur Verfügung. Jeder Eintrag der Liste enthält eine weitere Liste mit allen wartenden Threads der entsprechenden Priorität. Die Prioritäten in der Liste wird von 31 bis 0 durchgesucht, bis einen nicht leeren Eintrag gefunden ist. Die Threads in dieser Liste werden nach dem Round-RobinPrinzip verwaltet. Nächster ausgeführter Thread Nullseiten-Thread

Idle Thread

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Benutzer-Prioritäten

( Gruppe 3 )

System-Prioritäten

Prozesse und Scheduling (Windows)

20

3. Synchronisation und Scheduling ( 3.4. Scheduling-Algorithmus ) Ein laufende Thread mit niedrigerer Priorität wird durch einen bereiten Thread mit höherer Priorität verdrängt ( Preempty ), wenn Scheduler aufgerufen wird. Der Nullthread läuft im Hintergrund, schreibt Speicherseiten für die Speicherverwaltung mit Null und verbraucht ganze CPU-Zeit, wenn keine anderen Threads laufen können. Wenn keine anderen Threads inklusive des Nullthread laufen können, läuft der IdleThread.

( Gruppe 3 )

Prozesse und Scheduling (Windows)

21

3. Synchronisation und Scheduling ( 3.4. Scheduling-Algorithmus ) 2. Strategien zur Verbesserung des Scheduings 2.1. Erhöhung der Priorität Die aktuelle Priorität eines Benutzer-Threads kann bis die Priorität 15 erhöht werden. Fall 1: Ein Thread wartet auf eine E/A-Operation. Diese Operation ist fertig und dieser Thread wird freigelassen. Die Priorität dieses Threads wird abhängig von dem Gerättyp um bestimmte Einheiten angehoben. Das Ziel: E/A-Geräte möglichst auszulasten. Fall2: Ein Thread wartet auf ein Semaphor, einen Mutex oder ein Ereignis. Nachdem er freigelassen wird, wird seine Priorität um zwei Einheiten anghoben, falls er zum Vordergrundprozess gehört, andernfalls um eine Einheit. Das gilt auch für einen erwachten GUI-Thread. Das Ziel: interaktive Prozesse zu bevorzugen.

( Gruppe 3 )

Prozesse und Scheduling (Windows)

22

3. Synchronisation und Scheduling ( 3.4. Scheduling-Algorithmus ) 2.2. Verringerung der Priorität Wenn ein Thread seine gesamte nächste Zeitscheibe aufbraucht, wird seine Priorität um eine Einheit verringert, solange die aktuelle Priorität des Threads höher als seine Basispriorität ist. 2.3. Prioritätsvariierung gegen Prioritätsinversion Würde gerne Semaphor erhöhen, bekomme aber nie Rechenzeit Prioritätsinversion: Priorität 12 Blockiert Laufend

Semaphor

Priorität 4 bereit

Priorität 8 Laufend bereit

Die Lösung: Die aktuelle Priorität eines Threads wird auf 15 für zwei Zeitscheiben gesetzt, falls aktueller Zeitpunkt – Zeitpunkt seines letzten Laufs > bestimmten Wert. Nach diesen zwei Zeitscheiben wird die Priorität des Threads wieder zurückgesetzt. ( Gruppe 3 )

Prozesse und Scheduling (Windows)

23

3. Synchronisation und Scheduling ( 3.4. Scheduling-Algorithmus ) 2.4. Deaktivierung des Schedulings Ein System-Thread mit niedriger Priorität hat ein Mutex betreten und die anderen System-Threads warten auf dieses Mutex. In diesem Fall wird das Scheduling so lange deaktiviert bis dieser Thread fertig ist. Damit wird das Verhungern der anderen System-Threads verhindert. Auf einer Multiprozessorsystem wird ein Spinlock für diesen Fall benutzt. 2.5. Verlängerung der Zeitscheibe Wenn ein Fenster in den Vordergrund gelangt, erhalten all seine Threads eine längere Zeitscheibe. Damit wird ein Vordergrundprozess immer besser bedient.

( Gruppe 3 )

Prozesse und Scheduling (Windows)

24

4. Literatur •

Tanenbaum, A.: Moderne Betriebssysteme, Prentice Hall, 2002



Silberschatz, A., Galvin, P., Gagne, G.: Operating System Concepts, John Willey, 2002



MSDN Library Visual Studio 6.0-Release

( Gruppe 3 )

Prozesse und Scheduling (Windows)

25

Vielen Dank für Ihre Aufmerksamkeit

( Gruppe 3 )

Prozesse und Scheduling (Windows)

26