Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel 9 IPC – Interprozesskommunikation
  gp 9.1 Unterschiedliche Interprozesskommunikations-Techniken im Überblick
    gp 9.1.1 (Namenlose) Pipes
    gp 9.1.2 Benannte Pipes (FIFO-Pipes)
    gp 9.1.3 Message Queue (Nachrichtenspeicher)
    gp 9.1.4 Semaphore
    gp 9.1.5 Shared Memory (gemeinsamer Speicher)
    gp 9.1.6 STREAMS
    gp 9.1.7 Sockets
    gp 9.1.8 Lock Files (Sperrdateien)
    gp 9.1.9 Dateisperren (Record Locking)
  gp 9.2 Gründe für IPC
  gp 9.3 Pipes
    gp 9.3.1 Eigenschaften von Pipes
    gp 9.3.2 Pipes einrichten – pipe()
    gp 9.3.3 Eigenschaften von elementaren E/A-Funktionen bei Pipes
    gp 9.3.4 Standard-E/A-Funktionen mit pipe
    gp 9.3.5 Pipes in einen anderen Prozess umleiten
    gp 9.3.6 Filterprogramm erstellen mithilfe einer Pipe
    gp 9.3.7 Einrichten einer Pipe zu einem anderen Prozess – popen()
    gp 9.3.8 Mail versenden mit Pipes und Sendmail
    gp 9.3.9 Drucken über eine Pipe mit lpr
    gp 9.3.10 Benannte Pipes – FIFOs
  gp 9.4 System-V-Interprozesskommunikation
    gp 9.4.1 Gemeinsamkeiten der SysV-Mechanismen
    gp 9.4.2 Ein Objekt einrichten, eine Verbindung herstellen und das Objekt wieder löschen
    gp 9.4.3 Datenaustausch zwischen nicht verwandten Prozessen
  gp 9.5 Semaphore
    gp 9.5.1 Lebenszyklus eines Semaphors
    gp 9.5.2 Ein Semaphor öffnen oder erstellen – semget()
    gp 9.5.3 Abfragen, Ändern oder Löschen der Semaphormenge – semctl()
    gp 9.5.4 Operationen auf Semaphormengen – semop()
    gp 9.5.5 Semaphore im Vergleich mit Sperren
  gp 9.6 Message Queues
    gp 9.6.1 Eine Message Queue öffnen oder erzeugen – msgget()
    gp 9.6.2 Nachrichten versenden – msgsnd()
    gp 9.6.3 Eine Nachricht empfangen – msgrcv()
    gp 9.6.4 Abfragen, Ändern oder Löschen einer Message Queue – msgctl()
  gp 9.7 Shared Memory
    gp 9.7.1 Ein Shared-Memory-Segment erstellen oder öffnen – shmget()
    gp 9.7.2 Ein Shared-Memory-Segment abfragen, ändern oder löschen – shmctl()
    gp 9.7.3 Ein Shared-Memory-Segment anbinden (attach) – shmat()
    gp 9.7.4 Ein Shared-Memory-Segment loslösen – shmdt()
    gp 9.7.5 Client-Server-Beispiel – Shared Memory


Rheinwerk Computing

9.2 Gründe für IPC  toptop

Falls Ihnen der Sinn von IPCs noch nicht ganz klar geworden ist, sollen noch einige Gründe und Begriffe genannt werden, welche Probleme mithilfe der Interprozesskommunikation vermieden werden können:

gp  Gleichzeitiger Zugriff – solange alle Prozesse aus einer Datei lesen, besteht kaum eine Gefahr. Sobald aber einer der Prozesse diese Datei verändern will, entstehen so genannte Konkurrenzsituationen (Race Conditions). Diese Probleme können mit Hilfe von Prozesssynchronisation behoben werden.
gp  Zugriffsdisziplinen – Will man vermeiden, dass mehrere User auf die Daten schreiben können, richtet man eine so genannte Warteschlange ein (nach dem Motto »one writer, many readers«). Man richtet dazu zwei Warteschlangen ein, eine für das Lesen und eine andere für das Schreiben. Diese Zugriffsdisziplin kann man aber auch mit Hilfe von Sperren erreichen. Eine gemeinsame Sperre für die Leser, da ja mehrere gleichzeitig lesen dürfen, und eine exklusive Sperre für den Schreiber. Dies verhindert, dass jemand dazwischenfunkt.
gp  Verhungern von Prozessen – Durch ein Einrichten von Zugriffsdisziplinen kann es passieren, dass ein Prozess ewig in der Warteschlange steht und dabei nie zum Zuge (Schreiben) kommt. Daher sollte man Prioritäten in der Warteschlange einrichten.
gp  Flusskontrolle – Da man nicht genau sagen kann, welcher von den Prozessen seine Daten zuerst an den Zielrechner schickt und wieder zurück, verwendet man so genannte Server-Client-IPCs. Das heißt, man verwendet einen oder mehrere Clients und einen Server. Der Client stellt die Anfrage an den Server, und der Server antwortet. Der oder die Clients müssen nun auf die Antwort des Servers warten, bis sie weitermachen können. Dadurch entsteht eine Flusskontrolle. Natürlich sollte man auch hier bei gleichzeitigem Zugriff eine Prioritätswarteschlange verwenden.
gp  Deadlocks – Klassischer Deadlock: Prozess A greift auf Datei A zu und wartet auf Freigabe von Datei B. Zur gleichen Zeit greift Prozess B auf Datei B zu und wartet auf die Freigabe von Datei A. Beide Prozesse warten nun auf die Freigabe des jeweils anderen Prozesses und geben derweil ihre eigene Datei nicht frei. Deadlocks können vermieden werden, wenn man die Ressourcen durchnummeriert und diese nur in aufsteigender Form anfordert. Ist eine Anforderung nicht erfolgreich, sollten außerdem alle Ressourcen sofort wieder freigegeben werden.

Sie sehen schon, eine Menge Probleme, die auftreten können, für die Sie mittels Interprozesskommunikation verantwortlich sind.

 << zurück
  
  Zum Rheinwerk-Shop
Neuauflage: Linux-UNIX-Programmierung
Neuauflage:
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-
 Programmierung


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern