Client-Server-Architekturen und Prozess-Kommunikation in verteilten Systemen

Ähnliche Dokumente
Client-Server-Architekturen und Prozess-Kommunikation in verteilten Systemen

Client-Server-Architekturen und Prozess-Kommunikation in verteilten Systemen

Client-Server-Architekturen

Netzwerkprogrammierung unter Linux und UNIX

Programmieren 2 12 Netzwerke

Zusammenfassung für CS-Prüfung 3 Seite 1. CS-Zusammenfassung für Prüfung 3 vom Im Beispiel gibt es 3 Deadlocks

Seminar Ausgewählte Komponenten von Betriebssystemen. IDL4 Compiler

Verteilte Systeme - Übung

D.1 Organisatorisches

Übungsaufgabe 5. Verteilte Systeme - 6. Übung. Fehler & RPC (lokaler Fall) Transparenz beim Fernaufruf. RPC-Aufrufsemantiken Fehlermodell

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

Threads Einführung. Zustände von Threads

C Architektur (Teil 1)

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen

Remote Method Invocation

Einführung: Verteilte Systeme - Remote Method Invocation -

F.1 Überblick. 1 RPC-System in Aufgabe 3. Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern aus

39 Object Request Brokers. 40 Components of an ORB Stubs and Skeletons Stub

Verteilte Betriebssysteme

GNU/Hurd. ... ein Mach basiertes Multi Server Betriebssystem. Manuel Gorius. . p.1/33

Einführung und Bausteine

Verteilte Betriebssysteme

Für objektbasiertes Programmieren ist keine objektbasierte Programmiersprache erforderlich!

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Aufbau eines modernen Betriebssystems (Windows NT 5.0)

Remote Method Invocation

Praktikum Netzwerke. Für den Speicherort tragen Sie Ihr Netzlaufwerk und entsprechende Unterverzeichnisse ein, z.b.:

Verteilte Systeme. Verteilte Systeme. 9 Verteilte Dateisysteme SS 2015

Client - Server Architektur

7.4 Verteilungsabstraktion in heterogener Umgebung

Vorlesung "Verteilte Systeme" Sommersemester 1999

E.1 Object Request Brokers

Kommunikationsmodelle

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

AvO-Übung 2 Remote Method Invocation

Betriebssysteme Kap. 5: Netzwerkmanagement

Klausur Verteilte Systeme SS 2004 Iwanowski

Verteilte Systeme. Replikation & Konsistenz I. Prof. Dr. Oliver Haase

Geschichte der Netze und verteilten Systeme. Gründe für die Nutzung verteilter Systeme. Wünschenswerte Eigenschaften verteilter Systeme

FEBE Die Frontend-Backend-Lösung für Excel

Verteilte Systeme. Organisatorisches. Secure Identity Research Group

Protokolle und Schichten. Grundlagen der Rechnernetze Einführung 41

39 Object Request Brokers

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

39 Object Request Brokers

Enterprise JavaBeans Überblick

Kapitel 1: Architektur verteilter Systeme. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes

Betriebssysteme Kap. 5: Netzwerkmanagement

Ziele der Replikation Unterschiedliche Replikationsanforderungen Replikationsmodelle. Verteilte Systeme. 6. Konsistenz und Replikation

Betriebssysteme Teil 11: Interprozess-Kommunikation

Betriebssysteme Kap. 5: Netzwerkmanagement

Synchronisation und Kommunikation über Nachrichten

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Vorlesung "Verteilte Systeme" Wintersemester 2002/ Client/Server. Client. Rückblick: Client/Server auf einem Rechner

Konsequenz für Forwarding Tabellen

Vorlesung "Verteilte Systeme" Wintersemester 2000/2001. Verteilte Systeme. 11. Client/Server. Rückblick: Client/Server auf einem Rechner

30 Jahre Server Von Transaktionssystemen zu Web-Services

Kommunikation. Björn und Georg

Grundlagen verteilter Systeme

Serielle Kommunikation - Kodierung

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

1 RPC-Protokoll-Definitionssprache (Protocol Definition Language )

