Prozess- synchro- nisation

Größe: px
Ab Seite anzeigen:

Download "Prozess- synchro- nisation"

Transkript

1 Kap. 3 Prozess- synchro- nisation Version vom

2 Kap. 3 - Inhalt Kritische Abschnitte Software-Lösungen Semaphore Hardware-Lösungen Synchronisationsprobleme Prozeßkommunikation Verklemmungen Vorgriff : Netzkommunikation Folie 2

3 Kritische Abschnitte I Prozesse heissen nebenläufig (konkurrent), wenn sie zur gleichen Zeit existieren. Ziele: o Vermeidung ungewollter gegenseitiger Beeinflussung o Unterstützung gewollter Kooperation wie: Sharing von Betriebsmitteln, Übermittlung von Signalen, Nachrichtenaustausch, etc. o Fazit: Mechanismen zur Synchronisation und Kommunikation sind notwendig Folie 3

4 Kritische Abschnitte II Bei Programmen, die nebenläufigen Prozessen zugrunde liegen, unterscheidet man: 1. Unkritische Abschnitte, in denen nicht auf gemeinsame Daten zugegriffen wird (oder von allen Prozessen nur lesend) 2. Kritische Abschnitte, in denen auf gemeinsame Daten zugegriffen wird (nicht nur lesend) Zerlegung in kritische und unkritische Abschnitte ist eindeutig. Folie 4

5 Kritische Abschnitte III Situation: Drucker-Spooler Folie 5

6 Kritische Abschnitte IV Folie 6

7 Kritische Abschnitte V Situation: Warteschlangeneintrag eines PCB Anker B C PointToB PointToC A PointToA PCB(B) PCB(C) PCB(A) Einhängen Aushängen (1) Lesen des Ankers: PointToB (1) Lesen des Ankers: PointToB (2) Setzen des NextZeigers:=PointToB (2) Lesen des NextZeigers:PointToC (3) Setzen des Ankers:=PointToA (3) Setzen des Ankers:=PointToC Problem: ( Race conditions : kontextbedingt, nicht-wiederholbare Effekte durch überholende Prozesse) a) Unterbrechung beim Aushängen von B durch Einhängen von A Prozeß A ist weg! b) Unterbrechung beim Einhängen von A durch Aushängen von B Prozeß B bleibt erhalten! Folie 7

8 Kritische Abschnitte VI - Forderungen (Dijkstra 1965) Zwei Prozesse dürfen nicht gleichzeitig in ihren kritischen Abschnitten sein (Gegenseitiger Ausschluß, mutual exclusion). Jeder Prozeß, der am Eingang eines kritischen Abschnitts wartet, muß irgendwann den Abschnitt auch betreten dürfen: kein ewiges Warten darf möglich sein (fairness condition). Ein Prozeß darf außerhalb eines kritischen Abschnitts einen anderen Prozeß nicht blockieren. Es dürfen keine Annahmen über die Abarbeitungsgeschwindigkeit oder Anzahl der Prozesse bzw. Prozessoren gemacht werden. Folie 8

9 Kritische Abschnitte VII Gegenseitiger Ausschluß Folie 9

10 Kritische Abschnitte VIII Modellproblem: Wir betrachten zyklische Prozesse der Gestalt: Prolog Kritischer Abschnitt Epilog Unkritischer Abschnitt Folie 10

11 Kritische Abschnitte IX Welche Verfahren gibt es? Software-Lösungen für 2 oder mehr Prozesse Hardware-Lösungen Betriebssystem-Lösungen (Semaphore/Mutexe) Lock-Files (langsam) File/Record-Locking (nur für Filezugriff) Nachrichten-Lösungen (sehr allgemein) Abstrakte Datentypen (Monitore) Folie 11

12 Software-Lösungen I - erster Versuch Naiver Ansatz: mutual exclusion mit globaler Variabler Wartesperre errichten, bis kritischer Abschnitt frei Prozeß 1 Prozeß WHILE dran 1 DO NoOp END; Kritischer Abschnitt WHILE dran 2 DO NoOp END; Kritischer Abschnitt dran := 2; dran := 1; Problem: nur abwechselnde Benutzung des kritischen Abschnitts, Prozeß blockiert sich selbst (nicht-notw. Blockade und fairness verletzt bei ewigem Warten) Folie 12

13 Software-Lösungen II : zweiter Versuch Verbesserung: Zugang nur blockiert beim Aufenthalt in krit. Abschnitt Prozeß 1 Prozeß WHILE drin2=true DO NoOp END; drin1 := TRUE; Kritischer Abschnitt drin1 := FALSE; WHILE drin1= TRUE DO NoOp END; drin2 := TRUE; Kritischer Abschnitt drin2 := FALSE; Problem: Unterbrechbarkeit der Vor-Protokolle Folie 13

14 Software-Lösungen III : dritter Versuch Verbesserung: Vertauschung im Protokoll Prozeß 1 Prozeß DO drin1 := TRUE; WHILE drin2 = TRUE DO NoOp END; Kritischer Abschnitt drin1 := FALSE; drin2 := TRUE; WHILE drin1 = TRUE DO NoOp END; Kritischer Abschnitt drin2 := FALSE; Besser? Folie 14

15 Software-Lösungen IV : vierter Versuch Algorithmus von Peterson Verbesserung: eine globale Variable, 2 Prozeß-Zustandsvariable. Initialisierung: Interesse1 = Interesse2 = FALSE Prozeß 1 Prozeß Interesse1 := TRUE; dran := 1; WHILE dran=1 AND Interesse2=TRUE DO NoOp END; Kritischer Abschnitt Interesse2 := TRUE; dran := 2; WHILE dran=2 AND Interesse1=TRUE DO NoOp END; Kritischer Abschnitt Interesse1 := FALSE; Interesse2 := FALSE; Folie 15

16 Software-Lösungen V - Diskussion Es gibt Verallgemeinerungen auch für n>2 Prozesse, die mit Arrays von Zustandsvariablen arbeiten! Probleme: o Busy Waiting o Notwendigkeit gemeinsamer Variabler o Kompliziertheit o Viele Fehlermöglichkeiten Folie 16

17 Semaphore I Semaphore (Signalbarken, Dijkstra 1965) Passieren P(s) Aufruf vor krit. Abschnitt, Warten falls besetzt Verlassen V(s) Aufruf nach krit. Abschnitt, Aktivieren eines wartenden Prozesses Synchronisierung zweier Prozesse - Initialisierung s = 1 Prozeß 1 Prozeß P(s) Kritischer Abschnitt V(s) P(s) Kritischer Abschnitt V(s) Folie 17

18 Semaphore IIa Implem. durch busy waiting Software Pseudo-Code Semaphore=Zähler, initial s=1 PROCEDURE P(VAR s:integer) BEGIN WHILE s<=0 DO NoOp END; s:=s-1; END P; PROCEDURE V(VAR s:integer) BEGIN s:=s+1; END V; Ununterbrechbar, sobald s>0 gefunden wird Ununterbrechbar! Problem: spin locks können fairness verletzten, wenn niedrig-priorer Prozeß im krit. Abschnitt Folie 18

19 Semaphore III Implem. durch Schlafen Software Pseudo-Code Datenstruktur TYPE Semaphor = RECORD PROCEDURE P(VAR s:semaphor) value: INTEGER; BEGIN list : ProcessList; s.value:=s.value-1; END; IF s.value < 0 THEN einhängen(myid,s.list); sleep; Initial: s.value:=1 END; END P; PROCEDURE V(VAR s:semaphor) VAR PID: ProcessId; BEGIN IF s.value < 0 THEN PID:=aushängen(s.list); wakeup(pid); END; s.value:=s.value +1; END V; Folie 19

20 Semaphore IV Impl. durch Schlafen Implementierung von Semaphoren als Systemaufrufe ist üblich. Dabei erfolgt Benutzung der BS-internen Routinen zum Sich-Schlafen-Legen und Aufwecken. Wesentlich ist die Unteilbarkeit der Implementierung von P() und V(): Auf Einprozessorsystemen: Unteilbarkeit kann durch Sperren aller Unterbrechungen wahrend der Ausführung von P() und V() erreicht werden. Zulässig, da nur wenige Maschineninstuktionen zur Implementierung notig sind. Folie 20

21 Semaphore V Impl. durch Schlafen Auf Multiprozessorsystemen: Jedem Semaphor wird eine mittels Test-and-Set realisierte Sperrvariable mit Aktivem Warten vorgeschaltet. Hierdurch kann zu jedem Zeitpunkt nur höchstens ein Prozessor den Semaphor manipulieren. Beachte: Unterschiede zwischen Aktivem Warten auf den Zugang zum Semaphor, der einen kritischen Abschnitt schützt (einige Instruktionen, Mikrosekunden) und Aktivem Warten auf den Zugang zum kritischen Abschnitt selbst (problemabhangig, Zeitdauer nicht vorab bekannt oder begrenzt). Folie 21

