Prozesse erzeugen
Jeder Prozess erhält zur Unterscheidung und Verwaltung direkt bei seiner Erzeugung eine eindeutige Prozess-ID
- Während Laufzeit eines BS werden Prozesse erzeugt, abgearbeitet, unterbrochen, weiter abgearbeitet und beendet
- Bei Start eines Rechners passiert folgendes:
- Wird Rechner eingeschaltet, startet BS, wobei ein Mechanismus den ersten Prozess erzeugt (PID = 0, Leerlaufprozess)
- Ausgehend vom ersten Prozess starten weitere Prozesse, die zum BS gehören für Erfüllung der Aufgabe des BS
- dann startet Anwender Anwendungsprogramme, die jeweils als eigener Prozess vom BS verwaltet werden
- allgemein hängt es vom Betriebssystem ab, wie genau die Erzeugung eines Prozesses erfolgt:
- Unter Unix/Linux gibt es dazu einen Systemaufruf fork und ist sehr einfach
- unter Windows heißt dieser Systemaufruf CreateProcess und ist sehr kompliziert
Fork - Linux
- Systemaufruf fork macht von aufrufenden Prozess (Elternprozess) Kopie (Kindprozess)
- Kindprozess erhält eigene Prozess-ID, übernimmt Informationen des Elternprozesses
- Kindprozess ist nach fork unabhängig vom Elternprozess eigenständige Systeminstanz
- Sowohl Eltern- als auch Kindprozess laufen nach dem "klonen" an gleicher Stelle weiter
- fork liefert Rückgabewert und auf das fork folgende Anweisung wird ausgeführt
- Rückgabewert von fork > 0; fork = 0: Kindprozess; fork < 0: Es ist Fehler aufgetreten.
CreateProcess - Windows
- Der Systemaufruf CreateProcess besteht aus sechs Hauptphasen bei der Prozesserzeugung.
- Anschließend ist der neue Prozess komplett erstellt und wartet auf die Zuteilung der CPU.
1. | beginnt mit dem Öffnen der EXE-Datei. |
2. | erstellt notwendige Verwaltungsobjekte. |
3. | erstellt notwendige Verwaltungsobjekte. |
4. | informiert das Windows-Subsystem über den hier neu erstellten Prozess. |
5. | leitet die Ausführung des neu erstellten Prozesses ein. |
6. | nimmt alle abschließenden Initialisierungen vor. |
No Comments