Wissensdatenbank Wirtschaftsrecht

aktuelles Dokument: BSys05Kommunikation
image4
image3
image2
image1
 Alle Kategorien:
  Forschungsdatenbank
  Lehrveranstaltungen
  Lexikon
  Literatur
  Rechtsgebiete
  Rechtsprechung
  Service
  Studium F H S
  Wissensmanagement
ich war hier: BSys05Kommunikation
 (image: http://wdb.fh-sm.de/uploads/QualipaktLehre/BMBF_Logo_klein.jpg)

Betriebssysteme (Betriebssystemtheorie) - Kapitel 5 - Kommunikation


Inhalte von Dr. E. Nadobnyh


Definition und Überblick


Eine Kommunikation ist ein expliziter Datenaustausch zwischen kooperierenden Prozessen.

 (image: https://hssm.hqedv.de/uploads/BSys05Kommunikation/BSys26.gif)


Kommunikation und Synchronisation


Eine Synchronisation ist eine Koordination von Prozessen im zeitlichen Ablauf oder beim Ressourcen-Zugriff.

1) Bei der Kommunikation über gemeinsame Speicherobjekte (speicherbasierte Kommunikation) greifen Prozesse direkt auf
die Speicherobjekte (Speicher, Dateien) und deswegen brauchen Prozesse für die Synchronisation zusätzliche Mittel, z.B.
Semaphoren.

 (image: https://hssm.hqedv.de/uploads/BSys05Kommunikation/BSys27.gif)

2) Beim Nachrichtenaustausch (nachrichtenbasierte Kommunikation) rufen Prozesse Systemfunktionen auf und werden vom Betriebssystem automatisch synchronisiert.

 (image: https://hssm.hqedv.de/uploads/BSys05Kommunikation/BSys28.gif)


5.1. Shared Memory


Definition und Eigenschaften


Shared Memory ist ein Hauptspeicherbereich, der:
  1. mittels der Systemaufrufe eingerichtet wird,
  1. für mehrere Prozesse sichtbar ist.

Eigenschaften:
  1. Der eigentliche Datenaustausch kann ohne weitere Systemhilfe durchgeführt werden.

  1. Ein gegenseitiger Ausschluss ist nicht garantiert.

  1. Der gemeinsame Speicher wird als eine speicherbasierte Datei gestaltet.

Eine Speicherbasierte Datei (Pseudodatei, memory mapped file, MMF) ist eine Abbildung einer ganzen Datei oder ihren Teil im Hauptspeicher. Daher können Dateiinhalte durch den üblichen Zeiger effizient gelesen und gespeichert werden.


Typische Systemaufrufe


Schritte Windows Unix
Öffnen und Schliessen CreateFileMapping(...);
CloseHandle(...);
shm_open(...);
shm_unlink(...);
Einblenden und Ausblenden ... p =MapViewOfFile(...);
//p-Pointer
UnmapViewOfFile(...);
... p =mmap(...);
close(...);
Speicher- Zugriff durch Zeiger *p=...; *p=...;


Bemerkungen:
1) Beim Einblenden liefert das Betriebssystem dem Prozess die Startadresse des gemeinsamen Speichers.
2) Beim Ausblenden wird diese Startadresse ungültig gemacht.

⇒ Demo 1.


5.2. Nachrichtenaustausch


Definition


1) Beim Nachrichtenaustausch (Message Passing ) werden zwei Grundfunktionen (Systemaufrufe) vom System bereitgestellt:

send(empfänger, &nachricht);
receive(sender, &nachricht);

Bemerkung: & ist ein Adressoperator (C-Schreibweise).

2) Die gesendeten, aber noch nicht empfangenen Nachrichten (Botschaften) werden automatisch vom Betriebssystem im Nachrichtenpuffer zwischengespeichert.

3) Die empfangenen Nachrichten werden in den Empfänger-Speicherbereich gespeichert und aus dem Nachrichten-puffer entfernt.


Eigenschaften


