A Systemrufe für die Prozeßsteuerung (elementar, POSIX)

Schnittstelle zum Kern und damit auch zur Prozeßsteuerung sind die sogenannten Kapitel (2) Systemrufe. Diese variieren von System zu System in ihrer Namensgebung, ihren Aufrufkonventionen und ihrer Semantik. Für die Betrachtungen der Arbeit sollte von einem wohl definierten System ausgegangen werden. Hier wurde POSIX gewählt, auch wenn in der Implementation aus praktischen Erwägungen ein anderes System gewählt wurde. Für POSIX steht umfangreiches Material zur Verfügung, das entsprechende Betrachtungen ermöglicht. Außerdem ist bei den verschiedenen Systemen eindeutig ein Trend hin zu POSIX zu erkennen. Die dem Autor zugänglichen Quellen erweckten den Eindruck, daß während der Implementierung einer Funktion bei Zweifeln an der Semantik POSIX eine der ersten Quellen war, die zu Rate gezogen wurde. Erst wenn hier nichts zu dem gerade bearbeiteten Problem zu finden war, wurden andere Quellen zu Rate gezogen oder eigene Entscheidungen gefällt.

A.1 Prozeßspezifische Systemcalls

A.2 Prozeßumgebung

B Glossar

aktuelles Verzeichnis
Einem Prozeß zugeordnetes Attribut, das zur Auflösung von Namen herangezogen wird, die nicht mit `/' beginnen.
API
Die Schnittstelle, über die ein System nach außen hin Dienste bereitstellt, wird Application Programming Interface (API) genannt.
BSS
Der Teil eines Programms, der uninitialisierte Daten enthält, wird BSS, ,,block started by symbol'', genannt. Dieser Teil wird in Unix beim Laden des Programms mit Null initialisiert.
Capability
Ein Capability ist ein Objekt, das einem Server von einem Klienten präsentiert wird, um Zugriff auf ein Objekt zu erhalten.
Datenraum
Ein Datenraum ist ein Objekt, das in den virtuellen Adreßraum einer Task gemappt werden kann.
effective GID
Attribut eines Prozesses, das zur Vergabe von Rechten genutzt wird. Kann sich bei Ausführung von setgid() oder exec() ändern.
effective UID
Attribut eines Prozesses, das zur Vergabe von Rechten genutzt wird. Kann sich bei Ausführung von setuid() oder exec() ändern.
IBCS2
Intel Binary Compatibility Standard 2, ein Standard, der durch die Festlegung von Aufrufkonventionen für Betriebssystemdienste die Ausführung von ein und dem selben Programm auf verschiedenen Plattformen ermöglicht.
Klient
Als Klient wird im Client/Server-Modell ein Prozeß bezeichnet, der von einem anderen Prozeß über IPC einen Dienst anfordert. Die Prozesse sind unabhängig voneinander. Die einzige Beziehung, die zwischen beiden besteht, ist die Interprozeßkommunikation.
Major Number
Identifiziert einen Gerätetreiber im Unixkern.
Minor Number
Identifiziert ein Subgerät eines Gerätetreibers.
pid
Prozeß ID, dient der eindeutigen Identifikation eines Prozesses.
Prozeß
Ein Adreßraum und ein einzelner Kontrollfluß werden in Unix als Prozeß bezeichnet. Jeder Prozeß hat eine pid, UID, GID, effective UID, effective GID u.a.m. Prozesse werden unter UNIX mittels fork() erzeugt.
Prozeßgruppe
Eine Menge von Prozessen, die zusammen Signale erhalten können. Ein neuer Prozeß wird der Prozeßgruppe seines Vaters zugeordnet.
real GID
real group ID, die wirkliche Gruppen-Id eines Unix-Prozesses. Dieses Attribut wird beim login() gesetzt und bleibt bei einem nicht priveligierten Nutzer konstant. Es wird zur Vergabe von Rechten benutzt.
real UID, real GID
real user ID, real group ID, die echten Id's eines Nutzers. Jedem Nutzer ist genau eine UID/GID zugeordnet. Die UID/GID wird beim login aus der einer Dateiausgelesen und dem Prozeß zugeordnet. Sie bleiben bei einem nicht priveligierten Nutzer konstant.
saved UID, saved GID
Attribute eines Prozesses, die zur Vergabe von Rechten genutzt werden. Sie werden bei Ausführung von exec() und setuid() auf den aktuellen Wert der effective UID/GID gesetzt. Diese ID's gestatten eine flexible Handhabung der setuid-Semantik durch einfaches Austauschen von saved UID/GID und effective UID/GID.
Signal
Ein Mechanismus, durch den ein Prozeß im Falle eines Systemereignisses benachrichtigt oder beeinflußt wird.
Sohn-Prozeß (UNIX)
Führt ein Prozeß eine fork()-Operation aus, ist der entstehende Prozeß ein direkter Nachfolger dieses Prozesses und wird als Sohn-Task bezeichnet.
Steuerterminal
Ein Terminal, das einer Session zugeordnet ist, wird als Steuerterminal bezeichnet. Jede Session hat maximal ein Terminal und ein Steuerterminal ist genau einer Session zugeordnet. Von einem Steuerterminal aus können einem Prozeß Signale gesendet werden.
special node
Ein spezieller Verzeichniseintrag, der auf ein Gerät verweist. Er besteht in der Regel aus einem Typ (Block-, Zeichengerät) und einer Major und Minor Number.
session
Eine Menge von Prozeßgruppen, die zum Zwecke der Job-Steuerung zu einer Einheit zusammengefaßt werden.
SVR4
System five Release 4, eine UNIX-Implementierung, die eine der beiden Hauptrichtungen in der UNIX-Entwicklung repräsentiert.
Task
Ein Adreßraum mit mindestens einem Kontrollfluß (Thread) wird als Task bezeichnet.
Threads
Leichtgewichtige Prozesse, Prozesse ohne eigenen Adreßraum werden als Threads bezeichnet. Sie stellen in der Regel den Kontrollfluß in einer Task dar.
Verzeichnis
Eine Datei, die Verzeichniseinträge enthält, wird als Verzeichnis bezeichnet.
Verzeichniseintrag
Ein Verzeichniseintrag ist ein Objekt, das einem Dateinamen eine Datei zuordnet.
Wurzelverzeichnis
Jedem Unix-Prozeß ist ein Wurzelverzeichnis zugeordnet, das als Startpunkt der Namensauflösung genutzt wird, wenn 0der Prozeß einen Namen angibt, der mit `/' beginnt.

Jean Wolter
14.11.1995