22 Semaphore VI Klassifizierung Zählsemaphore Wertebereich 0, 1, 2, 3,... Für allgemeinere Aufgabenstellungen geeignet, z.b. für Erzeuger-Verbraucher-Problem Binäre Semaphore Wertebereich 0, 1 Nur für gegenseitigen Ausschluß geeignet : Mutexe Folie 22

23 Semaphore VII UNIX IPC-Paket Das IPC-Paket von UNIX System V besteht aus : Semaphoren Shared Memory Message Queues und bietet dafür die Systemaufrufe semget, semop, semctl shmget, shmat, shmdt, shmctl msgget, msgsnd, msgrvc, msgctl sowie die Komandos ipcs und ipcrm an. Folie 23

24 Semaphore VIII in Unix Manipulation von Arrays von Semaphoren: semctl() semget() semop() Semaphorkontrolloperationen: Initialisierung, Löschen, etc. Semaphor erzeugen bzw. Öffnen Verallgemeinerte Semaphoroperationen, als Spezialfall einfache P() und V()-Operation Folie 24

25 Semaphore IX in Unix Mutexe für Threadkommunikation pthread_mutex_t <- Datentyp pthread_mutex_lock() pthread_mutex_unlock() Folie 25

26 Semaphore X - in Windows NT Prozesse CreateSemaphore() OpenSemaphore() WaitForSingleObject ReleaseSemaphore() Erzeugen Initialisieren (Sema,TimeOutVal) P(s) V(s) Threads Semaphore = Typ CRITICAL_SECTION InitializeCriticalSection(S) EnterCriticalSection(S) P(s) LeaveCriticalSection(S) V(s) Kernprozesse Spin locks: keine Referenzen zu Disk-Speicher, keine traps&syscalls Folie 26

27 Semaphore XI - Atomare Aktionen Beispiel: Geldtransaktion Sie überweisen Computerabsturz! Abbuchung 2000 Empfänger-Gutbuchung 2000 Wo ist das Geld? Keine oder neue Überweisung = Verlust! Forderung: Atomare Aktion Entweder vollständige Transaktion oder gar keine! ( roll back bei Abbruch) Folie 27

28 Semaphore XII - Probleme Mögliche Fehler bei P/V-Anwendung Vertauschung : alle sind nun gleichzeitig im krit. Abschnitt V(mutex);... krit. Abschnitt...; P(mutex); Replikation oder Weglassen: ewiges Warten P(mutex);... krit. Abschnitt...; P(mutex); Falsche Reihenfolge Erzeuger P(freiePlätze); P(mutex); putinbuffer(item); V(mutex); V(belegtePlätze); Erzeuger-Verbraucher-Problem Erzeuger P(mutex); P(freiePlätze); putinbuffer(item); V(mutex); V(belegtePlätze); Folie 28

29 Hardware-Lösungen I - Atomare Aktionen Interrupts ausschalten (Probleme: timer, power failure, I/O) Atomare Instruktionsfolgen Test And Set (test and set lock) PROCEDURE TestAndSet(VAR target:boolean): BOOLEAN VAR tmp:boolean; tmp:=target; target:= TRUE; RETURN tmp; END TestAndSet; Swap PROCEDURE swap(var source,target: BOOLEAN) VAR tmp:boolean; tmp:=target; target:=source; source:=tmp; END swap; Fetch And Add PROCEDURE fetchandadd(var a, value:integer) VAR tmp:boolean; tmp:=a; a:=tmp+value; RETURN tmp; END fetchandadd; Folie 29

30 Hardware-Lösungen II : Synchronisation Mit TSL: Initialisierung: lock :=0; Prozeß 1 Prozeß enter: rg := test_and_set(lock); if rg > 0 then goto enter; enter: rg := test_and_set(lock); if rg > 0 then goto enter; Kritischer Abschnitt Kritischer Abschnitt Problem:? lock := 0; lock := 0; Folie 30

31 Synchronisationsprobleme I - Überblick Präzedenzrelationen Speisende Philosophen Erzeuger-Verbraucher-Problem readers/writers-problem Der schlafender Friseur... Folie 31

32 Synchronisationsprobleme II - Prozesse Präzedenzgraph A B E C D Implementierung mit Semaphoren PROCESS A: TaskBodyA; V(b); V(c); END A; PROCESS B: P(b); TaskBodyB; V(d1);V(e); END B; PROCESS C: P(c); TaskBodyC; V(d2); END C; PROCESS D: P(d1); P(d2); TaskBodyD; END D; PROCESS E: P(e); TaskBodyE; END E; Globale Variable b,c,d1,d2,e mit 0 initialisieren. Folie 32

33 Synchronisationsprobleme III Speisende Philosophen Philosophen essen/denken Zum Essen braucht man 2 Gabeln Aufgabe: wie kommt man zu koordiniertem Essen und Denken, bzw. wie verhindert man das Verhungern? Folie 33

34 Synchronisationsprobleme IV Speisende Philosophen Ausgangspunkt für Lösung: wo liegt das Problem? Folie 34

35 Synchronisation V - Erzeuger-Verbraucher 1. Erzeuger-Prozeß erzeugt Daten 2. Verbraucher-Prozeß verbraucht Daten 3. Unterschiedliche Erzeuger/Verbraucher-Raten 4. Endlicher Puffer zur Zwischenspeicherung der Daten 5. Protokoll? Folie 35

36 Synchronisation VI - Erzeuger-Verbraucher Lösung Semaphoren einführen: belegteplätze:=0, freieplätze:=n, mutex:=1 Erzeuger LOOP produce( item) P(freiePlätze); P(mutex); putinbuffer( item); V(mutex); V(belegtePlätze); END Verbraucher LOOP P(belegtePlätze); P(mutex); getfrombuffer( item); V(mutex); V(freiePlätze); consume( item); END Folie 36

37 Synchronisation VII - Erzeuger-Verbraucher Mögliche Fehler bei Semaphor-Lösung Falsche Reihenfolge Erzeuger-Verbraucher-Problem Erzeuger P(freiePlätze); P(mutex); putinbuffer(item); V(mutex); V(belegtePlätze); Erzeuger P(mutex); P(freiePlätze); putinbuffer(item); V(mutex); V(belegtePlätze); Folie 37

38 Synchronisation IX readers/writers Das berühmte readers/writers-problem (Courtois et. alt. 1971) modelliert den Zugriff auf eine Datenbank. Beispiel: Datenbank für Reservierungssystem einer Fluggesellschaft mit vielen konkurrierenden Prozessen, die Lese- und Schreibwünsche haben. Wenn mehrere Prozesse gleichzeitig lesen, ist dies akzeptabel, aber wenn ein Prozeß schreibt, darf kein anderer Prozeß zugreifen, nicht einmal lesend. Folie 38

39 Synchronisation X : readers/writers - Problem Aufgabe: Koordination Lesen-Schreiben von Dateien Erstes readers/writers-problem (Vorrang für Leser) Ein Leser soll nur warten, falls ein Schreiber bereits Zugriffsrecht zum Schreiben bekommen hat. Dies bedeutet, daß kein Leser auf einen anderen Leser warten muß, nur weil ein Schreiber wartet. Problem: Schreiber wartet ewig Zweites readers/writers-problem (Vorrang für Schreiber) Wenn ein Schreiber bereit ist, führt er das Schreiben so schnell wie möglich durch. Wenn also ein Schreiber bereit ist, die Zugriffsrechte zu bekommen, dürfen keine neuen Leser mit Lesen beginnen. Problem: Leser wartet ewig Folie 39

40 Synchronisation XI - readers/writers Semaphore ReadSem : Anzahl der Leser im krit. Abschnitt RWSem : mutex f. Lesen/Schreibvorgang Lesen Schreiben P(ReadSem); readcount:=readcount+1; IF readcount=1 THEN P(RWSem) END; V(ReadSem);... Reading_Data();... P(ReadSem); readcount:=readcount-1; IF readcount=0 THEN V(RWSem) END; V(ReadSem); P(RWSem);... Writing_Data();... V(RWSem); Folie 40

41 Synchronisation XII Der schlafende Friseur Folie 41

