2 3 Klassifizierung von Kommunikationsdiensten synonym Nachrichtensystemdienst message
- Slides: 14
2. 3 Klassifizierung von Kommunikationsdiensten synonym: Nachrichtensystem/dienst (message service) Kommunikationssystem/dienst (communication service) Transportsystem/dienst (transport service) Grundsätzliche semantische Gemeinsamkeit: Senden/Empfangen einer Nachricht beinhaltet Kopieren – zwei (oder mehr) disjunkte Prozesse/Prozessoren A, B (C, . . . ) kooperieren zum Zweck des Kopierens eines Wertes von A nach B (C, . . . )
Kommunikationsdienste variieren im Hinblick auf [2. 3. 1] Übertragungssemantik [2. 3. 2] Adressierung der Kommunikationspartner [2. 3. 3] Konfigurierung von Prozessen und Kanälen [2. 3. 4] Disjunktives Warten Pseudocode für Senden und Empfangen: send mesval [ to destination ] Typ T Typ D<T> recv mesvar [ from source ] Typ T Typ S<T>
2. 3. 1 Übertragungssemantik Pufferung, Empfangsfolge, Flußsteuerung/Synchronisation, Zuverlässigkeit Pufferung: - keine - begrenzt - unbegrenzt Empfangsfolge: - permutiertes Präfix der Sendefolge - Präfix der Sendefolge (reihenfolgetreu, FCFS; Puffertyp = Sequence<T> ) - Strom (stream): Puffertyp = T = Sequence<B>
Flußsteuerung und Synchronisation: Empfangen: blockierend (blocking) bis Nachricht vorliegt, nichtblockierend (non-blocking), d. h. - Leeroperation, evtl. mit Ausnahmemeldung, oder - nochmaliges Lesen einer zuvor empfangenen Nachricht Senden: blockierend bis Nachricht absendbar, nichtblockierend, d. h. - Leeroperation, evtl. mit Ausnahmemeldung, oder - Überschreiben einer zuvor gesendeten und noch nicht empfangenen Nachricht
Klassifikation von Blockaden: blockierendes recv ist beendet, wenn (alternativ) Bezeichner mesvar an das Nachrichtensystem übergeben ist - asynchrones recv mesvar den empfangenen Wert enthält - synchrones recv blockierendes send ist beendet, wenn (alternativ) Ausdruck mesval an das Nachrichtensystem übergeben ist - asynchrones send Wert von mesval durch das Nachrichtensystem kopiert ist - synchrones send Empfänger die Kopie übernommen hat - quittiertes send
Im asynchronen Fall Benachrichtigung typischerweise durch Software-Unterbrechung (software interrupt, signal) Zuverlässigkeit: Empfangsfolge evtl. gefährdet durch - Verlust - Duplizierung - (Verstümmelung) von Nachrichten
2. 3. 2 Adressierung Beachte: Kommunikation ist nicht beschränkt auf das Szenario „ 2 miteinander verbundene Kommunikationspartner“ ohne Adressierung: send mesval recv mesvar [ from procvar ] produziert Nachricht (evtl. mit Absender) übernimmt Nachricht (und gegebenenfalls Absender) ! Nur ein Nachrichtentyp möglich, z. B. String
prozeßbezogen: (typischerweise auch mit einem Nachrichtentyp) send mesval to procval recv mesvar from procval send mesval to procval recv mesvar [ from procvar ] Modell: jeder Prozeß verfügt über eigene mailbox send mesval [ to procvar ] recv mesvar from procval (Umkehrung des Modells – exotisch!)
prozeßgruppenbezogen: (group communication, multicast) Es gibt einen Typ Process. Group, und Prozesse können einer Gruppe beitreten und sie verlassen: . . . groupval. enter(); . . . ; groupval. leave(); . . . send mesval to groupval recv mesvar [ from procvar ]
kanalbezogen: Kanal als eigenständiges, explizit benennbares Pufferobjekt send mesval to channel recv mesvar from channel. send(mesval); mesvar = channel. recv(); Port = formaler Kanalparameter eines Prozesses, häufig exklusiv entweder nur als Eingabe-Port für recv oder nur als Ausgabe-Port für send alternativ: Port = einem Prozeß fest zugeordneter Eingabekanal send mesval to proc. port recv mesvar from port
2. 3. 3 Konfigurierung = Einrichten von Prozessen und evtl. Kanälen sowie Binden, d. h. Aktualisierung formaler Parameter vom Typ Prozeß, Kanal, Port, . . . Statisches Binden: • Hardware: • Software: durch „Strippenziehen“ zwischen Rechnern mittels Konfigurationssprache, z. B. Unix Shell für Pipelines: who | sort | lpr Adressierung kanalbezogen: Kanal = pipe Ports = stdin, stdout
Dynamisches Binden: Prozesse besorgen die Konfigurierung selbst - Wiederverwendbarkeit in anderen Kontexten begrenzt - jederzeit dynamische Umkonfigurierung möglich Dynamische Erzeugung von Prozessen und Kanälen und Binden durch geeignetes Initialisieren Namensdienste erlauben das Auffinden von bereits vorhandenen Prozeß- bzw. Kanalobjekten
2. 3. 4 Disjunktives Warten Beispiel: Auftraggeber client Auftragnehmer . . . recv. . . send. . . Unterauftragnehmer server request from client; ? subrequest to server; subresult from server; result to client; ?
Besser: nichtdeterministisch disjunktives Warten (auch „externe Auswahl“). . . select recv request from client; process request; | recv subresult from server; process subresult; | timeout t do cleanup end; . . . t = 0 wirkt wie ein otherwise/else-Konstrukt t = wirkt wie fehlende Timeout-Klausel ! Alternative: Threads verwenden !
- Ausstiegsrate adobe analytics
- Raumschotkurs
- Erasmus von rotterdam beeinflusst von
- Synonyms in english for class 3
- What is antonyms and synonyms
- Directly opposite synonym
- Aloof
- Contian synonym
- Vocabulary words in beowulf
- Acquaintance example
- Sinonim penatalaksanaan
- Rabies synonym
- Adherent suffix
- Ethnography synonym
- What is motivaton