1) Der Nachrichtenpuffer entkoppelt den Ablauf des Senders und des Empfängers und hilft, Geschwindigkeitsunterschiede auszugleichen. Mit dem Puffer arbeiten Sender und Empfänger asynchron.

2) Die beteiligten Prozesse werden synchronisiert:
  1. Ein Empfänger wird bei leerem Zwischenspeicher blockiert.
b )Ein Sender wird bei vollem Zwischenspeicher blockiert.

3) Nachrichtenaustausch ist gut geeignet für kleinere Datenmengen, weil die Verwendung von Systemfunktionen mit zeitlichem Aufwand verbunden ist. Ein Datenaustausch von großen Datenmengen kann über einen gemeinsamen Speicher effizienter umgesetzt werden.


Nachrichtenaustausch und Erzeuger-Verbraucher-Problem


Die Lösung des Problems durch Nachrichtenaustausch enthält keine zusätzlichen Synchronisationsmechanismen und sieht deswegen kompakt aus.

 (image: https://hssm.hqedv.de/uploads/BSys05Kommunikation/BSys29.gif)


Message Queue und Pipe


Diese klassische Formen des Nachrichtenaustausches sind ähnlich:

1) Eine Message Queue (Nachrichtenschlange) ist eine geordnete Liste von Nachrichten.
Eigenschaften:
  1. Queues erlauben es einem Prozess, beliebige Nachrichten zu anderen Prozessen zu schicken.
  1. Die Nachrichten können in Queue nach Priorität sortiert werden.

2) Eine Pipe ist ein unidirektionaler Kanal zwischen zwei Prozessen.
Eigenschaften:
  1. Ein Prozess schreibt in den Kanal einen Strom von Bytes, den der andere Prozess lesen soll.
  1. Alle Bytes werden nach FIFO-Prinzip (First In First Out) gepuffert, d.h. die Reihenfolge von Bytes bleibt erhalten.


Der wichtige Unterschied zwischen Message Queue und Pipe ist der Umgang mit den Nachrichtengrenzen:

a) bei Queue sind die Nachrichtengrenzen klar definiert,

 (image: https://hssm.hqedv.de/uploads/BSys05Kommunikation/BSys30.gif)

b) bei Pipe sind die Nachrichtengrenzen unsichtbar.

 (image: https://hssm.hqedv.de/uploads/BSys05Kommunikation/BSys31.gif)

Eine Nachricht kann durch eine Pipe z.B. in zwei Teilen gesendet und in drei Teilen empfangen werden.


5.3. Pipes


Definition und Eigenschaften


Pipe (Pipeline) ist ein unidirektionaler Kanal zwischen zwei Prozessen.

1) Die Pipe ist die älteste Technik für Interprozesskommunikationen. Pipe stammt ursprünglich aus der Unix-Welt.

2) Bevor zwei Prozesse mittels einer Pipe kommunizieren können, müssen sie zuvor diesen Kanal einrichten.

3) Pipe hat ein FIFO-Puffer. Typische Länge des Puffers ist 5KB.

4) Die Pipe-Synchronisation wird vom Betriebssystem bereitgestellt.

Begriffsverwirrung: Pipeline ist mehrstufige Befehlsausführung in der CPU.


Implementierungen


1) Eine Pipe ist eine Pseudodatei. Nur im DOS war es tatsächlich eine temporäre Datei.

2) Lesen und Schreiben einer Pipe ist sehr ähnlich einer Datei.

3) Unix und Windows NT haben zwei Pipe-Varianten:
  1. Unnamed Pipes (Pipes, Anonyme Pipes) können nur zwei verwandte Prozesse verbinden.
  1. Named Pipes (Benannte Pipes) können mehrere eliebigen Prozesse verbinden. Benannte Pipes haben ehr Möglichkeiten als anonyme.


Eigenschaften im Vergleich


1) Anzahl der Modi.
Unix–Pipes arbeiten mit Byteströmen (byte streams). Windows-Pipes haben zwei Modi: Byte und Nachricht.