42 Synchronisation XIII Der schlafende Friseur Im Friseursalon stehen der Friseurstuhl und n Stühle zum Warten Wenn kein Kunde da ist, schläft der Friseur im Friseurstuhl Wenn ein Kunde hereinkommt, weckt er den schlafenden Friseur Falls zusätzliche Kunden kommen, während der Friseur die Haare eines Kunden schneidet, nehmen sie auf einem der Warte-Stühle Platz, falls welche frei sind. Andernfalls gehen sie wieder. Problem: Friseur und Kunden sind so zu programmieren, daß keine Race-Conditions auftreten. Dieses Problem ähnelt Problemen bei Warteschlangen mit mehreren Beratern und eingehenden Beratungswünschen. Folie 42

43 Prozeßkommunikation I Gegenüber der Prozeßsynchronisation ist die Kommunikation zwischen Prozessen ein allgemeineres Problem, bei dem es um die Übertragung von Nutzdaten geht. Dabei können auch Prozesse auf verteilten Rechnern betrachtet werden. Überblick: Signale (keine Nutzdaten, nur Info über Ereignis) Pipes Nachrichtensysteme Shared Memory Folie 43

44 Prozeßkommunikation II Signale Problem: Synchrones Warten blockiert Prozesse Abhilfe: Benachrichtigung durch asynchrone Signale (Software-Interrupts) o Aufsetzen der Reaktion auf ein Signal, z.b. sigaction() o Abarbeiten des Programms o Bei Signaleintritt Abarbeiten der angegebenen ISR o Weiterarbeiten im Programm Folie 44

45 Prozeßkommunikation III Signale POSIX Signale Folie 45

46 Prozeßkommunikation IV - Signale System Calls for Process Management s : Errorcode pid : Prozeß-ID residual : verbleibende Zeit vom vorigen Alarm Folie 46

47 Prozeßkommunikation V - Nachrichtenaustausch Allgemeinere Form der Kommunikation ohne gemeinsamen Speicher Nachrichtenausstausch ist sowohl für zentralisierte als auch verteilte Systeme möglich Aufgabe: Bereitstellung eines Mechanismus, mit dem Prozesse einander Nachrichten zukommen lassen können, ohne über gemeinsamen Speicher zu verfügen Folie 47

48 Prozeßkommunikation VI - Nachrichtenaustausch Operationen: - send( msg,... ) Senden einer Nachricht durch Sender(-Prozeß) - receive ( msg,... ) Empfangen einer Nachricht durch Empfänger (-Prozeß) Folie 48

49 Prozeßkommunikation VII - Nachrichtenaustausch Verbindung: - Verbindung ist notwendig, sie heißt Kommunikationskanal - Ein Prozeß kann mehrere Kanäle zur gleichen Zeit aufrecht erhalten - Anzahl der Teilnehmer eines Kanals Regelfall: 2 - Sonderfälle: > 2 - Richtung des Kanals: unidirektional - bidirektional Folie 49

50 Prozeßkommunikation VIII - Nachrichtenaustausch Wichtige Entwurfsaspekte: Adressierung, Pufferung, Nachrichtenstruktur, Implementierung Adressierung - direkt: Sender gibt Name des Empfängers an und umgekehrt - indirekt: Kommunikation erfolgt über Zwischenstationen, sog. Mailboxen Pufferung - Kapazität eines Kanals: Anzahl der Nachrichten, die darin gespeichert werden können, um Sender und Empfänger zeitlich zu entkoppeln Folie 50

51 Prozeßkommunikation IX - Nachrichtenaustausch Kapazität Null (keine Pufferung): Rendevouz (Ada) - Warten ohne Pufferung aufeinander: Sender wird blockiert, wenn sein send vor dem receive stattfindet. Empfänger wird blockiert, wenn receive vor dem send stattfindet. Nachricht wird ohne Zwischenspeicherung vom Sendern zum Empfänger kopiert. Folie 51

52 Prozeßkommunikation X - Nachrichtenaustausch Beschränkte Kapazität - Warteraum der Kapazität N - send blockiert bei vollem Warteraum - receive blockiert bei leerem Warteraum Unbeschränkte Kapazität - Blockierung nur bei receive (leerer Warteraum) - Warteplätze werden von Sender oder Empfänger mitgebracht Folie 52

53 Prozeßkommunikation XI - Nachrichtenaustausch Nachrichtenstruktur - bei typisierten Nachrichten Message = Kopf + Daten TYPE tmessage= RECORD EmpfängerAdresse: STRING; AbsenderAdresse: STRING; NachrichtenTyp: tmsgtyp; SequenzNummer: INTEGER; Länge: CARDINAL; Data: POINTER TO tblock; // oder inline END; - untypisierten Nachrichten: Bytestrom Folie 53

54 Prozeßkommunikation XII - Nachrichtenaustausch Implementierung - Buffer ist im BS-Kern angesiedelt -Bei send wird Nachricht aus dem Adressraum des Prozesses in den Puffer im Kern kopiert. -Beireceive wird Nachricht aus dem Puffer im Kern in den Adreßraum des Empfängers kopiert Folie 54

55 Prozeßkommunikation XIII - Nachrichtenaustausch Struktur einer Mailbox = Nachrichtenpuffer z.b. TYPE Mailbox = RECORD SenderQueue: tlist; EmpfängerQueue: tlist; MsgQueue : tlist; MsgZahl : INTEGER; einhängen(tmsg):procedure; aushängen(tmsg):procedure; END Folie 55

56 Prozeßkommunikation XIV - Nachrichtenaustausch Verbindungsorientierte Kommunikation openconnection (Adresse) send(message)/ receive(message) closeconnection Feststellen, ob der Empfänger existiert und bereit ist: Aufbau der Verbindung Nachrichtenaustausch; Leeren der Nachrichtenpuffer, Beenden der Verbindung Verbindungslose Kommunikation send (Adresse, Message) / receive(adresse, Message) Folie 56

57 Prozeßkommunikation XV - Adressierung Eindeutige Adressierung: Qualifizierte ID mit PID Adresse = Prozeß-ID.RechnerName.Firma.Land z.b syssrv1.informatik.fh-wiesbaden.de Problem: Prozeß wechselt ID bei Neustart, Aufgabe bleibt Lösung: logische ID, nicht physische. Beispiel: Drucker Prädikatsadresse: Spezifikationen als Adresse (IF 386-CPU AND Java_installiert AND Drucker) =True: fühle dich angesprochen, sonst nicht. Arbeitsverteilung! Folie 57

58 Prozeßkommunikation XVI Pipes Unix pipe(), dup() - unidirektionale Kommunikation Programm1 Programm2.. Programm N Programm 1 write() read() Programm 2 Nur zwischen Prozessen möglich, deren Vorfahr die Pipe erzeugt hat. Unix Named Pipes (FIFOs) : Einträge im Filesystem: mkfifo(), mknod() Folie 58

59 Prozeßkommunikation XVII Pipes Windows NT CreatePipe() Bidirektionale pipes Globale Kommunikation: named pipes Folie 59

60 Prozeßkommunikation XVIII Message Queues Unix Message Queues sind wie Semaphore und Shared Memory Teil des IPC-Pakets msgctl() msgget() msgsnd() msgrcv() Management der Queue Queue erzeugen, öffnen Message senden Message empfangen Folie 60

61 Prozeßkommunikation XIX - Synchronisation Synchronisation durch Kommunikation putinbuffer(item) send(consumer,item) Item internen Puffer, geregelt mit P() und V() getfrombuffer(item) receive(producer,item) interner Puffer Item, geregelt mit P() und V() Erzeuger LOOP produce(item); send(consumer,item); END Verbraucher LOOP receive(producer,item); consume(item); END Folie 61

62 Prozeßkommunikation XX - Synchronisation Synchronisierung von n Prozessen durch ein Nachrichtensystem mit indirekter Adressierung Initialisierung: create_mailbox(mutex); send(mutex, message); Prozeß 1 Prozeß receive(mutex, msg) receive(mutex, msg) Kritischer Abschnitt Kritischer Abschnitt send(mutex, msg) send(mutex, msg) Folie 62

63 Prozeßkommunikation XXI - Synchronisation Zusammenfassung: Nachrichtensysteme unter Unix Pipes (pipe(), dup(), read(), write(), close()) Named Pipes (FIFOs) (mknod(), open(), read(), write(), close()) Stream Pipes (socket_pair(), read(), write(), close()) IPC Message Queues (msgget(), msgsnd(), msgrcv, msgctl()) UNIX Domain Sockets / Internet Domain Sockets (socket(), bind(), listen(), connect(), accept(), send(), recv(), read(), write(), close(), select(), sendto(), revcfrom()) Folie 63

64 Prozeßkommunikation XXII Shared Memory Unix Shared Memory gehört wie Semaphore und Message Queues zum IPC-Paket shmctl() shmget() shmat() shmdt() Management des SM-Segmentes SM-Segment erzeugen, öffnen SM-Segment in Prozeß-Adreßraum einblenden SM-Segment ausblenden Zur Synchronisation des Zugriffs sind i.a. Semaphore, etc. notwendig Folie 64

