Prozessgruppe - Process group

In einem POSIX- konformen Betriebssystem bezeichnet eine Prozessgruppe eine Sammlung von einem oder mehreren Prozessen . Eine Prozessgruppe wird unter anderem verwendet, um die Verteilung eines Signals zu steuern ; Wenn ein Signal an eine Prozessgruppe gerichtet ist, wird das Signal an jeden Prozess geliefert, der Mitglied der Gruppe ist.

In ähnlicher Weise bezeichnet eine Sitzung eine Sammlung von einer oder mehreren Prozessgruppen. Ein Prozess darf keine Prozessgruppe erstellen, die zu einer anderen Sitzung gehört; Darüber hinaus ist es einem Prozess nicht gestattet, einer Prozessgruppe beizutreten, die Mitglied einer anderen Sitzung ist, dh ein Prozess darf nicht von einer Sitzung in eine andere migrieren.

Wenn ein Prozess sein Image durch ein neues Image ersetzt (durch Aufrufen einer der Funktionen ), unterliegt das neue Image derselben Prozessgruppen- (und damit Sitzungs-)Mitgliedschaft wie das alte Image. exec

Anwendungen

Die Verteilung von Signalen auf Prozessgruppen bildet die Grundlage der Jobsteuerung von Shell-Programmen . Der TTY-Gerätetreiber enthält eine Vorstellung von einer Vordergrundprozessgruppe , an die er durch Tastaturinterrupts erzeugte Signale sendet , insbesondere SIGINT ("interrupt", Control+ C), SIGTSTP ("terminal stop", Control+ Z) und SIGQUIT ("quit", Control+ \). Es sendet auch die Signale SIGTTIN und SIGTTOU an alle Prozesse, die versuchen, vom Terminal zu lesen oder zu schreiben, und die sich nicht in der Vordergrundprozessgruppe befinden. Die Schale, die wiederum Partitionen der Befehlspipelines , dass sie schafft in Prozessgruppen und steuert , welche Prozessgruppe ist die Vordergrundprozessgruppe seines Steueranschluss , wodurch bestimmt wird, welche Prozesse (und damit , was Pipelines - Befehl) durchführen kann , I / O , um und jederzeit vom Terminal aus.

Wenn die Schale s einen neuen Kind - Prozess für eine Befehlspipeline, sowohl die Eltern - Shell - Prozess und das Kind Prozess sofort das Kind Prozess für die Kommando - Pipeline in den Führer der Prozessgruppe machen. Auf diese Weise wird sichergestellt, dass das Kind der Leiter der Prozessgruppe ist, bevor sich entweder die Eltern oder das Kind darauf verlassen. fork

Wenn auf einem Unix-ähnlichen System eine textuelle Benutzeroberfläche verwendet wird, werden Sitzungen verwendet, um Anmeldesitzungen zu implementieren . Ein einzelner Prozess, der Sitzungsleiter , interagiert mit dem steuernden Terminal, um sicherzustellen, dass alle Programme beendet werden, wenn ein Benutzer die Terminalverbindung "auflegt". (Wenn ein Sitzungsleiter abwesend ist, wird von den Prozessen in der Vordergrundprozessgruppe des Terminals erwartet, dass sie Hangups verarbeiten.)

Wenn eine grafische Benutzeroberfläche verwendet wird, geht das Sitzungskonzept weitgehend verloren und das Konzept des Kernels von Sitzungen wird weitgehend ignoriert. Grafische Benutzeroberflächen, z. B. bei denen der X-Display-Manager verwendet wird, verwenden einen anderen Mechanismus zum Implementieren von Anmeldesitzungen.

Einzelheiten

Der Systemaufruf wird verwendet, um eine neue Sitzung zu erstellen, die eine einzelne (neue) Prozessgruppe enthält, wobei der aktuelle Prozess sowohl der Sitzungsleiter als auch der Prozessgruppenleiter dieser einzelnen Prozessgruppe ist. Prozessgruppen werden durch eine positive ganze Zahl identifiziert, die Prozessgruppen-ID , die die Prozesskennung des Prozesses ist, der der Prozessgruppenleiter ist (oder war). Prozessgruppen müssen nicht unbedingt einen Leiter haben, obwohl sie immer mit einem beginnen. Sitzungen werden durch die Prozessgruppen-ID des Sitzungsleiters identifiziert. POSIX verbietet die Änderung der Prozessgruppen-ID eines Sitzungsleiters. setsid

Der Systemaufruf wird verwendet, um die Prozessgruppen-ID eines Prozesses zu setzen, wodurch entweder der Prozess einer bestehenden Prozessgruppe hinzugefügt wird oder eine neue Prozessgruppe innerhalb der Sitzung des Prozesses erstellt wird, wobei der Prozess zum Prozessgruppenleiter des neu erstellten wird Gruppe. POSIX verbietet die Wiederverwendung einer Prozess-ID, wenn noch eine Prozessgruppe mit dieser Kennung existiert (dh wenn der Leiter einer Prozessgruppe ausgestiegen ist, aber andere Prozesse in der Gruppe noch vorhanden sind). Dadurch wird gewährleistet, dass Prozesse nicht versehentlich zu Prozessgruppenleitern werden. setpgid

Der Systemaufrufkill ist in der Lage, Signale entweder an einzelne Prozesse oder an Prozessgruppen zu richten.

Siehe auch

Verweise

  1. ^ IEEE und die offene Gruppe (2018). "3. Definitionen" . The Open Group Base Specifications Ausgabe 7 . § 296 . Abgerufen 2020-08-30 . Eine Sammlung von Prozessen, die die Signalisierung verwandter Prozesse ermöglicht.
  2. ^ a b kill  – System Interfaces Reference, The Single UNIX Specification , Ausgabe 7 von The Open Group
  3. ^ IEEE und die offene Gruppe (2018). "3. Definitionen" . The Open Group Base Specifications Ausgabe 7 . § 343 . Abgerufen 2020-08-30 . Eine Sammlung von Prozessgruppen [...]. Jede Prozessgruppe ist Mitglied einer Sitzung.
  4. ^ setsid  – System Interfaces Reference, The Single UNIX Specification , Ausgabe 7 von The Open Group
  5. ^ setpgid  – System Interfaces Reference, The Single UNIX Specification , Ausgabe 7 von The Open Group

Weiterlesen