Prozess (Informatik)

Prozess (Informatik)

Ein Prozess ist in der Informatik „der Vorgang einer algorithmisch ablaufenden Informationsverarbeitung“. Als Spezialfall „in Betriebssystemen ist ein Prozess ein Vorgang, der durch ein Programm kontrolliert wird, welches zur Ausführung einen Prozessor benötigt“ (Duden Informatik) [1].

Zum Prozess gehören das Programm samt Daten und der Prozesskontext.

Inhaltsverzeichnis

Prozesskontext

Beim Kontext wird zwischen dem Hardwarekontext und dem Softwarekontext unterschieden.

Der Hardwarekontext wird gebildet mit dem Speicherabbild des ausführbaren Programms (Code), Speicher für die Daten, weitere vom Betriebssystem bereitgestellte Betriebsmittel (Ressourcen) und der zugeordnete Prozessor. Ein Prozess nutzt diese Ressourcen exklusiv, d.h. insbesondere, dass sein Adressraum gegenüber anderen Prozessen abgeschottet ist und seine Daten somit nur ihm zugänglich sind (dies ist auch der Hauptunterschied zum Thread, der im gemeinsamen Adressraum seines Gesamtprozesses läuft).

Der Softwarekontext enthält Verwaltungsinformationen, auch über erforderliche Betriebsmittel.

Prozesskommunikation

Selten gibt es mehrere Prozesse zu einem Programm, die je nach Anwendung auch gleichzeitig oder nebenläufig ablaufen. Damit sie zusammenarbeiten können, muss das Betriebssystem Wege zur Interprozesskommunikation anbieten. Im einfachen Fall werden mehrere Prozesse von einem Prozessor abgearbeitet (quasi-gleichzeitig, Multitasking), allgemein werden mehreren Prozessoren mehrere Prozesse zugeordnet (echt gleichzeitig, Multiprocessing). Die Verwendung mehrerer Prozessoren sowie das quasi-gleichzeitige Abarbeiten verschiedener Prozesse auf einer CPU muss von der verwendeten Hard- und Software inklusive Betriebssystem unterstützt sein. Moderne Betriebssysteme kombinieren Multitasking und Multiprocessing.

Prozessmodell

Ein Prozessor kann immer nur einen Prozess verarbeiten. Bei den ersten Computern wurden daher die Programme immer nacheinander als Ganzes verarbeitet, es konnte immer nur ein Programm zur gleichen Zeit (exklusiv) ablaufen. Auch die Benutzer konnten einen Computer nicht gleichzeitig verwenden. Daher wurde die Möglichkeit geschaffen, Prozesse nur teilweise auszuführen, zu unterbrechen, und später wieder aufzusetzen und fortzuführen. Dadurch können mehrere Prozesse quasi gleichzeitig ausgeführt werden. Das Prozessmodell beschreibt die drei wesentlichen Prozesszustände, die je nach Ausgestaltung um weitere ergänzt werden können:

  • BEREIT: Der Prozess besitzt alle Ressourcen (bis auf den Prozessor) und wartet auf die Zuteilung eines Prozessors.
  • LAUFEND: Der Prozess ist aktuell einem Prozessor zugeordnet und läuft ab.
  • WARTEND: Der Prozess wurde durch das Betriebssystem unterbrochen und wartet auf eine Ressource.

Das Betriebssystem ändert eigenständig den Zustand eines jeden Prozesses zwischen BEREIT und LAUFEND hin und her, bis alle abgearbeitet sind. Einzelne Zeitabschnitte des Prozessors werden den Prozessen zugeordnet, die ablaufen wollen.

Ein Prozess kann durch das Betriebssystem auch unterbrochen werden und befindet sich dann im Zustand WARTEND. In diesem Zustand wird er nicht mehr ausgeführt, er wartet auf die Zuteilung von erforderlichen Betriebsmitteln (Ressourcen). Wenn die Zuteilung erfolgt ist, wird er zunächst wieder in den Zustand BEREIT versetzt. Mögliche Ressourcen sind zum Beispiel: Speicher, Zugriff auf Ein-/Ausgabegeräte oder Benutzereingabe.