Überblick. Virtualisierungsbasierte Fehlertoleranz Motivation Remus. c td MWCC (WS16/17) Virtualisierungsbasierte Fehlertoleranz 14 1

Verteilte Systeme - Java Networking (Sockets) 2 -

Grundlagen verteilter Systeme

Betriebssysteme. Tutorium 2. Philipp Kirchhofer

7.4 Kommunikation. großzügige Pufferung, sowohl Auftragsbeziehungen als auch Nachrichten- oder Byte-Ströme, sowohl lokal als auch übers Netz

Grundlagen: Überblick

Lernziele. ohne Browser. Beispiel: Beispiel: ohne Browser. Definition

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

VS5 Slide 1. Verteilte Systeme. Vorlesung 5 vom Dr. Sebastian Iwanowski FH Wedel

Praktikum Verteilte Anwendungen

Einführung und Bausteine

Load File. Store File. Nach Beendigung der Arbeit werden sie zum Dienstleister zurücktransferiert

Konzepte von Betriebssystem- Komponenten Middleware. Jini. Vortrag von Philipp Sommer

Homogene Multi-Core-Prozessor-Architekturen

Vorlesung "Verteilte Systeme" Winter 2002

Kosten der Abschirmung von Code und Daten

U9-3 Vergleich von Thread-Konzepten. U9-2 Motivation von Threads. U9-3 Vergleich von Thread-Konzepten (2) U9-1 Überblick

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Einführung und Bausteine

Fallbeispiel Unix. Betriebssysteme. Hermann Härtig TU Dresden

Systemarchitektur. Das Eisenbahnsystem. Theoretische Grundlagen zum Seminar im Grundstudium Sprachgesteuerte Geräte (Modelleisenbahn) Alexander Huber

Übungsblatt 2: Kommunikation und XSS

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Verteilte Systeme. 7. Fehlertoleranz

Byzantinische Fehlertoleranz durch Gruppenkommunikation am Beispiel des Rampart-Toolkit Frank Mattauch

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Einführung in parallele Dateisysteme am Beispiel von GPFS. Proseminar von Jakob Schmid im SS 2014

Kommunikation von Prozessen und Threads

Konzepte von Betriebssystem-Komponenten Middleware RMI

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Verteilte Systeme. Replikation & Konsistenz II. Prof. Dr. Oliver Haase

Transkript:

Client-Server-Architekturen und Prozess-Kommunikation in verteilten Systemen Betriebssysteme WS 2017/18 basierend auch auf Material aus Tanenbaum und Colouris Hermann Härtig TU Dresden

Wegweiser l l l Verteilte Systeme Motivation Begriff Kriterien und Probleme Client-Server-Architekturen Prozesskommunikation Betriebssysteme WS 2017/18, Prozesskommunikation 2

Ausgangspunkt 1: Netzwerke Netzwerk... Netzwerk Zustellen von Netzwerkpaketen Betriebssysteme WS 2017/18, Prozesskommunikation 3

Sockets Client Server Netz Client create sock(protocol type) connect(exampleaddress) Server create sock(protocol type) bind(exampleaddress) listen accept Betriebssysteme WS 2017/18, Prozesskommunikation 4

Zugriff mittels Kopieren (read/write) Prozess mit Adressraum read Read_Call [Datei_Id, Position] Dateisystem Read_Reply [Result, Data] Systemcall oder Botschaften Kernkomponente oder eigener Serverprozess Betriebssysteme WS 2017/18, Prozesskommunikation 5

Systemarchitekturen: Prozeduraufrufe oder Botschaften Botschaften Dateisystem Systemaufrufe Dateisystem Betriebssysteme WS 2017/18, Prozesskommunikation 6

Verteilte Systeme Ansammlung autonomer Rechner, die dem Benutzer als ein System präsentiert werden. (Tanenbaum) Ansammlung autonomer Rechner, die über ein Netzwerk verbunden sind und mit verteilter Systemsoftware ausgestattet sind. (Colouris) You know you have one when the crash of computer you have never heard of stops you from getting any work done (Leslie Lamport) Betriebssysteme WS 2017/18, Prozesskommunikation 7