65 Verklemmungen I (deadlocks) (a) Möglicher Deadlock. (b) Entstandener Deadlock. Folie 65

66 Verklemmungen II Beispiel: Datei bearbeiten und ausdrucken durch zwei Prozesse P1 P1 P2 P2 hat die Datei, hat den Drucker, will den Drucker will die Datei Drucker Folie 66

67 Verklemmungen III Notwendige und hinreichende Bedingungen 1. Beschränkte Belegung (mutual exclusion) semaphorgeregelter Zugang 2. Zusätzliche Belegung (hold-and-wait) hat Drucker, will Datei 3. Keine vorzeitige Rückgabe (no preemption) behält Datei bzw. Drucker 4. Gegenseitiges Warten (circular wait) P1 wartet auf P2, P2 wartet auf P1 Folie 67

68 Verklemmungen IV Strategien: das Problem ignorieren, die Verklemmungen erkennen und beseitigen, die Verklemmungen vermeiden, die Verklemmungen verhindern (unmöglich machen). eine der Bedingungen (1) (4) verhindern Folie 68

69 Verklemmungen V Erkennen und beseitigen Anzeichen: viele Prozesse warten, aber CPU ist idle Prozesse müssen zu lange warten Betriebsmittelgraph (resource allocation graph) P 1 P 3 B 3 B 1 B 2 P 4 P 5 P 2 B 4 Verklemmungsbedingungen erfüllt bei Zyklen im Graphen Folie 69

70 Verklemmungen VIII Beseitigen Prozesse abbrechen z.b. verklemmten Prozeß oder Prozeß mit notw. BM Prozesse zurücksetzen auf check point und verklemmenden Prozess warten lassen Betriebsmittel entziehen von verklemmtem Prozeß und warten, bis BM frei werden. Folie 70

71 Verklemmungen IX Verklemmungsbedrohte Zustände vermeiden Test: Banker-Algorithmus (Dijkstra 1965) konservative Kreditausleihe eines Bankers: Gib nur Kredit, wenn auch die Wünsche von anderen, vorgemerkten Kunden berücksichtigt werden können bei sichergestellter Rückzahlung. Verklemmung-JA = Verklemmungsbedrohung; sie muß nicht eintreten, wenn rechtzeitig BM zurückgegeben werden. Vermeidung: lehne eine neue BM-Anforderung ab, wenn der Test sagt, daß dies zu einer Verklemmung führen kann. Aber: Realität unbekannte BM-Forderungen der Zukunft Prozeßzahl + BM-Zahl wechselt Laufzeit-+Speicherintensiver Algorithmus Folie 71

72 Verklemmungen X Unmöglich machen Verhindere eine der vier Bedingungen 1. Beschränkte Belegung (mutual exclusion) BM fest nur einem Service-Prozeß zuordnen 2. Zusätzliche Belegung (hold-and-wait) Nur ein BM pro Prozeß (aber: lesen und drucken nicht gleichzeitig) Alle nötigen BM auf einmal anfordern (nicht bekannt und Vergeudung!) Alle BM zurückgeben vor Neuanforderung (Verwaltungsaufwand!) 3. Keine vorzeitige Rückgabe (no preemption) Vorzeitiger Prozeß-Abbruch kann Inkonsistenzen verursachen 4. Gegenseitiges Warten (circular wait) Ordnungsrelation für BM einführen (Linearisierung) Folie 72

73 Verklemmungen XI Beispiele Ordnungsrelation Durchnumerieren der BM derart, daß nur höhere Nummern angefordert werden (nicht immer möglich). Anordnung von Ressourcen Ressourcen-Graph Folie 73

74 Vorgriff : Netzkommunikation I Namensgebung im Internet A B C D E Eindeutige IP-Adresse: z.b , 32 Bits, notiert in 4 Dezimalzahlen je (Bytes) (IP 4) Name: mailhub.informatik.fh-wiesbaden.de server.localnet.domain.country Zuordnung IP-Nummer Name wird auf speziellen Rechner gehalten (domain name server - DNS) Vergabe und Zuordnung der IP-Adresse durch zentrale Instanzen byte 0 byte 1 byte 2 byte Netz Id Netz Id Netz Id Rechner Id Multicast reserviert Rechner Id Rechner Id Folie 74

75 Vorgriff: Netzkommunikation II Internetnamen: Subnetze Problem: hoher zentraler Verwaltungsaufwand bei zu vielen Netzen Lösung: Unterteilung der Rechneradresse in (Subnetz,Rechner), dezentrale Verwaltung Beispiel: Klasse B-Netz: 2 Byte Rechner ID = (1Byte Subnetz, 1Byte Rechner) besser: dynamische Aufteilung durch Bitmaske (Subnetzmaske) Adressierung (Routingentscheidung) der Subnetze durch die Maske: (Adresse AND Maske) =? Subnetznummer JA : Zielrechner ist lokal im Subnetz NEIN : Routing-Rechner ansprechen Beispiel Rechner im Subnetz Maske Also: Festlegung eines Subnetzes durch Angabe (Subnetznummer,Maske) Folie 75

76 Netzkommunikation III - Ports Konzept Kommunikationspunkte Beispiel TCP/IP: well known port numbers Dienst Portnummer Protokoll Telnet 23 TCP FTP 21 TCP SMTP 25 TCP rlogin 513 TCP rsh 514 TCP portmap 111 TCP rwhod 513 UDP portmap 111 UDP Folie 76

77 Netzkommunikation V - Sockets Arten von Sockets: - UNIX Domain Sockets lokal, Repräsentation im Dateisystem - Internet Domain Sockets verteilt, Repräsentation über IP-Adresse + Portnummer Folie 77

78 Netzkommunikation VI Sockets Stream-Sockets: Verlässliche Kommunikation (i.d.r eines Bytesroms) zwichen zwei Endpunkten Verbindungsorientierter Transportdienst Im Fall von Internet-Domain-Sockets ist TCP das benutzte Default-Protokoll Datagram-Sockets: Unzuverlässige Kommunikation von Einzelnachrichten (best effort delivery) Verbindungsloser Datagram-Dienst Im Fall von Internet-Domain-Sockets ist UDP das benutzte Default-Protokoll Raw Sockets: Erlauben Zugriffe auf untergelagerte Protokolle wie IP, ICMP,... (hier nicht weiter betrachtet) Folie 78

79 Netzkommunikation VII Sockets Socket-Adressen Datentypen Include-Dateien: Internet-Adresse: #include <sys/types.h> #include <sys/sockets.h> struct in_addr { u_long s_addr; }; Socket-Adresse (allg. Typ, in System Calls benutzt): struct sockaddr {u_short sa_family; /* hier AF_xxxx */ char sa_data[14]; /* bis 14B typ-spez.adresse */ }; Socket-Adresse (Internet-Typ): Cast: struct sockaddr_in { u_short sin_family; /* hier AF_INET, o. AF_UNIX */ u_short sin_port; /* Port-Numer in network byte order */ struct in_addr sin_addr; /* IP-Adresse in network byte order */ char sin_zero[8]; /* unbenutzt */ }; struct sockaddr_in my_addr;...(struct sockadd*) &my_addr Folie 79

80 Netzkommunikation VIII Sockets Überblick über Systemaufrufe socket( ) bind( ) listen( ) accept( ) connect( ) send( ) / write( ) recv / read( ) shutdown( ) close( ) sendto( ) / recvfrom( ) select( ) Erzeugen Adresse oder Namen zuordnen Server: Socket auf Akzeptieren von Clients vorbereiten Server: Warten auf Verbindungsanfrage Client: Verbindung aufbauen Senden Empfangen Verbindung schliessen Socket zerstören UDP senden/empfangen Warten auf Eintreffen eines von mehreren I/O-Ereignissen Folie 80

81 Netzkommunikation IX Sockets Verbindungsorientierte Kommunikation mit TCP/IP Client Server Folie 81

82 Netzkommunikation X Sockets Verbindungslose Kommunikation mit UDP Client Server Folie 82

83 Netzkommunikation XI Sockets Erzeugen eines Sockets int socket(int family, int type, int protocol) Erzeugt einen Socket in der Internet-Domäne (family = AF_INET) oder der UNIX-Domäne (AF_UNIX) vom Typ Stream-Socket (type = SOCK_STREAM), Datagram-Socket (SOCK_DGRAM) oder Raw- Socket (SOCK_RAW) zur Verwendung mit dem Protokoll protocol und liefert einen Deskriptor für den erzeugten Socket. Für protocol wird i.a. der Wert 0 übergeben. Dann wird das Default-Protokoll gewählt. In der Internet-Domäne ist dies TCP für einen Stream-Socket bzw. UDP für einen Datagram-Socket. Es ist noch keine Adresse zugeordnet. Der Socket ist nicht gebunden. Beispiele: sd = socket(af_inet, SOCK_STREAM, 0) sd = socket(af_inet, SOCK_DGRAM, 0) Folie 83

