58 lines
2.0 KiB
Markdown
58 lines
2.0 KiB
Markdown
# Prozessstruktur
|
|
|
|
## Prozessdarstellung
|
|
- Umfasst [_Zustände_](prozesszustaende.md) und _Struktur_ eines laufenden Programms
|
|
- Grundlegende Komponenten, die die _Speicherrepräsentation_ eines Prozesses vorhanden sein können
|
|
- Systemumgebung
|
|
- Stack
|
|
- Heap
|
|
- BSS (Block Started by Symbol)
|
|
- Datensegment
|
|
- Codesegment
|
|
- 
|
|
|
|
|
|
Beispiel: Terminalbefehl **- size**
|
|
- 
|
|
|
|
## Prozesse im Speicher
|
|
- 
|
|
- Ablage im physischen Speicher erfolgt in nicht fortlaufender Weise durch den virtuellen Speicher
|
|
- nicht zwangsläufig ständig im Hauptspeicher
|
|
|
|
## Erzeugung von Prozesskopien
|
|
- Systemaufruf **fork** unter Linux/Unix
|
|
- Erzeugung einer _identischen Kopie_ eines Prozesses
|
|
- aufrufender Prozess: _Elternprozess (Parent Process)_
|
|
- neuer Prozess: _Kind-Prozess_ (Child Process)
|
|
- hat gleichen _Programmcode_ und _Befehlszähler_
|
|
- verweist auf gleiche Zeile im Programmcode
|
|
- Speicherbereiche von Kind- und Elternprozess streng getrennt
|
|
- 
|
|
|
|
## Erzeugung von neuen Prozessen
|
|
- Systemaufruf **exec**
|
|
- Ersetzt bestehenden Prozess durch einen anderen
|
|
- neuer Prozess erbt PID des aufrufenden Prozesses
|
|
- 
|
|
- Soll aus einem Prozess (_bspw. Kommandozeilen-Interpreter (Shell)_) heraus ein Programm gestartet werden:
|
|
- _fork_ -> _exec_
|
|
- 
|
|
|
|
|
|
## Übersicht Erzeugung/Verkettung/Vergabelung
|
|

|
|
|
|
|
|
## Beenden von Prozessen
|
|
Arten des Beendens:
|
|
- Normales Beenden (freiwillig, im Code definiert)
|
|
- Beenden aufgrund eines Fehlers (freiwillig, im Code definiert)
|
|
- Beenden aufgrund eines schwerwiegenden Fehlers (unfreiwillig, durch BS)
|
|
- Beenden durch einen anderen Prozess (unfreiwillig)
|
|
|
|
Unix Befehl: **kill** erstellt einen Wrapper um BS-Aufruf _kilL()_
|
|
- ist auf jedem Unix als alleinstehende Anwendung vorhanden (_/bin/kill_)
|
|
|
|
## Zeitliche Ausführung von Prozessen
|
|
- |