Prozess (Computing) – Wikipedia

Besondere Ausführung eines Computerprogramms

Eine Liste der von htop angezeigten Prozesse

Beim Rechnen a Prozess ist die Instanz eines Computerprogramms, das von einem oder mehreren Threads ausgeführt wird. Es enthält den Programmcode und seine Aktivität. Abhängig vom Betriebssystem kann ein Prozess aus mehreren Ausführungsthreads bestehen, die gleichzeitig Anweisungen ausführen.[1][2]

Während ein Computerprogramm eine passive Sammlung von Anweisungen ist, ist ein Prozess die tatsächliche Ausführung dieser Anweisungen. Dem gleichen Programm können mehrere Prozesse zugeordnet sein. Wenn Sie beispielsweise mehrere Instanzen desselben Programms öffnen, wird häufig mehr als ein Prozess ausgeführt.

Multitasking ist eine Methode, mit der mehrere Prozesse Prozessoren (CPUs) und andere Systemressourcen gemeinsam nutzen können. Jede CPU (Kern) führt jeweils eine einzelne Aufgabe aus. Durch Multitasking kann jedoch jeder Prozessor zwischen ausgeführten Aufgaben wechseln, ohne auf den Abschluss jeder Aufgabe warten zu müssen (Preemption). Abhängig von der Betriebssystemimplementierung können Switches ausgeführt werden, wenn Aufgaben initiiert werden und auf den Abschluss von Eingabe- / Ausgabevorgängen warten, wenn eine Aufgabe freiwillig die CPU liefert, bei Hardware-Interrupts und wenn der Betriebssystem-Scheduler entscheidet, dass ein Prozess seine Fair abgelaufen ist Anteil der CPU-Zeit (z. B. vom Completely Fair Scheduler des Linux-Kernels).

Eine übliche Form des Multitasking ist die zeitliche Aufteilung der CPU, mit der die Ausführung von Benutzerprozessen und -threads sowie von unabhängigen Kernel-Tasks verschachtelt wird. Letztere Funktion ist jedoch nur in präemptiven Kerneln wie Linux möglich. Preemption hat einen wichtigen Nebeneffekt für interaktive Prozesse, denen in Bezug auf CPU-gebundene Prozesse eine höhere Priorität eingeräumt wird. Daher werden Benutzern beim einfachen Drücken einer Taste oder beim Bewegen einer Maus sofort Rechenressourcen zugewiesen. Darüber hinaus erhalten Anwendungen wie die Video- und Musikwiedergabe eine Echtzeitpriorität, die andere Prozesse mit niedrigerer Priorität verhindert. In Time-Sharing-Systemen werden Kontextwechsel schnell ausgeführt, was den Anschein erweckt, als würden mehrere Prozesse gleichzeitig auf demselben Prozessor ausgeführt. Diese gleichzeitige Ausführung mehrerer Prozesse wird als Parallelität bezeichnet.

Aus Sicherheits- und Zuverlässigkeitsgründen verhindern die meisten modernen Betriebssysteme die direkte Kommunikation zwischen unabhängigen Prozessen und bieten streng vermittelte und kontrollierte Kommunikationsfunktionen zwischen Prozessen. Es ist der Hauptchip in einem Computer, der Anweisungen verarbeitet, Berechnungen durchführt und den Informationsfluss über ein Computersystem verwaltet, das mit Eingabe-, Ausgabe- und Speichersystemen kommuniziert, um Aufgaben auszuführen.

Darstellung[edit]

Im Allgemeinen besteht ein Computersystemprozess aus (oder soll es sein) besitzen) die folgenden Ressourcen:

  • Ein Bild des ausführbaren Maschinencodes, der einem Programm zugeordnet ist.
  • Speicher (normalerweise ein Bereich des virtuellen Speichers); Dazu gehören der ausführbare Code, prozessspezifische Daten (Eingabe und Ausgabe), ein Aufrufstapel (um aktive Unterprogramme und / oder andere Ereignisse zu verfolgen) und ein Heap, der während der Laufzeit generierte Zwischenberechnungsdaten enthält.
  • Betriebssystembeschreibungen von Ressourcen, die dem Prozess zugewiesen sind, z. B. Dateideskriptoren (Unix-Terminologie) oder Handles (Windows) sowie Datenquellen und -senken.
  • Sicherheitsattribute wie der Prozessverantwortliche und die Berechtigungen des Prozesses (zulässige Vorgänge).
  • Prozessorstatus (Kontext), z. B. Inhalt der Register und Adressierung des physischen Speichers. Das Zustand wird normalerweise in Computerregistern gespeichert, wenn der Prozess ausgeführt wird, und ansonsten im Speicher.[1]