Verteilte Systeme Kriterien Beurteilungskriterien Transparenz: Orts-, Zugriffs-, Namens-Transparenz Replikations-, Migrations-Transparenz Skalierbarkeit Leistung Administrierbarkeit (Betriebsmittelnutzung) Zuverlässigkeit (Umgang mit Fehlern, Ausfällen) Sicherheit (gegen Angriffe) Offenheit Betriebssysteme WS 2017/18, Prozesskommunikation 8

Offenheit durch Prozesskommunikation Funktionalität eines Systems wird nicht durch statischen Kern implementiert, sondern durch eine Menge von Benutzerprozessen z. B. Dateisystemaufrufe nicht durch Kernaufruf, sondern durch Botschaft an Prozess??? wenn Prozesskommunikation netzwerktransparent, dann fällt Zugriffstransparenz dabei ab??? offene verteilte Systeme sind charakterisiert durch einen einheitlichen Prozesskommunikations- Mechanismus Veröffentlichung der wesentlichen Schnittstellen Heterogenität von Hardware und Software Betriebssysteme WS 2017/18, Prozesskommunikation 9

Neue, durch Verteilung verursachte Probleme Neue Fehlertypen Botschaften können verloren gehen oder verfälscht werden Ausfall von Rechnern oder Netzwerk Neue Angriffsmöglichkeiten Botschaften werden unterdrückt, mitgehört, manipuliert, wiederholt Absenderangaben werden gefälscht Rechner werden mit Botschaften bombardiert Neues Betriebsmittel Netzwerke Netz als Flaschenhals; Bandbreite, Latenz, Kosten Adressierung: Finden des richtigen Rechners bzw. Ports Heterogenität Hardware Betriebssystem Betriebssysteme WS 2017/18, Prozesskommunikation 10

Beispiel für neue Fehlersituation am Beispiel eines Benutzerprogrammes, das ein entferntes Dateisystem benutzt: lokal : Programm allein fällt aus oder Programm und Dateisystem verteilt: das entfernte Dateisystem fällt (allein) aus Denkbare Varianten Programm fällt auch aus Programmierer muss neue Fehlersituation berücksichtigen Besseres? Betriebssysteme WS 2017/18, Prozesskommunikation 11

Eine grundsätzliche Überlegung (1) Gegeben folgendes Problem p, q Prozesse, fallen nicht aus, kommunizieren via send/receive Botschaften können verloren gehen keine Annahme über Laufzeit der Botschaften möglich a, b mögliche Operationen von p, q p, q sollen entweder: (i) dieselbe (nichtriviale) Operation einmal ausführen (ii) keine Op. ausführen Gibt es eine Botschaftenfolge, die das leistet? Betriebssysteme WS 2017/18, Prozesskommunikation 12

Eine grundsätzliche Überlegung (2) Behauptung Es gibt kein solches Protokoll, das mit endlich vielen Botschaften auskommt! Beweis: Angenommen, es gebe solche Protokolle bestehend aus Folgen von Botschaften: ( m p q, m q p )*. Wähle: Protokoll mit geringster Zahl von Botschaften. o. B. d. A.: m p q sei letzte Botschaft dieses Protokolls, dann kann p eine solche Entscheidung nicht auf der Annahme aufbauen, dass m p q ankommt. dito für q. Also kann m p --> q auch wegfallen. Widerspruch, da offensichtlich nicht kleinstes Protokoll! Betriebssysteme WS 2017/18, Prozesskommunikation 13

Wegweiser l l l Verteilte Systeme Motivation Begriff Kriterien und Probleme Client-Server-Architekturen Prozesskommunikation Betriebssysteme WS 2017/18, Prozesskommunikation 14

Konstruktionsprinzipien für verteilte Systeme Client-Server-Architekturen Dienste werden durch Serverprozesse erbracht Klienten nehmen diese durch IPC in Anspruch Kommunikation basierend auf Botschaften: Zustellung der Botschaften über Netzwerk (z.b. via Sockets) Kommunikation basierend auf ( Prozedur -) Aufrufen: Simulation durch Botschaften Verpackung der In-Parameter in Botschaft Versenden, Durchführen der Operation auf der anderen Seite Verpackung der Out-Parameter und Zurücksenden Betriebssysteme WS 2017/18, Prozesskommunikation 15