84 Netzkommunikation XII Sockets Binden einer Socket-Adresse int bind(int sd, struct sockaddr *addr, int addrlen) Bindet die in der struct sockaddr übergebene, von der Domäne des betrachteten Sockets abhängige Adresse an den Socket. Internet-Domäne: struct sockaddr_in UNIX-Domäne: Filename Der Socket wird im TCP/IP Protokoll-Modul registriert. Für Clients in verbindungsorientierter Kommunikation nicht notwendig. Beispiel: r = bind(sd,(struct sockaddr)* my_addr, sizeof(my_addr)) Folie 84

85 Netzkommunikation XIII Sockets Socket vorbereiten auf Verbindungsanfragen int listen(int sd, int qlength) Zeigt dem TCP/IP-Modul an, dass TCP-Verbindungen über den Socket sd angenommen werden sollen. qlength gibt die maximale Länge der Warteschlange eingehender Verbindungsanfragen an, für die ein accept aussteht. Dies ist nicht die Gesamtzahl von möglichen Clients. Nur auf der Serverseite notwendig- Beispiel: r = listen(sd, 10) Folie 85

86 Netzkommunikation XIV Sockets Warten auf Verbindungsanfragen int accept(int sd, struct sockaddr * claddr, int *addrlen) Blockiert, bis eine Verbindungsanfrage eines Clients am Socket sd anliegt. Dann wird ein neuer Socket erzeugt und dessen Deskriptor zurückgegeben. Damit entsteht eine private Verbindung zwischen Client und Server. Der Socket sd steht für weitere Verbindungsanforderungen zur Verfügung. Die Identität des Clients (entfernte Socket-Adresse) steht in der Struktur claddr zur Verfügung, deren Länge wird in addrlen zurückgegeben. Nur auf der Serverseite bei verbindungsorientierter Kommunikation notwendig. Beispiel: sndnew = accept(sd, struct sockaddr* clientaddr, *clientaddrlen) Folie 86

87 Netzkommunikation XV Sockets Verbindungsanfrage int connect(int sd, struct sockaddr *saddr, int saddrlen) Aktive Verbindungsanfrage eines Clients über seinen Socket sd an den durch die Adresse in saddr mit Länger saddrlen adressierten Server. Dies ist nur für die Client-Seite bei verbindungsorientierter Kommunikation notwendig. Beispiel: r = connect(sd, &saddr, sizeof(saddr)) Folie 87

88 Netzkommunikation XVI Sockets Senden / Empfangen int write(int sd, char *buf, int len) int send(int sd, char *buf, int len, int flag) Der write-aufruf wird wie bei File-Deskriptoren benutzt. Der send-aufruf besitzt einen zusätzlichen Parameter flag für spezielle Optionen. int read(int sd, char *buf, int nbytes) int recv(int sd, char *buf, int nbytes, int flag) Der read-aufruf wird wie bei File-Deskriptoren benutzt. Der recv-aufruf besitzt einen zusätzlichen Parameter flag für spezielle Optionen. Beispiel: count = write(sd, buf, len) count = read(sd, buf, len) count = send(sd, buf, len, sflag) count = recv(sd, buf, len, rflag) Folie 88

89 Netzkommunikation XVII Sockets Schliessen einer Verbindung int shutdown(int sd, int how) Geordnetes Schliessen einer Verbindung, how gibt an, ob sich das TCP/IP-Modul auch nach dem Schliessen noch um die Verbindung kümmern soll. Der Socket-Deskriptor bleibt bestehen und muß gegebenenfalls mit close zerstört werden. Beispiel: r = shutdown(sd, 2) Folie 89

90 Netzkommunikation XVIII Sockets Hilfsfunktionen gethostname() gethostid() gethostbyname() getservbyname() getsockopt() setsockopt() Ermitteln des eigenen Hostnamens Ermitteln der eigenen IP-Adresse Ermitteln der IP-Adresse eines Rechners bei gegebenem Hostnamen Ermitteln der Portnummer bei gebenem Dienstnamen Ermitteln der Optionen eines Sockets Setzen von Socket-Optionen Folie 90

Prozess- synchro- nisation

Prozess- synchro- nisation Kap. 3 Prozess- synchro- nisation Version vom 05.10.2009 Kap. 3 - Inhalt Kritische Abschnitte Software-Lösungen Semaphore Hardware-Lösungen Synchronisationsprobleme Prozeßkommunikation Verklemmungen Folie

Mehr

Prozess-synchronisationsynchronisation

Prozess-synchronisationsynchronisation Race conditions Modul: Programmierung (B-PRG) Grundlagen der Programmierung 1 Teil 3 Prozess-synchronisationsynchronisation Prof. Dr. R. Brause Adaptive Systemarchitektur Institut für Informatik Fachbereich

Mehr

Schichtenmodelle Netzkommunikation - Sockets -RPCs - Server-Modelle

Schichtenmodelle Netzkommunikation - Sockets -RPCs - Server-Modelle Folie 1 5. Netzwerkprogrammierung Schichtenmodelle Netzkommunikation - Sockets -RPCs - Server-Modelle Folie 2 5.1 Schichtenmodelle - Definitionen Schichtenmodelle zerlegen Aufgaben in verschiedene Abstraktionsebenen

Mehr

Tafelübung zu BS 4. Interprozesskommunikation

Tafelübung zu BS 4. Interprozesskommunikation Tafelübung zu BS 4. Interprozesskommunikation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

10. Vorlesung Betriebssysteme

10. Vorlesung Betriebssysteme Dr. Christian Baun 10. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 1/63 10. Vorlesung Betriebssysteme Dr. Christian Baun Hochschule Mannheim Fakultät für Informatik wolkenrechnen@gmail.com Dr.

Mehr

Netzwerk-Programmierung in C

Netzwerk-Programmierung in C 1 / 26 Netzwerk-Programmierung in C Oliver Bartels Fachbereich Informatik Universität Hamburg 2 Juli 2014 2 / 26 Inhaltsverzeichniss 1 IPv4 und IPv6 Wie werden Daten verschickt? 2 3 Verbindungsaufbau ohne

Mehr

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation 09.05.15 1 Literatur [6-1] http://php.net/manual/de/book.sockets.php [6-2] http://de.wikipedia.org/wiki/socket_(software) [6-3] http://php.net/manual/de/book.network.php

Mehr

Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit ausgeführt werden.

Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit ausgeführt werden. 7 Parallelität und Nebenläufigkeit Mehrere Prozessen oder Threads Parallelität Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit

Mehr

Internetanwendungstechnik (Übung)

Internetanwendungstechnik (Übung) Internetanwendungstechnik (Übung) Sockets Stefan Bissell, Gero Mühl Technische Universität Berlin Fakultät IV Elektrotechnik und Informatik Kommunikations- und Betriebssysteme (KBS) Einsteinufer 17, Sekr.

Mehr

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Betriebssysteme (BTS)

Betriebssysteme (BTS) 13.Vorlesung Betriebssysteme (BTS) Christian Baun cray@unix-ag.uni-kl.de Hochschule Mannheim Fakultät für Informatik Institut für Betriebssysteme 31.5.2007 Wiederholung vom letzten Mal Deadlocks und Verhungern

Mehr

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012 Übung zu Grundlagen der Betriebssysteme 10. Übung 18.12.2012 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)

Mehr

Rechnernetze II WS 2012/2013. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404

Rechnernetze II WS 2012/2013. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Rechnernetze II WS 2012/2013 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 5. Mai 2014 Betriebssysteme / verteilte Systeme Rechnernetze

Mehr

Rechnernetze II SS 2015. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404

Rechnernetze II SS 2015. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Rechnernetze II SS 2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 14. Juli 2015 Betriebssysteme / verteilte Systeme Rechnernetze

Mehr

Tafelübung zu BSRvS1. 3. Philosophen. Fortsetzung Grundlagen C-Programmierung

Tafelübung zu BSRvS1. 3. Philosophen.  Fortsetzung Grundlagen C-Programmierung Tafelübung zu BSRvS1 3. Philosophen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/

Mehr

Softwarelösungen: Versuch 4

Softwarelösungen: Versuch 4 Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]

Mehr

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory

Mehr

Adressauflösung. IP Adresse Physikalische Adresse 128.96.34.1 57:FF:AA:36:AB:11 128.96.34.16 85:48:A4:28:AA:18