Das Betriebssystem enthält die meisten dieser Informationen zu aktiven Prozessen in Datenstrukturen, die als Prozesssteuerungsblöcke bezeichnet werden. Jede Teilmenge der Ressourcen, typischerweise mindestens der Prozessorstatus, kann jedem der Prozessthreads in Betriebssystemen zugeordnet sein, die Threads oder unterstützen Kind Prozesse.

Das Betriebssystem hält seine Prozesse getrennt und weist die benötigten Ressourcen zu, sodass es weniger wahrscheinlich ist, dass sie sich gegenseitig stören und Systemfehler verursachen (z. B. Deadlock oder Thrashing). Das Betriebssystem kann auch Mechanismen für die Kommunikation zwischen Prozessen bereitstellen, damit Prozesse auf sichere und vorhersehbare Weise interagieren können.

Multitasking und Prozessmanagement[edit]

Ein Multitasking-Betriebssystem kann nur zwischen Prozessen wechseln, um den Eindruck zu erwecken, dass viele Prozesse gleichzeitig (dh parallel) ausgeführt werden. Tatsächlich kann jedoch immer nur ein Prozess gleichzeitig auf einer einzelnen CPU ausgeführt werden (es sei denn, die CPU verfügt über mehrere Kerne , dann können Multithreading oder andere ähnliche Technologien verwendet werden).[a]

Es ist üblich, einen einzelnen Prozess einem Hauptprogramm zuzuordnen und untergeordnete Prozesse mit parallelen Nebenprozessen zu verknüpfen, die sich wie asynchrone Unterprogramme verhalten. Ein Prozess soll besitzen Ressourcen, von denen ein Bild seines Programms (im Speicher) ist eine solche Ressource. In Multiprozessorsystemen viele Prozesse können von demselben wiedereintretenden Programm an derselben Stelle im Speicher ausgeführt oder gemeinsam genutzt werden, aber jeder Prozess soll seinen eigenen besitzen Bild des Programms.

Prozesse werden in eingebetteten Betriebssystemen häufig als “Aufgaben” bezeichnet. Der Sinn von “Prozess” (oder Aufgabe) ist “etwas, das Zeit in Anspruch nimmt”, im Gegensatz zu “Erinnerung”, was “etwas ist, das Raum einnimmt”.[b]

Die obige Beschreibung gilt sowohl für Prozesse, die von einem Betriebssystem verwaltet werden, als auch für Prozesse, die durch Prozesskalküle definiert sind.

Wenn ein Prozess etwas anfordert, auf das er warten muss, wird es blockiert. Wenn sich der Prozess im blockierten Zustand befindet, kann er auf die Festplatte übertragen werden. Dies ist jedoch in einem virtuellen Speichersystem transparent, in dem sich Bereiche des Arbeitsspeichers eines Prozesses möglicherweise tatsächlich auf der Festplatte und nicht im Hauptspeicher befinden. Beachten Sie, dass auch Teile aktiver Prozesse / Aufgaben (Ausführen von Programmen) zum Auslagern auf die Festplatte berechtigt sind, wenn die Teile kürzlich nicht verwendet wurden. Nicht alle Teile eines ausführenden Programms und seine Daten müssen sich im physischen Speicher befinden, damit der zugehörige Prozess aktiv ist.

Prozesszustände[edit]

Die verschiedenen Prozesszustände, die in einem Zustandsdiagramm angezeigt werden, mit Pfeilen, die mögliche Übergänge zwischen Zuständen anzeigen.

Ein Betriebssystemkern, der Multitasking ermöglicht, benötigt Prozesse mit bestimmten Zuständen. Namen für diese Zustände sind nicht standardisiert, haben jedoch ähnliche Funktionen.[1]

  • Zunächst wird der Prozess “erstellt”, indem er von einem sekundären Speichergerät (Festplattenlaufwerk, CD-ROM usw.) in den Hauptspeicher geladen wird. Danach weist der Prozessplaner ihm den Status “Warten” zu.
  • Während der Prozess “wartet”, wartet er darauf, dass der Scheduler einen sogenannten Kontextwechsel durchführt. Der Kontextschalter lädt den Prozess in den Prozessor und ändert den Status in “Ausführen”, während der zuvor “Ausführen” -Prozess in einem “Warten” -Zustand gespeichert wird.
  • Wenn ein Prozess im Status “Ausführen” auf eine Ressource warten muss (z. B. auf das Öffnen von Benutzereingaben oder Dateien warten), wird ihm der Status “Blockiert” zugewiesen. Der Prozessstatus wird wieder in “Warten” geändert, wenn der Prozess nicht mehr warten muss (in einem blockierten Status).
  • Sobald der Prozess die Ausführung abgeschlossen hat oder vom Betriebssystem beendet wird, wird er nicht mehr benötigt. Der Prozess wird sofort entfernt oder in den Status “Beendet” versetzt. Nach dem Entfernen wartet es nur darauf, aus dem Hauptspeicher entfernt zu werden.[1][3]