Client-Server-Architekturen Strukturierung von (Betriebs-) Systemen als eine Menge kooperierender Prozesse (Server), die Dienste anbieten Benutzer-Prozesse (Clients) nehmen Dienste durch IPC in Anspruch Server Client Server Lokales BS Lokales BS mit oder ohne Netzwerk Mikrokern oder monolithisches System Betriebssysteme WS 2017/18, Prozesskommunikation 16

Einsatz vieler Threads Server müssen in der Lage sein, viele RPCs überlappend auszuführen alle Betriebsmittel eines Servers in einem Adressraum Grundidee: viele Threads pro Adressraum Threads werden gesteuert (z.b. durch Scheduler) Port z.b. blockierende E/A Betriebssysteme WS 2017/18, Prozesskommunikation 17

Abarbeitung per Ereignissen (Events) Server müssen in der Lage sein, viele RPCs überlappend auszuführen alle Betriebsmittel eines Servers in einem Adressraum Grundidee: wenige Threads Events werden behandelt, sortiert, weitergegeben Port z.b. event-driven E/A Betriebssysteme WS 2017/18, Prozesskommunikation 18

Hilfsthread im Kern Systemaufrufe Rumpf- Dateisystem Botschaften Dateisystem Betriebssysteme WS 2017/18, Prozesskommunikation 19

Hilfsprozess Systemaufrufe Botschaften Rumpf- Dateisystem Dateisystem Betriebssysteme WS 2017/18, Prozesskommunikation 20

Peer-To-Peer Systeme Ziel und Charakteristika: Nutzung / Kooperation zahlreicher Rechner im Internet keine ausgewiesenen und (wohl-)administrierte Server zuverlässige, gemeinsame Nutzung ( sharing ) verteilter und potentiell unzuverlässiger Rechner Anwendungen: gemeinsame Nutzung von Dateien ( File-Sharing ) Web-Caches Problembereiche: sehr große Zahlen beteiligter Rechner Lastverteilung große Dynamik in der Verfügbarkeit der beteiligten Rechner Sicherheit ( Security ) Betriebssysteme WS 2017/18, Prozesskommunikation 21

Wegweiser: Prozesskommunikation l l l Fernaufruf (Remote Procedure Call RPC) Vorgehen Implementation Fehlerbehandlung Gruppenkommunikation Anhang: SUN RPC Betriebssysteme WS 2017/18, Prozesskommunikation 22

Einige Begriffe und Abkürzungen IPC RPC lokal entfernt (remote) unicast broadcast multicast Inter Process Communication Remote Procedure Call auf einem Rechner über Rechnergrenze ein Partner an alle (z. B. an alle in einem Teilnetz) an einige (z. B. Mitglieder einer Gruppe) Betriebssysteme WS 2017/18, Prozesskommunikation 23

Basismechanismen und Kommunikationsformen send (A, M) receive (M) überträgt Daten an Adressaten empfängt Daten Datenströme Sender Empfänger (z. B. Pipes) send (M 1 ) receive (M 1 ) send (M 2 ) receive (M 2 )...... send (M n ) receive (M k ) Tanenbau m Fernaufruf (RPC) => Rechnernetze-Vorlesung Betriebssysteme WS 2017/18, Prozesskommunikation 24

Adressierung in Client-Server Systemen Prinzipielle Alternativen: lmaschine.prozess (IP-Adresse.Port) lbroadcast, z. B. große Zahlen als Adressen l Nameserver Name- Client Server server 1 3 4 1 Cl Srv Cl Srv Srv Cl NS 2 Kernel 4 1 2 3 2 Netz Tanenbau m 1: Request to 234.0 2: Reply to 199.0 1: Broadcast 2: Here I am 3: Request 4: Reply 1: Lookup 2: NS reply 3: Request 4: Reply Betriebssysteme WS 2017/18, Prozesskommunikation 25