2) Netzwerkfähigkeit.
Unix-Pipes ermöglichen die rechnerlokale Prozess-Kommunikation.

Windows-Named-Pipes sind netzwerkfähig. Sie wurden ür homogene (nur unter Windows) Client-Server-Systeme entworfen.

3) Direktionalität.
Unix-Pipes sind unidirektional.

Windows-Named-Pipes können unidirektional und bidirektional verwendet werden. ´


Typische Systemaufrufe


Systemaufrufe Windows Unix
Erzeugen CreateNamedPipe(); mkfifo();
Verbinden ConnectNamedPipe();
CreateFile();
open();
Nachrichtenaustausch WriteFile();
ReadFile();
write();
read();
Schliessen DisconnectNamedPipe();
CloseHandel();
unlink();


⇒ Demo 2


5.4. Sockets


Definition und Eigenschaften


Ein Socket ist ein Objekt, welches als Endpunkt für die bidirektionale Verbindung dient. Jeder Endpunkt verbindet ein Prozess mit dem Betriebssystem und dann mit dem Kommunikationssystem.

1) Sockets gehören zu der klassischen Form der rechnerübergreifenden Kommunikation. Sie wurden 1983 in Berkeley Universität entwickelt.

2) Sockets verbinden Prozesse auf entfernten oder derselben Maschine.

3) Sockets bilden eine plattformunabhängige, standardisierte Schnittstelle und sind heute auf allen wichtigen Betriebssystemen (auch Unix, Windows) vorhanden.

Analogie: Telefonsteckdose.


Logische Verbindung mit Sockets


Eine Verbindung zwischen zwei Sockets kann als zwei unidirektionale Pipes dargestellt werden. Die Nachrichten werden gleichzeitig in beiden Richtungen übertragen.

 (image: https://hssm.hqedv.de/uploads/BSys05Kommunikation/BSys32.gif)
Legende: BS+KS – Betriebssystem und Kommunikationssystem


Client-Server-Betrieb


1) Definition
Client-Server-Betrieb ist eine Art des Nachrichtenaustausches:
    1. Ein Client (Auftraggeber) ist ein Prozess, der Dienstleistungen beantragt.
    1. Ein Server (Auftragsnehmer) ist ein Prozess, der Dienstleistungen erbringt.

2) Funktionsweise

 (image: https://hssm.hqedv.de/uploads/BSys05Kommunikation/BSys33.gif)

    1. Ein Client sendet zum Server einen Auftrag (Anfrage, Request).
    1. Wenn der Server den Auftrag erledigt hat, liefert er die Antwort (Reply) an den Client zurück.

3) Eigenschaften
  1. Prinzipiell ist die Client-Server-Kommunikation asymmetrisch: Zuerst muss der Server und anschließend der Client gestartet werden.
  1. Ein Server kann gleichzeitig mit mehreren Clients kommunizieren.
  1. Beide können auf dem gleichen oder verschiedenen Rechner laufen.


Socket im Client-Server-Betrieb


1) Einstellung auf Verbindungen vom Server:
ServerSocket set = new ServerSocket(4711);
Der Server besitzt eine bekannte Socket-Adresse (Portnummer), z.B. 4711, auf einem bekannten Rechner.

2) Verbindung anlegen:

Server Client
sk2 = set.accept();
a)Auf Anfragen warten
b)Socket erstellen sk1=new Socket(…, 4711);
a)Anfrage an Server senden
b)Socket erstellen


Die Anfrage vom unbekannten Rechner wird vom Server akzeptiert, wenn die die richtige Server-Adresse und Portnummer hat.

3)Datenaustausch: readLine(); und print(...);

4)Socket schließen: sk2.close(); und sk1.close();

⇒ Demo 3


CategoryBSys
Diese Seite wurde noch nicht kommentiert.
Valid XHTML   |   Valid CSS:   |   Powered by WikkaWiki