Als Prozess wird in der Informatik der Ablauf eines Programms bezeichnet. Zum Ablauf ist das Speicherabbild des Programms, Speicher für die Daten, vom Betriebssystem bereitgestellte Ressourcen und ein Prozessor notwendig. Daher werden diese Betriebsmittel als zum Prozess zugehörig betrachtet. Allgemein spricht man von einem Programm in Ausführung. Ein Prozess kann auch als Code und Daten im Arbeitsspeicher plus Kontext (Register im Prozessor, Stack, Puffer, Filehandles) aufgefasst werden. Das definiert also, dass ein Prozess aus dem Speicherabbild, d. h. den Programmanweisungen und Daten, die im Hauptspeicher liegen, der Registerbelegung und Verwaltungsinformationen, z. B. der bisherigen verbrauchten CPU-Zeit, besteht.
Der eine oder gegebenenfalls mehrere Prozessoren werden in Multitasking-Betriebssystemen mehreren Prozessen, genauer deren Threads sequentiell zugeordnet. Die bei nicht zugeordnetem Prozessor gespeicherten Abbilder des Prozessor-Inhaltes (Register) gehören mit zum Prozess. Ein Prozess kann gegebenenfalls mehrere Threads umfassen, die aber im selben Speicherraum arbeiten, siehe auch Protected Mode.
Jede Ressource, die ein Thread anfordert, gehört dem Prozess und kann von anderen Threads dieses Prozesses benutzt werden.
Prozesse sind einerseits Handlungsträger in einer Rechenanlage, andererseits Objekte, denen Prozesskapazität (CPU-Kapazität) zugeteilt werden.
Beim Betriebssystem Unix läuft in einem Prozess häufig nur ein einziger Aktivitätsträger (Thread). Die Arbeit mit mehreren Threads wird erst mit der pthreads Bibliothek, normiert als Standard POSIX 1003.1c (Quelle: Galileo Computing), ermöglicht. Hierbei bringt jedes UNIX System wie beispielsweise Solaris oder Linux eine eigene Implementation dieser Bibliothek mit. Bei der Anzeige der Prozesszustände wird der Zustand des Threads, der den Prozess repräsentiert, angegeben. Das sind folgende:
Ein Prozess ist meistens unterteilt in drei Segmente:
TextSegment (hier ist der Code hinterlegt) (Shareable) DataSegment (hier liegen die Daten des Threads) StackSegment (hier sind die Stacks des Threads gespeichert)
ein Typisches CodeSegment eines Prozesses sieht folgendermaßen aus (symbolischer Code):
Process p { result = fork(); if(result==0) { // wird von child ausgeführt } else { // wird von parent ausgeführt } }
Der Aufruf von fork() überschreibt den Rückgabewert des Parent-Prozesses mit der PID des Child-Prozesses, während der ChildProzess den Rückgabewert 0 erhält.
Microsoft Windows NT seit Version 4.0 teilt den linearen Adressraum in der 32-Bit Version, bedingt durch eine Limitierung der MIPS-Architektur, in zwei jeweils 2 GB große Teile. Die unteren 2 GB des Virtuellen Adressraumes stehen dem jeweiligem User Mode-Prozeß zur freien Verfügung (User Space), die oberen 2 GB sind für das System (Kernel Space), wie den Kernel, den physikalischen Speicher und in den Speicher "gemappte" I/O-Addressbereiche wie z. B. PCI-Geräte, reserviert. Allerdings ist es möglich, diese Einteilung auf 3 GB Userspace und 1 GB Kernelspace zu verändern. Auf einem 32Bit-System sind somit maximal 3G virtuellen Addressraums für einen Benutzerprozess bei knapp unter 1 Gigabyte Hauptspeicher verwendbar. Bei 2 Gigabyte RAM reduziert sich dieser Anteil auf knapp 2G virtuellen Addressraums. Diese Hardware-Beschränkung teilt übrigens auch Linux. (Quelle: Inside Microsoft Windows 2000, 3rd Ed. Microsoft Press)
Die Art der Prozesserzeugung hängt nun davon ab, in welchem Subsystem von Windows der Prozess erzeugt wird.
Wird ein Prozess aus einem Unix-Executable erzeugt, wird das Posix-Subsystem (Posix.exe) gestartet und ein Prozess mit Hilfe von fork.exe erzeugt.
Es läuft immer genau ein Thread im Windows-Subsystem, alle anderen Subsysteme müssen "manuell" gestartet werden um Ressourcen zu sparen.
Prinzipiell gibt es unter Windows drei Möglichkeiten, einen Prozess zu erzeugen:
Ein Prozess wird automatisch beendet, wenn sein letzter Thread beendet ist.
Siehe auch: Thread, Leerlaufprozess, Nebenläufigkeit, Prozesskontrollblock
Betriebssystemtheorie | Parallelverarbeitung
Proces | Process (computing) | Proceso | Prosessi | Processus | プロセス | Процесс | Proces (informatika) | Process (dator)
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Prozess (Informatik)".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world