Prozess (Computer)

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 notwendig. Ein Prozess nutzt diese Ressourcen exklusiv. Notwendige Betriebsmittel zusammen mit Verwaltungsinformationen definieren den Prozesskontext.

Aus der Definition folgt: Es kann mehrere Prozesse zu einem Programm geben, die je nach Anwendung auch gleichzeitig oder nebenläufig ablaufen. Im einfachen Fall werden mehrere Prozesse von einem Prozessor abgearbeitet, allgemein werden mehreren Prozessoren mehrere Prozesse zugeordnet. Die Verwendung mehrerer Prozessoren muss von der verwendeten Hard- und Software inklusive Betriebssystem unterstützt sein.

Inhaltsverzeichnis

Prozessmodell

Ein Prozessor kann immer nur einen Prozess gleichzeitig verarbeiten. Bei den ersten Computern wurden daher Programme immer nacheinander als Ganzes verarbeitet, es konnte immer nur ein Programm zur gleichen Zeit (exklusiv) ablaufen. Auch 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, was im Prozessmodell beschrieben wird.

Das Prozessmodell beschreibt die drei wesentlichen Zustände eines Prozesses:

  • WARTEND: Der Prozess wartet auf die Zuteilung eines Prozessors
  • LAUFEND: Der Prozess ist aktuell einem Prozessor zugeordnet und läuft ab.
  • UNTERBROCHEN: Der Prozess wurde durch einen anderen Prozess unterbrochen.

Ein Betriebssystem benutzt eine bestimmte Strategie um Zeitabschnitte des Prozessors den Prozessen zuzuordnen, die ablaufen wollen. Dabei ändert das Betriebssystem eigenständig den Zustand eines jeden Prozesse zwischen WARTEND und LAUFEND hin und her, bis alle abgearbeitet ist; pro Zeiteinheit ist immer nur ein Prozess im Zustand LAUFEND.

Andere Prozesse können ebenfalls einen Prozess unterbrechen. Er ist dann im Zustand UNTERBROCHEN und wird vom Betriebssystem auch nicht mehr zeitweise in den Zustand LAUFEND versetzt. Erst wenn ein anderer Prozess den Prozess wieder aufsetzt und in den Zustand WARTEND bringt, ist das wieder der Fall.

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 (leichtgewichtige Prozesse)

Threads (auch „leichtgewichtige Prozesse“ genannt) haben zwar eigene Stapelspeicher, besitzen jedoch im Gegensatz zu Prozessen keine eigenen Betriebsmittel wie Speicher oder geöffnete Dateien. Sie laufen als Teil eines Prozesses und verwenden dessen Betriebsmittel.

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 ChildProzess 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 2000) 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 32Bit-System sind somit maximal 3G virtuellen Adressraums für einen Benutzerprozess bei knapp unter 1 Gigabyte Hauptspeicher verwendbar. Bei 2 Gigabyte RAM reduziert sich dieser Anteil auf knapp 2G 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 kill Befehl.

  • 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.

Weblinks

Siehe auch

Leerlaufprozess, Nebenläufigkeit, Prozesskontrollblock, Bernstein-Bedingung


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Computer-aided styling — (CAS) (deutsch: computergestützte Gestaltung) bezeichnet den virtuellen Entwicklungsprozess im Design. Objekte werden auf der Basis von Skizzen (Renderings), mündlichen Angaben oder Tastdaten (Punktewolke) in einer 3D Software modelliert. Der CAS …   Deutsch Wikipedia

  • Computer Aided Facility Management — (CAFM) bzw. rechnergestütztes Anlagenmanagement ist die Unterstützung des Facility Managements durch die Informationstechnik in Form eines Computerprogramms, welches aus einer Datenbank und einer Anwenderoberfläche besteht. Dabei stehen die… …   Deutsch Wikipedia

  • Computer-aided facility management — (CAFM) ist die Unterstützung des Facility Managements durch die Informationstechnik in Form eines Computerprogramms, welches aus einer Datenbank und einer Anwenderoberfläche besteht. Dabei stehen die Bereitstellung von Informationen über die… …   Deutsch Wikipedia

  • Computer Prozess — 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

  • Computer-Betriebssystem — Ein Betriebssystem ist die Software, die die Verwendung (den Betrieb) eines Computers ermöglicht. Es verwaltet Betriebsmittel wie Speicher, Ein und Ausgabegeräte und steuert die Ausführung von Programmen. Betriebssystem heißt auf Englisch… …   Deutsch Wikipedia

  • Computer-Forensik — Die IT Forensik oder auch Computer Forensik bzw. Digitale Forensik ist ein Teilgebiet der Forensik. Die IT Forensik behandelt die Untersuchung von verdächtigen Vorfällen im Zusammenhang mit IT Systemen und der Feststellung des Tatbestandes und… …   Deutsch Wikipedia

  • Computer Science — Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere der automatischen Verarbeitung mit Hilfe von Rechenanlagen. Historisch hat sich die Informatik als Wissenschaft aus der Mathematik entwickelt,… …   Deutsch Wikipedia

  • Computer-Virus — Ein Computervirus (von lateinisch virus für „Gift“, „Schleim“; im Singular „das Computervirus“, alltagssprachlich auch „der Computervirus“, Plural „die Computerviren“) ist ein sich selbst verbreitendes Computerprogramm, welches sich in andere… …   Deutsch Wikipedia

  • Computer Virus — Ein Computervirus (von lateinisch virus für „Gift“, „Schleim“; im Singular „das Computervirus“, alltagssprachlich auch „der Computervirus“, Plural „die Computerviren“) ist ein sich selbst verbreitendes Computerprogramm, welches sich in andere… …   Deutsch Wikipedia

  • 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… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”