Fernaufruf (Remote Procedure Call) Ziel: Client-Server-Architekturen handhabbar machen Weg: Simulation des lokalen Prozeduraufrufes mittels Botschaften-System Client Server send (S, M); receive (M2); while (1) { wait (M); switch (M.op) { case proc1 :... Betriebssysteme WS 2017/18, Prozesskommunikation 26 } send (Client, M2); break;... }

RPC Implementierung (aus Coulouris et al.) Client Computer Server Computer Coulouris Dollimore Kindberg local call local return Client Process Server Process execute procedu re return Betriebssysteme WS 2017/18, Prozesskommunikation 27

Ablauf RPC Client ruft Client-Stub-Prozedur auf Client steckt Parameter in Nachricht, verzweigt in Kern Coulouris Dollimore Kindberg Kern sendet Nachricht an Server (send) Client-Stub: receive wird blockiert entfernter Kern gibt Nachricht an Server-Stub Server-Stub packt Parameter aus, ruft Prozedur auf Server-Stub packt Resultat in Nachricht, verzweigt in Kern Server-Stub: send; receive wird blockiert Client-Kern gibt Nachricht an Client-Stub Client-Stub packt Resultat aus, übergibt an Client Betriebssysteme WS 2017/18, Prozesskommunikation 28

Unterschiede lokaler RPC Prozedur Parameter Call by Reference (unüblich, nicht unmöglich) statt dessen: copy in, copy out Semantik globale Variable? anderer Adressraum bei RPC komplexe Datenstrukturen als Parameter Fehlerisolation Sicherheit Effizienz RPC-lokal: ca. 100 Takte (bester bisher: ALPHA 21164) Prozedur: 0 Takte (bei offenem Einbau) Betriebssysteme WS 2017/18, Prozesskommunikation 29

Fehlerbehandlungen Fehlersemantik Prozeduraufruf: exakt ein Aufruf ( exactly once ) Coulouris Dollimore Kindberg verfälschte Botschaften erkennbar und korrigierbar durch redundante Codierung verlorene Request-Botschaft Timeout Wiederholung Request Verlorene Reply-Botschaft Timeout bei Request Wiederholung Request ja: at least once / Duplikation nein: at most once Betriebssysteme WS 2017/18, Prozesskommunikation 30

RPC-Fehlersemantik May Be Nachricht genau einmal versenden, keine Kontrolle Tanenbau m At Least Once (originales NFS, SUN RPC) wiederholtes Senden der Request-Botschaft bis zu einem Reply nur für Anwendungen mit idempotenter Semantik At Most Once Senden einer Fehlernachricht (Duplikat-Erkennung / Reply-Wiederholung) Birell/Nelson: wenn Server nicht ausfällt und ein Reply kommt, dann exactly once -Semantik, sonst unklar Betriebssysteme WS 2017/18, Prozesskommunikation 31

Wegweiser l l l Fernaufruf (Remote Procedure Call RPC) Vorgehen Implementation Fehlerbehandlung Gruppenkommunikation Anhang: SUN RPC Betriebssysteme WS 2017/18, Prozesskommunikation 32

Gruppen-IPC (multicast) Gruppe: Menge von Prozessen, die auf eine vom System oder von Nutzern festgelegte Art zusammenarbeiten Multicast: 1 Botschaft eines Prozesses an alle Prozesse einer Gruppe Anwendungen: Fehlertoleranz auf Basis replizierter Server Auffinden von Objekten in verteilten Anwendungen höhere Leistungsfähigkeit auf der Basis replizierter Server Konsistenz von Kopien (multiple update) Bandbreitenreduzierung (1 mal übertragen statt n mal) Betriebssysteme WS 2017/18, Prozesskommunikation 33

Botschaften-Reihenfolge Tanenbau m P1 P 2 P3 P 4 P1, P4 : Klienten P2, P3 : replizierte Server Botschaften : Schreib-Operationen führen zu Konsistenz-Problem Betriebssysteme WS 2017/18, Prozesskommunikation 34

Botschaften-Reihenfolge (2) Totally Ordered Multicast Tanenbau m Werden mehrere Botschaften an eine Gruppe gesendet, so werden sie von allen Mitgliedern der Gruppe in gleicher Reihenfolge empfangen Mögliche Implementierung: ein Prozess ( Sequencer ) ist für Zustellung zuständig Sequenc er Betriebssysteme WS 2017/18, Prozesskommunikation 35

