Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Outline Objective: –Message Passing Administrative details: –Sign up for demo slots on Demo Scheduler –Check for demo location with grader –Submit details.

Similar presentations


Presentation on theme: "1 Outline Objective: –Message Passing Administrative details: –Sign up for demo slots on Demo Scheduler –Check for demo location with grader –Submit details."— Presentation transcript:

1 1 Outline Objective: –Message Passing Administrative details: –Sign up for demo slots on Demo Scheduler –Check for demo location with grader –Submit details will be posted on the newsgroup –“Freeze” your code at midnight in a subdir you won’t touch until the demo (same as submitted) –Check for changes on the website (in schedule, problem sets, etc)

2 2 Interprocess Communication – Messages (API-level) Assume no explicit sharing of data elements in the address spaces of processes wishing to cooperate/communicate. Essence of message-passing is copying (although implementations may avoid actual copies whenever possible). Problem-solving with messages - has a feel of more active involvement by participants.

3 3 Issues System calls for sending and receiving messages with the OS(s) acting as courier. –Variations on exact semantics of primitives and in the definition of what comprises a message. Naming - direct (to/from pids), indirect (to distinct objects - e.g., mailboxes, ports, sockets) –How do unrelated processes “find” each other? Buffering - capacity and blocking semantics. Guarantees - in-order delivery? no lost messages?

4 4 Send and Receive Messaging combines

5 5 5 DP – Direct Send/Receive Message Passing Between Philosophers Philosopher 0 (thinking) Philosopher 1 Philosopher 2 Philosopher 3 (eating) Philosopher 4 Fork please?

6 6 Philosopher 0 (thinking) Philosopher 1 Philosopher 2 Philosopher 3 (eating) Philosopher 4 Umm. Oh yeah.

7 7 Philosopher 0 (thinking) Philosopher 1 Philosopher 2 Philosopher 3 (eating) Philosopher 4 Fork please?

8 8 Philosopher 0 (thinking) Philosopher 1 Philosopher 2 Philosopher 3 (eating) Philosopher 4 Fork please? I’ll ignore that request until I’m done

9 9 Philosopher 0 (thinking) Philosopher 1 Philosopher 2 Philosopher 3 (eating) Philosopher 4 Fork please?

10 10 Client / Server server-> send(request)

11 11 Example: Time Service (kernel-based)

12 12 Example: Time Service (via Messages)

13 13 Client / Server with Threads

14 14 Hiding Message-Passing: RPC

15 15 Remote Procedure Call - RPC Looks like a nice familiar procedure call P0P0 result = foo(param); P1P1 Receive

16 16 Remote Procedure Call - RPC Looks like a nice familiar procedure call P0P0 result = foo(param); please do foo for P 0 with param P1P1 Receive blocked here

17 17 Remote Procedure Call - RPC Looks like a nice familiar procedure call P0P0 result = foo(param); please do foo for P 0 with param P1P1 Receive r = foo(param); // actual call blocked here

18 18 Remote Procedure Call - RPC Looks like a nice familiar procedure call P0P0 result = foo(param); P1P1 Receive r = foo(param); // actual call Reply returning r to P 0 blocked here

19 19 Remote Procedure Call - RPC Looks like a nice familiar procedure call P0P0 result = foo(param); P1P1 Receive r = foo(param); // actual call Reply returning r to P 0

20 20 Remote Procedure Call - RPC Looks like a nice familiar procedure call P0P0 result = foo(param); P1P1 Receive r = foo(param); // actual call Reply

21 21 5DP via RPC with Fork Manager Looks like a nice familiar procedure call Philosopher 0 result = PickupForks (0); Fork Server Receive r = proc(param); // explicit queuing when necessary Reply

22 22 Example: Time Service via RPC

23 23 What’s Really Going On

24 24 RPC Issues

25 25 Practice Break Larry, Moe, and Curly are planting seeds. Larry digs the holes. Moe then places a seed in each hole. Curly then fills the hole up. There are several synchronization constraints: –Moe cannot plant a seed unless at least one empty hole exists, but Moe does not care how far Larry gets ahead of Moe. –Curly cannot fill a hole unless at least one hole exists in which Moe has planted a seed, but the hole has not yet been filled. Curly does not care how far Moe gets ahead of Curly. –Curly does care that Larry does not get more than MAX holes ahead of Curly. Thus, if there are MAX unfilled holes, Larry has to wait. –There is only one shovel with which both Larry and Curly need to dig and fill the holes, respectively. Sketch out the pseudocode for the 3 threads which represent Larry, Curly, and Moe using whatever synchronization/communication method you like.

