next up previous contents
Next: Semaphoren Up: Interprozesskommunikation Previous: Named Pipes   Contents

System V IPC

Eine der wichtigsten Varianten von Unix (neben BSD), das System V, definierte einige der klassischen Mittel der Interprozesskommunikation: Semaphore, Messagequeue und Shared Memory. Obwohl nicht im POSIX Standard enthalten, unterstützt Linux diese auch. Allen dreien ist gemeinsam, dass sie die Struktur kern_ipc_perm enthalten, in der die Zugriffsrechte auf das IPC Objekt verwaltet.

struct kern_ipc_perm { 
  key_t key;    /* Schlüssel */ 
  uid_t uid;    /* UID Eigentümer */ 
  gid_t gid;    /* GID Eigentümer */ 
  uid_t cuid;   /* UID Erzeuger */ 
  gid_t cgid;   /* GID Erzeuger */ 
  mode_t mode;  /* Zugriffsmodus */ 
  unsigned long seq;  /* Sequenznummer */ 
};
key ist eine einfache Nummer, die dynamisch beim Erstellen des IPC Objekts erzeugt wird und das IPC Objekt eindeutig referenziert. Die Sequenznummer wird zur Bestimmung der Objekt ID (s.u.) aus dem key verwendet.

Von Bedeutung ist unter Linux weiterhin der Systemaufruf

int ipc(unsigned int call, int first, int second, int third, void *ptr, long fifth)
Dieser ist dafür zuständig die IPC Funktionen (angegeben in call) in Funktionsaufrufe der jeweiligen Implementierungen im Kernel umzusetzen. Dies ist jedoch für normale Prozesse nicht sehr elegant und auch nicht portabel (da Linux-spezifisch). Deshalb benutzt man die jeweiligen Funktionen der C Bibliothek. Innerhalb des Kernels sind diese dann durch jeweilige sys_ Aufrufe implementiert.



Subsections

2002-02-17