Interprozesskommunikation[edit]

Wenn Prozesse miteinander kommunizieren müssen, müssen sie Teile ihrer Adressräume gemeinsam nutzen oder andere Formen der Interprozesskommunikation (IPC) verwenden. Beispielsweise muss in einer Shell-Pipeline die Ausgabe des ersten Prozesses an die zweite übergeben werden, und so weiter. Ein anderes Beispiel ist eine Aufgabe, die in kooperierende, aber teilweise unabhängige Prozesse zerlegt werden kann, die gleichzeitig ausgeführt werden können (dh unter Verwendung von Parallelität oder echter Parallelität). Das letztere Modell ist ein besonderer Fall der gleichzeitigen Ausführung und kann durchgeführt werden, wenn genügend CPU-Kerne für verfügbar sind alle Prozesse, die zur Ausführung bereit sind).

Es ist sogar möglich, dass zwei oder mehr Prozesse auf verschiedenen Computern ausgeführt werden, auf denen möglicherweise ein anderes Betriebssystem (OS) ausgeführt wird. Daher sind einige Mechanismen für die Kommunikation und Synchronisation (sogenannte Kommunikationsprotokolle für verteiltes Rechnen) erforderlich (z. B. die Message Passing Interface). oft einfach MPI genannt).

Geschichte[edit]

In den frühen 1960er Jahren hatte sich die Computersteuerungssoftware von einer Monitorsteuerungssoftware, beispielsweise IBSYS, zu einer Exekutivsteuerungssoftware entwickelt. Mit der Zeit wurden Computer schneller, während die Computerzeit noch weder billig noch voll ausgelastet war. Eine solche Umgebung machte Multiprogrammierung möglich und notwendig. Multiprogramming bedeutet, dass mehrere Programme gleichzeitig ausgeführt werden. Zunächst lief aufgrund der zugrunde liegenden Uniprozessor-Computerarchitektur mehr als ein Programm auf einem einzelnen Prozessor, und sie teilten sich knappe und begrenzte Hardwareressourcen. folglich war die Parallelität von a seriell Natur. Auf späteren Systemen mit mehreren Prozessoren können mehrere Programme gleichzeitig ausgeführt werden parallel.

Programme bestehen aus Anweisungssequenzen für Prozessoren. Ein einzelner Prozessor kann jeweils nur einen Befehl ausführen: Es ist unmöglich, mehrere Programme gleichzeitig auszuführen. Ein Programm benötigt möglicherweise eine Ressource, z. B. ein Eingabegerät mit großer Verzögerung, oder ein Programm startet möglicherweise einen langsamen Vorgang, z. B. das Senden einer Ausgabe an einen Drucker. Dies würde dazu führen, dass der Prozessor “inaktiv” (nicht verwendet) ist. Um den Prozessor jederzeit beschäftigt zu halten, wird die Ausführung eines solchen Programms angehalten und das Betriebssystem schaltet den Prozessor um, um ein anderes Programm auszuführen. Für den Benutzer scheint es, dass die Programme zur gleichen Zeit ausgeführt werden (daher der Begriff “parallel”).

Kurz danach wurde der Begriff eines “Programms” auf den Begriff eines “ausführenden Programms und seines Kontexts” erweitert. Das Konzept eines Prozesses wurde geboren, der auch mit der Erfindung des wiedereintretenden Codes notwendig wurde. Themen kamen etwas später. Mit dem Aufkommen von Konzepten wie Time-Sharing, Computernetzwerken und Shared-Memory-Computern mit mehreren CPUs wurde das alte “Multiprogramming” jedoch zu echtem Multitasking, Multiprocessing und später zu Multithreading.

Siehe auch[edit]

  1. ^ Einige moderne CPUs kombinieren zwei oder mehr unabhängige Prozessoren in einer Mehrkernkonfiguration und können mehrere Prozesse gleichzeitig ausführen. Eine andere Technik, die als simultanes Multithreading bezeichnet wird (in der Hyper-Threading-Technologie von Intel verwendet), kann die gleichzeitige Ausführung mehrerer Prozesse oder Threads simulieren.
  2. ^ Aufgaben und Prozesse beziehen sich im Wesentlichen auf dieselbe Entität. Und obwohl sie etwas unterschiedliche terminologische Geschichten haben, werden sie inzwischen als Synonyme verwendet. Heutzutage wird der Begriff Prozess im Allgemeinen der Aufgabe vorgezogen, außer wenn auf “Multitasking” Bezug genommen wird, da der alternative Begriff “Multiprocessing” zu leicht mit dem Multiprozessor (einem Computer mit zwei oder mehr CPUs) zu verwechseln ist.

Verweise[edit]

Weiterführende Literatur[edit]

Externe Links[edit]