Adressauflösung. IP Adresse Physikalische Adresse 128.96.34.1 57:FF:AA:36:AB:11 128.96.34.16 85:48:A4:28:AA:18 Adressauflösung IP Adresse Physikalische Adresse 128.96.34.1 57:FF:AA:36:AB:11 128.96.34.16 85:48:A4:28:AA:18 IP Adresse Physikalische Adresse 128.96.34.15??? 128.96.34.16 85:48:A4:28:AA:18 128.96.34.15

Mehr

Verbessertes Konzept: Monitore

Verbessertes Konzept: Monitore Verbessertes Konzept: Monitore Ein Nachteil von Semaphoren ist die Notwendigkeit zur expliziten Anforderung P und Freigabe V des kritischen Bereiches durch den Programmierer Vergißt der Entwickler z.b.

Mehr

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von

Mehr

Kommunikation von Prozessen und Threads

Kommunikation von Prozessen und Threads Kommunikation von Prozessen und Threads Sommersemester 2015 Prof. Dr. Peter Mandl Prof. Dr. Peter Mandl Seite 1 Gesamtüberblick 1. Einführung in Computersysteme 2. Entwicklung von Betriebssystemen 3. Architekturansätze

Mehr

Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung

Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung [RN] Sommer 2012 Socket - Programmierung 1 Überblick Allgemeine Grundlagen für die Socket-Programmierung Elementare

Mehr

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P)

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P) Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 26.11. Foliensatz 5 Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren

Mehr

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN: Inhaltsverzeichnis Carsten Vogt Nebenläufige Programmierung Ein Arbeitsbuch mit UNIX/Linux und Java ISBN: 978-3-446-42755-6 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42755-6

Mehr

Systemsoftware (SYS)

Systemsoftware (SYS) 10.Vorlesung Systemsoftware (SYS) Christian Baun cray@unix-ag.uni-kl.de Hochschule Mannheim Fakultät für Informatik Institut für Robotik 13.6.2008 Heute Interprozesskommunikation Kritische Abschnitte Wettlaufsituationen

Mehr

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells.

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells. Übung 7 1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells. 2.) Charakterisieren Sie kurz das User Datagram Protokoll (UDP) aus der Internetprotokollfamilie

Mehr

An Open Interface for Network Programming under Microsoft Windows. DI. Dr. Peter René Dietmüller

An Open Interface for Network Programming under Microsoft Windows. DI. Dr. Peter René Dietmüller Windows Sockets An Open Interface for Network Programming under Microsoft Windows DI. Dr. Peter René Dietmüller Institut für Informationsverarbeitung und Mikroprozessortechnik Johannes Kepler Universität

Mehr

Inhaltsverzeichnis. 4.1 Systemmodell und notwendige Bedingungen. 4.2 Gegenmaßnahmen

Inhaltsverzeichnis. 4.1 Systemmodell und notwendige Bedingungen. 4.2 Gegenmaßnahmen Inhaltsverzeichnis 4.1 Systemmodell und notwendige Bedingungen Was sind Deadlocks? Darstellungsarten von Prozessabhängigkeiten Notwendige Bedingungen für Deadlocks 4.2 Gegenmaßnahmen Deadlock-Prevention

Mehr

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Ein Prozess kann unmittelbar vom Zustand 1. Running in den Zustand Ready 2. Running in den Zustand Blocked 3. Ready in den Zustand Running Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Der Adressraum

Mehr

Synchronisation und Kommunikation über Nachrichten

Synchronisation und Kommunikation über Nachrichten Synchronisation und Kommunikation über Nachrichten meist bei verteiltem Speicher, kein gemeinsamer Speicher -> keine globalen Variablen keine zu schützenden Datenbereiche Kommunikation über Kanäle und

Mehr

Interprozesskommunikation (IPC)

Interprozesskommunikation (IPC) Gliederung 1. Einführung und Übersicht 2. Prozesse und Threads 3. Interrupts Interprozesskommunikation (IPC) 4. Scheduling 5. Synchronisation 6. Interprozesskommunikation 7. Speicherverwaltung IPC Cl.

Mehr

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/2000 1999-12-20 14.51 / Tafelübung 7. Netzwerkkommunikation und Byteorder

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/2000 1999-12-20 14.51 / Tafelübung 7. Netzwerkkommunikation und Byteorder 7. Tafelübung Lösung der jsh-aufgabe Erläuterung der rshd-aufgabe Sockets 83 Netzwerkkommunikation und Byteorder Wiederholung: Byteorder big endian little endian 0 1 2 3 11 aa bb cc cc bb aa 11 0x11aabbcc

Mehr

Domänenmodell: Fadenkommunikation und -synchronisation

Domänenmodell: Fadenkommunikation und -synchronisation Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4

Mehr

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

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen Kommunikationsnetze Gliederung 1. Socket-Programmierung unter C 2. Socket-Programmierung unter Java Gliederung Berkeley Sockets (Erste freie TCP/IP-Implementierung in Berkeley UNIX): SOCKET: Erzeugen eines

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance 5. November 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Repetition

Mehr

PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation, zugehörige Systemaufrufe und Kommandos 7. UNIX/Linux-Shared Memory 8. (Benannte) Pipes UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter

Mehr

1 Communication Domain und Protokoll

1 Communication Domain und Protokoll U9 9. Übung U9 9. Übung U9-1 Netzwerkkommunikation und Byteorder U9-1 Netzwerkkommunikation und Byteorder Besprechung Aufgabe 7 (lash) Wiederholung: Byteorder Informationen zu Aufgabe 8 (simail) Byteorder

Mehr

Prozesssynchronisation. Inhalt. Vorlesung

Prozesssynchronisation. Inhalt. Vorlesung Vorlesung 20 Prozesssynchronisation Inhalt 1. Race conditions und kritische Abschnitte 1 2. Signale, Semaphore und atomare Aktionen 3 2.1 Atomare Aktionen 4 2.2 Beispiel UNIX 6 2.3 Beispiel Windows NT

Mehr

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Lösung Übungszettel 6

Lösung Übungszettel 6 Lösungen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik SS 03 AG Betriebssysteme FB3 Kirsten Berkenkötter Lösung Übungszettel 6 1 Aufgabe 1: Parallel-Server 1.1 Client #include

Mehr

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis...

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis... 1 Einführung................................................ 1 1.1 Was ist ein Betriebssystem?............................... 1 1.1.1 Betriebssystemkern................................ 2 1.1.2 Systemmodule....................................

Mehr

Programmieren von UNIX-Netzen

Programmieren von UNIX-Netzen W. R. Stevens Programmieren von UNIX-Netzen Grundlagen, Programmierung, Anwendung aus dem Englischen übersetzt von Michael Frese, Werner Maisch, Eberhard Trautwein Eine Coedition der Verlage Carl Hanser

Mehr

Transmission Control Protocol (TCP)

Transmission Control Protocol (TCP) Transmission Control Protocol (TCP) Verbindungsorientiertes Protokoll, zuverlässig, paketvermittelt stream-orientiert bidirektional gehört zur Transportschicht, OSI-Layer 4 spezifiziert in RFC 793 Mobile

Mehr

Technische Informatik II

Technische Informatik II Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Aufgabe 1: Prozesse und Threads a) Wie verhält sich eine Applikation die aus mehreren Prozessen

Mehr

Parallele Prozesse. Prozeß wartet

Parallele Prozesse. Prozeß wartet Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:

Mehr

TCP/UDP. Transport Layer

TCP/UDP. Transport Layer TCP/UDP Transport Layer Lernziele 1. Wozu dient die Transportschicht? 2. Was passiert in der Transportschicht? 3. Was sind die wichtigsten Protkolle der Transportschicht? 4. Wofür wird TCP eingesetzt?

Mehr

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss Maren Bennewitz Version 12.12.2012 1 Nachtrag zu letzter Vorlesung Hauptspeicher reicht nur für begrenzte Anzahl von

Mehr

3. Grundlagen der Systemprogrammierung

3. Grundlagen der Systemprogrammierung 3.1 Betriebssysteme Zum täglichen Umgang des Systemprogrammierers gehört in erster Linie das Betriebssystem des Rechners, mit dem er arbeitet. Es ist daher selbstverständlich, daß er sich einen guten Einblick

Mehr

Deadlocks. System hat nur begrenzte Ressourcen (Ressourcentypen) Hauptspeicher Externer Speicher Drucker File

Deadlocks. System hat nur begrenzte Ressourcen (Ressourcentypen) Hauptspeicher Externer Speicher Drucker File Kapitel V Deadlocks (Verklemmungen) 1 Deadlocks System hat nur begrenzte Ressourcen (Ressourcentypen) Hauptspeicher Externer Speicher Drucker File Prozesse benötigen Genehmigung vor der Benutzung von Ressourcen.