26 26 Larry () {while (TRUE) { P(holes); P(shovel); dig; V(shovel); V(empty); } Moe () {while(TRUE){ P(empty); seed empty hole; V(seeded); } semaphore holes = MAX; semaphore shovel = 1; semaphore empty, seeded = 0; Curly () {while(TRUE){ P(seeded); P(shovel); fill hole; V(shovel); V(holes); }

27 27 Larry () {while (TRUE) { garden->allowdigging(); dig; garden->donedigging(); } Moe () {while(TRUE){ garden->allowseeding(); seed empty hole; garden->doneseeding(); } Curly () {while(TRUE){ garden->allowfilling(); fill hole; garden->donefilling(); }

28 28 Garden Monitor Lock garden_gate; Condition shovel_free, empty_holes, filled_holes, not_too_far_ahead; Void allowdigging() { garden_gate.Acquire(); while (holes >= MAX) not_too_far_ahead.Wait(garden_gate); while (!shovel) shovel_free.Wait(garden_gate); holes ++; shovel = FALSE; garden_gate.Release();} Void donedigging() { garden_gate.Acquire(); empty++; shovel=TRUE; empty_holes.Signal(garden_gate); shovel_free.Signal(garden_gate); garden_gate.Release();} Void allowseeding() { garden_gate.Acquire(); while (empty == 0) empty_holes.Wait(garden_gate); garden_gate.Release();} Void doneseeding() { garden_gate.Acquire(); empty--; filled++; filled_holes.Signal(garden_gate); garden_gate.Release();}

29 29 Void allowfilling() { garden_gate.Acquire(); while (filled==0) filled_holes.Wait(garden_gate); while (!shovel) shovel_free.Wait(garden_gate); filled --; shovel = FALSE; garden_gate.Release();} Void donefilling() { garden_gate.Acquire(); holes--; shovel=TRUE; not_too_far_ahead.Signal(garden_gate); shovel_free.Signal(garden_gate); garden_gate.Release();}

30 30 Garden Server (using threads and monitor) While (1){ ReceiveRequest(msg); thread->fork(handler, msg); } Void handler (msg){ garden->msg.function(); SendReply(msg.requester); exit(); }

31 31 Larry () {while (TRUE) { garden_server->RPC(allowdigging); dig; garden_server-> RPC(donedigging); } Moe () {while(TRUE){ garden_server-> RPC(allowseeding); seed empty hole; garden_server-> RPC(doneseeding); } Curly () {while(TRUE){ garden_server-> RPC(allowfilling); fill hole; garden_server-> RPC(donefilling); }

32 32 Outline for 9/17 Objective: –Message Passing Administrative details: –ACM Meeting this Wed. D106 LSRC 6pm Replaced by lecture 5

33 33 Naming Destinations for Messages: Ports replyport-> replyport->receive(response);

34 34 Advantages of Ports

35 35 Port Issues

36 36 Examples of Ports in Real Systems

37 37 Sockets for Client-Server Message Passing Server 1. Create a named socket syscalls: sfd = socket(…) bind (sfd, ptr,…) 2. Listen for clients listen(sfd, …) 4. Connection made and continue listening cfd=accept(sfd, …) 5. Exchange data write(cfd, …) 6. Done: close(cfd); close(sfd); Client 3. Create unnamed socket & ask for connection syscalls: cfd=socket(…) err=connect(cfd, ptr, …) 5. Exchange data read(cfd, …) 6. Done: close(cfd); name

38 38 Notification of Pending Messages

39 39 Polling: Select

40 40 Immediate Notification: Upcalls

41 41 Advantages of Server “Isolation” Afforded by Message Passing

42 42 Reconsidering the Kernel Interface and OS Structure

43 43 Servers and Microkernels

44 44 Microkernel with “User-Level” OS Server Processes fork open

45 45 End-to-End Argument Application-level correctness requires checking at the endpoints to ensure that the message exchange accomplished its purpose –Application semantics involved –Notification of successful delivery (UPS tracking) is not as good as a direct response (thank you note) from the other end. Reliability guarantees in the message-passing subsystem provide performance benefits (short- circuiting corrective measures). –Re-transmitting packet may save re-transferring whole file.


Download ppt "1 Outline Objective: –Message Passing Administrative details: –Sign up for demo slots on Demo Scheduler –Check for demo location with grader –Submit details."

Similar presentations


Ads by Google