Botschaften-Reihenfolge Beispiel für nicht kausal geordnet: P 1 M1 P 2 P 3 M2 M2 M1 P1, P2, P3: Teilnehmer an News-Group M1: Anfrage M2: Antwort auf Anfrage Kausal geordnete Zustellung ( Causally Ordered Multicast ) Aufrechterhaltung einer potentiellen kausalen Abhängigkeit zwischen Ereignissen Betriebssysteme WS 2017/18, Prozesskommunikation 36

Zusammenfassung IPC - Grundlage für offene Systeme Client-Server-Architekturen Wichtige Werkzeuge Bibliotheken für Threads und RPC Fehlersemantik und Anwendung Betriebssysteme WS 2017/18, Prozesskommunikation 37

Wegweiser l l l Fernaufruf (Remote Procedure Call RPC) Vorgehen Implementation Fehlerbehandlung Gruppenkommunikation Anhang: SUN RPC Betriebssysteme WS 2017/18, Prozesskommunikation 38

Werkzeuge für RPC Ziel: Botschaften-Systeme für Client-Server-Architekturen handhabbar machen durch Simulation des lokalen Prozeduraufrufes durch Botschaften-System Beipiele: SunRPC grpc (google Werkzeug) Betriebssysteme WS 2017/18, Prozesskommunikation 39

Interface Definition Language Fall-Beispiel SUN-RPC Programm-, Versions-Nummer und Prozedurnummern typedefs, constants, structs, programs rpcgen erzeugt client: stub server: main, dispatcher, stub marshalling und unmarshalling header file lokaler Binding-Service ( port mapper ) Betriebssysteme WS 2017/18, Prozesskommunikation 40

File interface in Sun XDR (1) /* FileReadWrite service interface definition in file FileReadWrite.x */ Coulouris Dollimore Kindberg const MAX = 1000; typedef int FileIdentifier; typedef int FilePointer; typedef int Length; Betriebssysteme WS 2017/18, Prozesskommunikation 41

File interface in Sun XDR (2) Coulouris Dollimore Kindberg struct Data { Length length; char buffer[max]; }; struct writeargs { FileIdentifier f; FilePointer position; Data data; }; struct readargs { FileIdentifier f; FilePointer position; Length length; }; program FILEREADWRITE { version VERSION { void WRITE(writeargs) =1; Data READ(readargs) =2; } = 2; //version number //=> write_2 //=> read_2 } = 9999; //program number Betriebssysteme WS 2017/18, Prozesskommunikation 42

C program for client in Sun RPC (1) // File: C.c - Simple client of the // FileReadWrite service. Coulouris Dollimore Kindberg #include <stdio.h> #include <rpc/rpc.h> #include <FileReadWrite.h> int main(int argc, char **argv) { CLIENT *clienthandle; char *servername = "coffee"; readargs a; Data *data; clienthandle = clnt_create(servername,filereadwrite, VERSION, "udp"); //creates socket + a client handle Betriebssysteme WS 2017/18, Prozesskommunikation 43

C program for client in Sun RPC (2) if (clienthandle == NULL) { clnt_pcreateerror(servername); // unable to contact server exit(1); } Coulouris Dollimore Kindberg a.f = 10; a.position = 100; a.lenght = 1000; data = read_2(&a, clienthandle); // call to remote read procedure... clnt_destroy(clienthandle); //closes socket } return 0; Betriebssysteme WS 2017/18, Prozesskommunikation 44

C program for server procedures in Sun RPC // File S.c - server procedures for the // FileReadWriteservice #include <stdio.h> #include <rpc/rpc.h> #include <FileReadWrite.h> void *write_2(writeargs *a) { Coulouris Dollimore Kindberg } // do the writing to the file Data *read_2(readargs *a) { } static Data result; //must be static result.buffer =... //do the reading from the file result.length =... //amount read from the file return &result; Betriebssysteme WS 2017/18, Prozesskommunikation 45