Betriebssysteme benutzen unterschiedliche Strategien, ihren Prozessen Zeitabschnitte eines Prozessors zuzuordnen, siehe Scheduling und Dispatcher. Weit verbreitet ist das Zeitscheibenverfahren fester Länge verbunden mit einer priorisierten Warteschlange (Vorrangwarteschlange) als Ringpuffer (Round-Robin).

Threads

Ein Thread (auch leichtgewichtiger Prozess genannt) ist eine Erweiterung des Prozessmodells. Er teilt sich mit anderen Threads die Betriebsmittel und den Prozesskontext eines Prozesses und besitzt nur einen eigenen Stapelspeicher (Stack). Bei betriebssystem-unterstützten Threads können diese durch mehrere CPU-Kerne echt parallel ausgeführt werden.

DV-Technik

Prozesse beim Betriebssystem UNIX

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:

  • dead: Der Prozess wurde beendet, er belegt jedoch noch Speicherplatz.
  • ready: Der Prozess wartet auf Zuteilung der CPU (Zeitscheibe). Gibt es den Ready-Zustand, so befinden sich höchstens so viele Prozesse im Zustand running, wie CPUs vorhanden sind.
  • running: Entweder genau der Prozess, der gerade bearbeitet wird, oder alle Prozesse, die momentan Rechenarbeit verrichten können.
  • sleep: Der Prozess wurde auf eigenen Wunsch zurückgestellt. Er kann Signale entgegennehmen, wie z. B. Timer, oder Ergebnisse von Kindprozessen.
  • trace: Der Prozess wurde von außen angehalten, üblicherweise durch einen Debugger.
  • wait: Der Prozess wartet auf ein Ereignis, üblicherweise eine Benutzereingabe.
  • uninterruptible sleep: Der Prozess wartet auf ein Ereignis, üblicherweise Hardware. Tritt dieses Ereignis ein, ohne dass der anfragende Prozess es entgegennimmt, so kann das System instabil werden.
  • zombie: Der Prozess wurde beendet und aus dem Arbeitsspeicher gelöscht, aber noch nicht aus der Prozessliste entfernt.

Unter Unix wird ein neuer Prozess mittels des Systemaufrufs fork (Gabelung) erzeugt. Dabei wird ein zweiter identischer Prozess gestartet, während der erzeugende Prozess (auch Elternprozess genannt) weiterläuft. Alle Daten des ersten Prozesses, beispielsweise auch geöffnete Dateien, werden für den zweiten Prozess kopiert und stehen für diesen nun getrennt zur Verfügung. Jeder Prozess hat seinen eigenen Speicher. Der zweite Prozess ist ein vollwertiger Prozess ohne Einschränkung. Beide Prozesse können dann eigenständig weiterlaufen.

Ein Prozess ist meistens unterteilt in drei Segmente:

  • Text-Segment: Hier ist der Code hinterlegt (shareable).
  • Data-Segment: Hier liegen die Daten des Threads.
  • Stack-Segment: Hier sind die Stacks des Threads gespeichert.

Ein typisches Code-Segment 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 Child-Prozess den Rückgabewert 0 erhält.

Prozesse beim Betriebssystem Windows