Mehr

Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Netzwerkprogrammierung - Verschiedenes

Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Netzwerkprogrammierung - Verschiedenes U9 9. Übung U9 9. Übung Besprechung Aufgabe 7 (lash) Informationen zu Aufgabe 8 (simail) Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Netzwerkprogrammierung - Verschiedenes U9.1

Mehr

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier.

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier. Netzwerk-Programmierung Netzwerke Sven Hartmeier shartmei@techfak.uni-bielefeld.de Übersicht Netzwerk-Protokolle Protokollfamilie TCP/IP Transmission Control Protocol (TCP) erste Schritte mit sockets Netzwerk-Programmierung

Mehr

Systemprogrammierung.: unter Linux :.

Systemprogrammierung.: unter Linux :. Systemprogrammierung.: unter Linux :. Einführung in Linux 1. Das Filesystem 2. Prozesse 3. Unix Tools 4. Die Shell 1. Das Filesystem 1.1 Dateien 1.2 Ordner 1.3 Links 1.1 Dateien Alles im Filesystem sind

Mehr

Musterlösung Prüfung WS 01/02

Musterlösung Prüfung WS 01/02 Musterlösung Prüfung WS 01/02 Fach: I3 Software-Technik (SEE, GRS, BTS) Teilprüfung: Betriebssysteme Tag: 29.01.2002 10:45 14.45 Raum: 1006 Bearbeitungszeit: 4 Stunden Name:... Matr.Nr.:... Punkte:...

Mehr

Übung zu Grundlagen der Betriebssysteme. 11. Übung

Übung zu Grundlagen der Betriebssysteme. 11. Übung Übung zu Grundlagen der Betriebssysteme 11. Übung 08.01.2012 Organisation Anmeldung zur Klausur Klausur Grundlagen der Betriebssysteme Datum: 05.02.2013 Raum F414 (steht aber noch nicht sicher fest) Anmeldung

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Multiprozessoren. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

Multiprozessoren. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Multiprozessoren Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Multiprozessoren 1/29 2011-06-16 Multiprozessoren Leistungsfähigkeit

Mehr

2. Prozesssynchronisation

2. Prozesssynchronisation Tafelübung zu BSRvS1 2. Prozesssynchronisation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/

Mehr

9 Verteilte Verklemmungserkennung

9 Verteilte Verklemmungserkennung 9 Verteilte Verklemmungserkennung 9.1 Grundlagen Für die Existenz einer Verklemmung notwendige Bedingungen Exklusive Betriebsmittelbelegung Betriebsmittel können nachgefordert werden Betriebsmittel können

Mehr

Prozeßverwaltung. die Prozeßtabelle enthält die Prozeßleitblöcke

Prozeßverwaltung. die Prozeßtabelle enthält die Prozeßleitblöcke Prozeßverwaltung Komponente eines Betriebssystems, die für die Zuteilung von Betriebsmitteln an wartende Prozesse zuständig ist alle für die Prozeßverwaltung ( process management ) wichtigen Informationen

Mehr

Klausur zur Vorlesung Grundlagen der Betriebssysteme

Klausur zur Vorlesung Grundlagen der Betriebssysteme Prof. Dr. L. Wegner Dipl.-Math. K. Schweinsberg Klausur zur Vorlesung Grundlagen der Betriebssysteme 19.2.2004 Name:... Vorname:... Matrikelnr.:... Studiengang:... Hinweise: Bearbeitungszeit 2 Stunden.

Mehr

Java und Netzwerkkommunikation

Java und Netzwerkkommunikation Java und Netzwerkkommunikation Ziel: Kommunikation über Rechnergrenzen hinweg Grundlagen Sockets in Java Java-Netzwerk-Einführung Seite 1 Grundbegriffe Senden und Empfangen von Daten! Frau B Herr A Sender

Mehr

Systemnahe Programmierung in C/C++

Systemnahe Programmierung in C/C++ Systemnahe Programmierung in C/C++ Interprozesskommunikation (IPC) Knut Stolze stolze@informatik.uni-jena.de Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik 2006

Mehr

Referat: Netzwerkprogrammierung in Java

Referat: Netzwerkprogrammierung in Java 1.)ISO/OSI und Internet Referenzmodell Referat: Netzwerkprogrammierung in Java ISO/OSI 7 Schichtenmodell (1-Bitübertragung, 2-Sicherung, 3-Netzwerk, 4-Transport, 5-Sitzung, 6- Darstellung, 7-Anwendung)

Mehr

Interaktionsarten. Zusammenhang. Arten der Interaktion. 7. Kapitel Prozesse im Zusammenspiel: Prozessinteraktion

Interaktionsarten. Zusammenhang. Arten der Interaktion. 7. Kapitel Prozesse im Zusammenspiel: Prozessinteraktion Wintersemester 2016/2017 7. Kapitel Prozesse im Zusammenspiel: Prozessinteraktion Interaktionsarten Prozesse als Teile komplexer Programmsysteme müssen Daten austauschen: sich aufrufen (bzw. beauftragen)

Mehr

Attribute: Name (Zuweisung eines Namens durch Binding) Communication Domain Duplizieren von Filedeskriptoren. SoS I - Ü

Attribute: Name (Zuweisung eines Namens durch Binding) Communication Domain Duplizieren von Filedeskriptoren. SoS I - Ü U7 7. Übung U7 7. Übung U7-1 Überblick Endpunkte einer Kommunikationsverbindung Besprechung 4. Aufgabe (malloc) Arbeitsweise: FIFO, bidirektional Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung

Mehr

U7-2 Netzwerkkommunikation und Byteorder

U7-2 Netzwerkkommunikation und Byteorder U7 7. Übung U7 7. Übung U7-1 Überblick Besprechung 4. Aufgabe (malloc) Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Duplizieren von Filedeskriptoren Netzwerkprogrammierung - Verschiedenes

Mehr

WS Parallele Prozesse. Prof. Hannelore Frank. Parallele Prozesse. PetriNetze. Synchronisation UNIX. Wettbewerb PC Krit.Abschnitt Spinlocks

WS Parallele Prozesse. Prof. Hannelore Frank. Parallele Prozesse. PetriNetze. Synchronisation UNIX. Wettbewerb PC Krit.Abschnitt Spinlocks WS 2007 Überblick 1 2 Petri-Netze als Entwurfshilfsmittel 3 nebenläufiger 4 -Systemfunktionen Literatur Eduard Glatz: Betriebssysteme. Grundlagen, Konzepte, Systemprogrammierung dpunkt.verlag, 2006, ISBN

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch

Mehr

Netzwerkprogrammierung mit C++

Netzwerkprogrammierung mit C++ Netzwerkprogrammierung mit C++ Bernhard Trummer Linux User Group Graz für die Linuxtage03 bernhard.trummer@gmx.at 24. April 2003 Typeset by FoilTEX Übersicht System Calls: Wie erzeugt man Sockets? Wie

Mehr

Inhaltsverzeichnis Übersicht Prozesse

Inhaltsverzeichnis Übersicht Prozesse 1 Übersicht... 1 1.1 Einleitung: Was ist ein Betriebssystem?... 1 1.2 Betriebssystemschichten... 2 1.3 Schnittstellen und virtuelle Maschinen... 3 1.4 Betriebssystemaufbau... 5 1.4.1 Systemaufrufe... 6

Mehr

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen Albrecht Achilles 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Betriebssysteme Eine kompakte Einführung mit Linux

Mehr

.NET Networking 1. Proseminar Objektorientiertes Programmieren mit.net und C# Matthias Jaros. Institut für Informatik Software & Systems Engineering

.NET Networking 1. Proseminar Objektorientiertes Programmieren mit.net und C# Matthias Jaros. Institut für Informatik Software & Systems Engineering .NET Networking 1 Proseminar Objektorientiertes Programmieren mit.net und C# Matthias Jaros Institut für Informatik Software & Systems Engineering Agenda Motivation Protokolle Sockets Anwendung in.net

