Prozesse und Threads
Ein Prozess ist eine Aktivität im System, die durch einen Befehl, ein Shellprogramm oder einen anderen Prozess gestartet wird.
Folgende Prozesseigenschaften sind verfügbar:
- pid
- pgid
- uid
- gid
- Umgebung
- cwd
- Dateideskriptoren
- Signalaktionen
- Prozessstatistiken
- nice
Diese Eigenschaften sind in der Datei /usr/include/sys/proc.h definiert.
Die Threadeigenschaften lauten wie folgt:
- Stack
- Zeitplanungsverfahren
- Priorität planen
- anstehende Signale
- geblockte Signale
- threadspezifische Daten
Diese Threadeigenschaften sind in der Datei /usr/include/sys/thread.h definiert.
Jeder Prozess besteht aus einem oder mehreren Threads. Ein Thread ist ein einzelner sequenzieller Steuerungsfluss. Mehrere Steuerthreads ermöglichen es einer Anwendung, Operationen zu überschneiden, z. B. Lesen von einem Terminal und Schreiben in eine Datei.
Mehrere Steuerthreads ermöglichen einer Anwendung auch, Anforderungen von mehreren Benutzern gleichzeitig zu bedienen. Threads stellen diese Funktionalität ohne den zusätzlichen Systemaufwand für mehrere Prozesse bereit, z. B. durch den Systemaufruf fork () .
Eine schnelle Verzweigungsroutine mit dem Namen f_fork () wurde in AIXeingeführt. Diese Routine ist nützlich für Multithreadanwendungen, die die Subroutine exec () unmittelbar nach dem Aufrufen der Subroutine fork () aufrufen. Die Subroutine fork () ist langsamer, da sie Fork-Handler aufruft, um die Bibliothekssperren anzufordern, bevor sie aufgespalten wird, und ermöglicht es dem untergeordneten Handler, die untergeordneten Handler auszuführen, die die Sperren initialisieren. Die Subroutine f_fork () umgeht diese Handler und ruft den Systemaufruf kfork () direkt auf. Web-Server sind ein gutes Beispiel für eine Anwendung, die die Subroutine f_fork () verwenden kann.