Unter Windows heißen Prozesse Tasks. In neuen Windows-Versionen ist es üblich, mit mehreren Aktivitätsträgern (Threads) zu arbeiten. Der sogenannte „Task-Manager“ (seit Windows NT 4.0) zeigt bei entsprechender Aktivierung der Anzeigespalte die Anzahl der zugehörigen Aktivitätsträger zu jedem Prozess.

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-Prozess 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-Adressbereiche 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 32-Bit-System sind somit maximal 3 GB virtuellen Adressraums für einen Benutzerprozess bei knapp unter 1 Gigabyte Hauptspeicher verwendbar. Bei 2 Gigabyte RAM reduziert sich dieser Anteil auf knapp 2 GB virtuellen Adressraums. (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.

Ein Prozess wird automatisch beendet, wenn sein letzter Thread beendet ist.

Beenden von Prozessen

Prozesse können auf verschiedene Weise beendet werden. Wird ein Programm erfolgreich aufgerufen, so werden dessen Instruktionen nacheinander abgearbeitet.

  • Natürliches Ende

Am Ende, nachdem alle Anweisungen ausgeführt wurden, wird das Programm normalerweise durch einen exit() Aufruf terminiert.

  • Beenden durch äußere Einflüsse

Der Benutzer kann einen Prozess vorzeitig durch Senden von Signalen beenden. In Unix geschieht dies durch den Befehl kill.

  • Vorzeitige Beendigung durch Programmfehler

Programmfehler führen oft zur Beendigung eines laufenden Prozesses. Programmfehler können sein:

  • unerlaubter Speicherzugriff
  • arithmetische Fehler wie z. B. Division durch 0
  • unerlaubte Maschinenbefehle.
  • Systembedingtes Beenden

Das Betriebssystem kann ebenfalls einen Prozess vorzeitig beenden, wenn zum Beispiel kein freier Speicher mehr verfügbar ist, oder wenn ein unerwarteter Fehler in der Hardware oder im Betriebssystem aufgetaucht ist.

Einzelnachweis

  1. Duden Informatik ISBN 3-411-05232-5

Weblinks

Siehe auch

Leerlaufprozess, Nebenläufigkeit, Prozesskontrollblock, Bernstein-Bedingung


Wikimedia Foundation.

См. также в других словарях:

  • Prozess (Begriffsklärung) — Prozess steht für: einen Verlauf, eine Entwicklung, einen gerichteten Ablauf eines Geschehens, siehe Prozess Prozess (Chemie), der Ablauf einer chemischen Reaktion Prozess (Informatik), der Vorgang einer von einem Computerprogramm ausgeführten… …   Deutsch Wikipedia

  • Prozess-ID — Ein Process identifier (process ID, PID) ist ein einzigartiger Schlüssel, welcher der eindeutigen Identifikation von Prozessen dient. Der PID ändert sich während der Laufzeit des Prozesses nicht. Nach dem Beenden des Prozesses wird der PID wieder …   Deutsch Wikipedia

  • Prozess ID — Ein Process identifier (process ID, PID) ist ein einzigartiger Schlüssel, welcher der eindeutigen Identifikation von Prozessen dient. Der PID ändert sich während der Laufzeit des Prozesses nicht. Nach dem Beenden des Prozesses wird der PID wieder …   Deutsch Wikipedia

  • Informatik — ist die „Wissenschaft von der systematischen Verarbeitung von Informationen, besonders der automatischen Verarbeitung mit Hilfe von Digitalrechnern“ [1]. Historisch hat sich die Informatik einerseits aus der Mathematik entwickelt, andererseits… …   Deutsch Wikipedia

  • Prozess (Computer) — Der Prozess in der Informatik ist ein ablaufendes Programm. Zum Ablauf ist das Speicherabbild des ausführbaren Programms (Code), Speicher für die Daten, weitere vom Betriebssystem bereitgestellte Betriebsmittel (Ressourcen) und ein Prozessor… …   Deutsch Wikipedia

  • Informatik (Studienfach) — Dieser Artikel oder Absatz stellt die Situation in Deutschland dar. Hilf mit, die Situation in anderen Ländern zu schildern. Das Informatikstudium ist das Studium der Fachrichtung Informatik. Es wird an Hochschulen mit einem akademischen Grad… …   Deutsch Wikipedia

  • Faden (Informatik) — Ein Thread (auch: Aktivitätsträger oder leichtgewichtiger Prozess, vereinzelt auch: Faden) bezeichnet in der Informatik einen Ausführungsstrang oder eine Ausführungsreihenfolge in der Abarbeitung eines Programms. Ein Thread ist Teil eines… …   Deutsch Wikipedia

  • Schedule (Informatik) — Ein Prozess Scheduler (Scheduler = Steuerprogramm) ist eine Arbitrationslogik, der die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen regelt. Prozess Scheduler kann man grob in unterbrechende (preemptive) und nicht unterbrechende (non …   Deutsch Wikipedia

  • Scheduler (Informatik) — Ein Prozess Scheduler (Scheduler = Steuerprogramm) ist eine Arbitrationslogik, der die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen regelt. Prozess Scheduler kann man grob in unterbrechende (preemptive) und nicht unterbrechende (non …   Deutsch Wikipedia

  • Scheduling (Informatik) — Ein Prozess Scheduler (Scheduler = Steuerprogramm) ist eine Arbitrationslogik, der die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen regelt. Prozess Scheduler kann man grob in unterbrechende (preemptive) und nicht unterbrechende (non …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»