Mehr

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

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden Dokument: gns_ipc_server.c, 1 - Seite 1 - - 1: 1 von 1 - Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden int main(int argc,

Mehr

J.1 Überblick. Prototyp. Besprechung 6. Aufgabe (timed) (die 5. Aufgabe wird erst in der nächsten Woche besprochen) select. Shared Memory.

J.1 Überblick. Prototyp. Besprechung 6. Aufgabe (timed) (die 5. Aufgabe wird erst in der nächsten Woche besprochen) select. Shared Memory. J 8. Übung J 8. Übung J. Überblick Besprechung 6. Aufgabe (timed) (die 5. Aufgabe wird erst in der nächsten Woche besprochen) Prototyp #include #include select Shared Memory Semaphore

Mehr

2.3 Applikationen. Protokolle: TCP/IP. Telnet, FTP, Rlogin. Carsten Köhn

2.3 Applikationen. Protokolle: TCP/IP. Telnet, FTP, Rlogin. Carsten Köhn 2.3 Applikationen Telnet, FTP, Rlogin Carsten Köhn Protokolle: TCP/IP Application umfasst Dienste, die als Prozesse des Betriebssystems ausgeführt werden SMTP, FTP, HTTP, MIME Transport regelt die Kommunikation

Mehr

Arten der Synchronisation. Koordination nebenläufiger Prozesse. Koordinierung. Reihenschaltung. Einseitige Synchronisation

Arten der Synchronisation. Koordination nebenläufiger Prozesse. Koordinierung. Reihenschaltung. Einseitige Synchronisation Koordination nebenläufiger Prozesse Arten der Synchronisation Systemaufrufe Programmverwaltung Zugriffskontrolle Dateiverwaltung Ein /Auslagerung Vernetzung Ein /Ausgabe Fadenverwaltung Koordination Prozesseinplanung

Mehr

Client/Server-Systeme

Client/Server-Systeme Client/Server-Systeme Prof. Dr.-Ing. Wilhelm G. Spruth WS 2003/2004 Teil 2 Sockets cs 0200 ww6 wgs 09-96 Literatur Socket-Schnittstelle J. Martin, J. Leben: TCP/IP Netzwerke. Prentice Hall, 1994, Kapitel

Mehr

Kommunikationsmodelle

Kommunikationsmodelle Kommunikationsmodelle Dr. Victor Pankratius David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Grundlegende

Mehr

Softwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm

Softwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm U9 9. Übung U9 9. Übung U9-1 Überblick Besprechung Aufgabe 6 (printdir) Posix-Threads U9.1 U9-2 Motivation von Threads U9-2 Motivation von Threads UNIX-Prozesskonzept: eine Ausführungsumgebung (virtueller

Mehr

Betriebssysteme Theorie

Betriebssysteme Theorie Betriebssysteme Theorie SS 2011 Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz D (05.05.2011) Synchronisation 05.05.2011 Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-1 Einführung (1) Es gibt

Mehr

#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt

#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Architektur Verteilter Systeme Teil 2: Prozesse und Threads Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =

Mehr

Betriebssysteme - OS. Betriebssysteme

Betriebssysteme - OS. Betriebssysteme Betriebssysteme - OS Prozesskommunikation IPC - Inter Process Communication Prozesssynchronisation Process Synchronization Literatur: R Brause Silberschatz et al SS2001 Prof H D Clausen - unisal 1 Prozess

Mehr

2. Aufgabenblatt Threads

2. Aufgabenblatt Threads Fakultät Informatik Institut für Systemarchitektur, Professur für Betriebssysteme Betriebssysteme und Sicherheit, WS 2016/17 2. Aufgabenblatt Threads Geplante Bearbeitungszeit: drei Wochen TEIL A THREADS

Mehr

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

U9-3 Vergleich von Thread-Konzepten. U9-2 Motivation von Threads. U9-3 Vergleich von Thread-Konzepten (2) U9-1 Überblick U9 9. Übung U9 9. Übung U9-1 Überblick Besprechung Aufgabe 6 (printdir) Posix-Threads U9.1 User-Level Threads: Federgewichtige Prozesse Realisierung von Threads auf Anwendungsebene innerhalb eines Prozesses

Mehr

Techniken der Projektentwicklung

Techniken der Projektentwicklung Themen Threading Netzwerk Techniken der Projektentwicklung Threading & Netzwerkprogrammierung Ingo Lütkebohle Termin 13 Ingo Lütkebohle Techniken der Projektentwicklung 1 Themen heute Themen Threading

Mehr

Dienstspezifikation nach RFC 2396 193

Dienstspezifikation nach RFC 2396 193 Dienstspezifikation nach RFC 2396 193 Für die Kombination aus Rechnernamen (oder alternativ einer IP-Adresse) und einer Portnummer gibt es mit RFC 2396 einen Standard: hostport host [ : port ] host hostname

Mehr

Die Transportprotokolle UDP und TCP

Die Transportprotokolle UDP und TCP Die Transportprotokolle UDP und TCP! UDP (User Datagram Protocol) " Ist wie IP verbindungslos (Zustellung und Reihenfolge werden nicht garantiert) " Erweitert die Funktionalität von IP um die Möglichkeit,

Mehr

Vorlesung SS 2001: Sicherheit in offenen Netzen

Vorlesung SS 2001: Sicherheit in offenen Netzen Vorlesung SS 2001: Sicherheit in offenen Netzen 2.2 Transmission Control Protocol - TCP 2.3 User Datagram Protocol - UDP Prof. Dr. Christoph Meinel Informatik, Universität Trier & Institut für Telematik,

Mehr

Kommunikation im Netzwerk

Kommunikation im Netzwerk Kommunikation im Netzwerk Die Client-Server Beziehung Der Client stellt eine Frage (Request) an den Server, dieser sendet eine Antworte (Response) zurück. Grundlage ist die Verfügbarkeit von Sockets, die

Mehr

Übung Betriebssysteme 11

Übung Betriebssysteme 11 Übung Betriebssysteme 11 Christian Motika Christian-Albrechts-Universität zu Kiel Institut für Informatik AG Echtzeitsysteme / Eingebettete Systeme Kiel, Germany 29-JAN-2013 CAU - WS 2012/13 Übung Betriebssysteme

Mehr

Socket-Programmierung unter Java

Socket-Programmierung unter Java Datenströme -Programmierung unter Java 1 - Grundlagen: Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer Verwende

Mehr

shri Raw Sockets Prof. Dr. Ch. Reich

shri Raw Sockets Prof. Dr. Ch. Reich shri Raw Sockets Prof. Dr. Ch. Reich Szenario: Verschicken einer gespooften Ping-Message IP-Source-Adresse ist Adresse des Opfers Nachrichtenformat: IP-Header (normal, außer IP-Source-Address ist einstellbar)

Mehr

Klausur zum Kurs Betriebssysteme (1802) am 19. September 2009

Klausur zum Kurs Betriebssysteme (1802) am 19. September 2009 Fakultät für Mathematik und Informatik Lehrgebiet Kooperative Systeme Prof. Dr. Jörg M. Haake FernUniversität in Hagen 58084 Hagen Vorname Name Straße Hausnr. Informatikzentrum Universitätsstr. 1 58084

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung String Operationen i = 25 text1 = "Ich bin " text2 = " Jahre alt" print (text1 + str(i) + text2) print ("ich bin", i, "Jahre alt") print ("ich bin %s Jahre alt" % i) >>> Ich bin 25

Mehr

Aufgaben: (dazugehörige Kapitel / Seitenangaben in Kursiv: Kapitel Seite Seitennummern)

Aufgaben: (dazugehörige Kapitel / Seitenangaben in Kursiv: Kapitel Seite Seitennummern) Klausur Verteilte Systeme 15.6. R120A 8:00-9:30 5 Aufgaben, 50 Punkte (8 12 pro Aufgabe) 45-50 1.0 44 1.1 35 2.0 25 3.0 15 4.0 http://www.bts.fh-mannheim.de Aufgaben: (dazugehörige Kapitel / Seitenangaben

Mehr

Interprozesskommunikation IPC

Interprozesskommunikation IPC Interprozesskommunikation IPC Seminar Konzepte von Betriebsystem-Komponenten Denis Koslowski koslowski.d@web.de 04.07.2005-1 - Interprozesskommunikation Gliederung 1. Was ist IPC? 2. IPC: Datentransfer

Mehr

Netzwerkprogrammierung mit Sockets und C. Ulrich Vogel

Netzwerkprogrammierung mit Sockets und C. Ulrich Vogel Netzwerkprogrammierung mit Sockets und C Ulrich Vogel Netzwerkprogrammierung mit Sockets und C von Ulrich Vogel Dieses Tutorial ist eine Einführung in die Netzwerkprogrammierung mit Hilfe von Sockets.

Mehr

Deadlocks. Christoph Lindemann. Betriebssysteme. Betriebssysteme WS 2004/05. Fahrplan. Inhalt. Das Deadlock Problem

Deadlocks. Christoph Lindemann. Betriebssysteme. Betriebssysteme WS 2004/05. Fahrplan. Inhalt. Das Deadlock Problem Betriebssysteme WS 2004/05 Deadlocks Christoph Lindemann Fahrplan 14.10. Organisation der Vorlesung, Einführung in Betriebssysteme 21.10. Strukturen von Betriebssystemen 28.10. Prozesse und Threads 4.11.

Mehr