Presentation is loading. Please wait.

Presentation is loading. Please wait.

Operating Systems Principles Process Management and Coordination Lecture 2: Processes and Their Interaction 主講人:虞台文.

Similar presentations


Presentation on theme: "Operating Systems Principles Process Management and Coordination Lecture 2: Processes and Their Interaction 主講人:虞台文."— Presentation transcript:

1 Operating Systems Principles Process Management and Coordination Lecture 2: Processes and Their Interaction 主講人:虞台文

2 Content The Process Notion Defining and Instantiating Processes
Precedence Relations Implicit Process Creation Dynamic Creation With fork And join Explicit Process Declarations Basic Process Interactions Competition: The Critical Problem Cooperation Semaphores Semaphore Operations and Data Mutual Exclusion Producer/Consumer Situations Event Synchronization

3 Operating Systems Principles Process Management and Coordination Lecture 2: Processes and Their Interaction The Process Notion

4 What is a process? A process is a program in execution. It includes
Also, called a task. It includes Program itself (i.e., code or text) Data a thread of execution (possibly several threads) Resources (such as files) Execution info (process relation information kept by OS) Multiple processes are simultaneously existent in a system.

5 Virtualization Conceptually,
each process has its own CPU and main memory; processes are running concurrently. Many computers are equipped with a single CPU. To achieve concurrency, the followings are needed CPU sharing  to virtualize the CPU Virtual memory  to virtualize the memory Usually done by the kernel of OS Each process may be viewed in isolation. The kernel provides few simple primitives for process interaction.

6 Physical/Logical Concurrencies
An OS must handle a high degree of parallelism. Physical concurrency Multiple CPUs or Processors required Logical concurrency Time-share CPU

7 Interaction among Processes
The OS and users applications are viewed as a collection of processes, all running concurrently. These processes almost operate independently of one another; cooperate by sharing memory or by sending messages and synchronization signals to each other; and compete for resources.

8 Why Use Process Structure?
Hardware-independent solutions Processes cooperate and compete correctly, regardless of the number of CPUs Structuring mechanism Tasks are isolated with well-defined interfaces

9 Defining and Instantiating Processes
Operating Systems Principles Process Management and Coordination Lecture 2: Processes and Their Interaction Defining and Instantiating Processes

10 User session at a workstation
A Process Flow Graph User session at a workstation

11 Serial and Parallel Processes
S/P Notation: serial execution of process p1 through pn. Serial and Parallel Processes parallel Serial Parallel

12 Properly Nested Process Flow Graphs
S/P Notation: serial execution of process p1 through pn. Properly Nested Process Flow Graphs parallel Properly Nested A process flow graph is properly nested if it can be described by the functions S and P, and only function composition.

13 Properly Nested Process Flow Graphs
improperly Nested

14 Example: Evaluation of Arithmetic Expressions
Expression tree Process flow graph

15 Implicit Process Creation
Processes are created dynamically using language constructs no process declaration. cobegin/coend syntax: cobegin C1 // C2 // … // Cn coend meaning: All Ci may proceed concurrently When all terminate, the statement following cobegin/coend continues.

16 Implicit Process Creation
C1; C2; C3; C4; cobegin C1 // C2 // C3 // Cn coend

17 Example: Use of cobegin/coend
Initialize; cobegin Time_Date // Mail // Edit; Complile; Load; Execute // Print // Web coend coend; Terminate User session at a workstation

18 Data Parallelism Same code is applied to different data
The forall statement syntax: forall (parameters) statements Meaning: Parameters specify set of data items Statements are executed for each item concurrently

19 Example: Matrix Multiplication
forall ( i:1..n, j:1..m ){ A[i][j] = 0; for ( k=1; k<=r; ++k ) A[i][j] = A[i][j] + B[i][k]*C[k][j]; } Each inner product is computed sequentially All inner products are computed in parallel

20 Explicit Process Creation
cobegin/coend limited to properly nested graphs forall limited to data parallelism fork/join can express arbitrary functional parallelism implicit process creation explicit process creation

21 The fork/join/quit primitives
Syntax: fork x Meaning: create new process that begins executing at label x Syntax: join t,y Meaning: t = t–1; if (t==0) goto y; The operation must be indivisible. (Why?) Syntax: quit Process termination

22 Example Synchronization needed here.
Use down-counter t1=2 and t2=3 for synchronization. t1 t2

23 Example The starting point of process pi has label Li. t1 = 2; t2 = 3;
L1: p1; fork L2; fork L5; fork L7; quit; L2: p2; fork L3; fork L4; quit; L5: p5; join t1,L6; quit; L7: p7; join t2,L8; quit; L4: p4; join t1,L6; quit; L3: p3; join t2,L8; quit; L6: p6; join t2,L8; quit; L8: p8; quit; t1 t2

24 The Unix fork procid = fork(); if (procid==0) do_child_processing else
do_parent_processing

25 diverge parent and child.
Replicates calling process. Parent and child are identical except for the value of procid. The Unix fork Use procid to diverge parent and child. procid = fork(); if (procid==0) do_child_processing else do_parent_processing

26 Explicit Process Declarations
Designate piece of code as a unit of execution Facilitates program structuring Instantiate: Statically (like cobegin) or Dynamically (like fork)

27 Explicit Process Declarations
Syntax: process p { declarations_for_p; executable_code_for_p; }; process type p { declarations_for_p; executable_code_for_p; };

28 Example: Explicit Process Declarations
process p{ process p1{ declarations_for_p1; executable_code_for_p1; } process type p2{ declarations_for_p2; executable_code_for_p2; other_declaration_for_p ; ... q = new p2; declarations_for_p; executable_code_for_p;

29 Example: Explicit Process Declarations
process p{ process p1{ declarations_for_p1; executable_code_for_p1; } process type p2{ declarations_for_p2; executable_code_for_p2; other_declaration_for_p ; ... q = new p2; similar to cobegin/coend similar to fork

30 Basic Process Interactions
Operating Systems Principles Process Management and Coordination Lecture 2: Processes and Their Interaction Basic Process Interactions

31 Competition and Cooperation
Processes compete for resources Each process could exist without the other Cooperation Each process aware of the other Processes Synchronization Exchange information with one another Share memory Message passing

32 Resource Competition Shared source, e.g., common data

33 Resource Competition When several process may asynchronously access a common data area, it is necessary to protect the data from simultaneous change by two or more processes. If not, the updated area may be left in an inconsistent state.

34 Race Conditions When two or more processes/threads are executing concurrently, the result can depend on the precise interleaving of the two instruction streams. Race conditions may cause: undesired computation results. bugs which are hard to reproduce!

35 Example x = 0; cobegin p1: ... x = x + 1;
// p2: ... coend What value of x should be after both processes execute?

36 Example p1: . . . R1 = x; R1 = R1 + 1; x = R1; . . . R1 = 0 R1 = 1

37 Example p1: . . . R1 = x; R1 = R1 + 1; p2: . . . x = R1; R2 = x; . . .

38 The Critical Section (CS)
Any section of code involved in reading and writing a share data area is called a critical section. Mutual Exclusion  At most one process is allowed to enter critical section.

39 The Critical Problem Guarantee mutual exclusion: At any time, at most one process executing within its CSi. cobegin p1: while(1) {CS1; program1;} // p2: while(1) {CS2; program2;} ... pn: while(1) {CSn; programn;} coend

40 The Critical Problem Guarantee mutual exclusion: At any time, at most one process executing within its CSi. In addition, we need to prevent mutual blocking: Process outside of its CS must not prevent other processes from entering its CS. (No “dog in manger”) Process must not be able to repeatedly reenter its CS and starve other processes (fairness) Processes must not block each other forever (deadlock) Processes must not repeatedly yield to each other (“after you”--“after you” livelock)

41 Software Solutions Solve the problem without taking advantage of special machine instructions and other hardware.

42 Algorithm 1 int turn = 1; cobegin p1: while (1) {
while (turn==2); /*wait*/ CS1; turn = 2; program1; } // p2: while (1) { while (turn==1); /*wait*/ CS2; turn = 1; program2; coend

43 Algorithm 1      What happens if p1 fail? Mutual Exclusion
int turn = 1; cobegin p1: while (1) { while (turn==2); /*wait*/ CS1; turn = 2; program1; } // p2: while (1) { while (turn==1); /*wait*/ CS2; turn = 1; program2; coend Mutual Exclusion No mutual blocking No dog in manger Fairness No deadlock No livelock What happens if p1 fail?

44 Algorithm 2 int c1 = 0, c2 = 0; cobegin p1: while (1) { c1 = 1;
while (c2); /*wait*/ CS1; c1 = 0; program1; } // p2: while (1) { c2 = 1; while (c1); /*wait*/ CS2; c2 = 0; program2; coend

45 Algorithm 2      What happens if c1=1 and c2=1? Mutual Exclusion
int c1 = 0, c2 = 0; cobegin p1: while (1) { c1 = 1; while (c2); /*wait*/ CS1; c1 = 0; program1; } // p2: while (1) { c2 = 1; while (c1); /*wait*/ CS2; c2 = 0; program2; coend Mutual Exclusion No mutual blocking No dog in manger Fairness No deadlock No livelock What happens if c1=1 and c2=1?

46 Algorithm 3 int c1 = 0, c2 = 0; cobegin p1: while (1) { c1 = 1;
if (c2) c1=0; else{ CS1; c1 = 0; program1; } // p2: while (1) { c2 = 1; if (c1) c2=0; CS2; c2 = 0; program2; coend

47 Algorithm 3 int c1 = 0, c2 = 0; cobegin p1: while (1) { c1 = 1; if (c2) c1=0; else{ CS1; c1 = 0; program1; } // p2: while (1) { c2 = 1; if (c1) c2=0; CS2; c2 = 0; program2; coend Mutual Exclusion No mutual blocking No dog in manger Fairness No deadlock No livelock When timing is critical, fairness and livelock requirements may be violated.

48 Algorithm 3 May violate the fairness requirement. p1: while (1) {
c1 = 1; if (c2) c1=0; else{ CS1; c1 = 0; program1; } p2: while (1) { c2 = 1; if (c1) c2=0; else{ CS2; c2 = 0; program2; } May violate the fairness requirement.

49 Algorithm 3 May violate the livelock requirement. p1: while (1) {
if (c2) c1=0; else{ CS1; c1 = 0; program1; } p2: while (1) { c2 = 1; if (c1) c2=0; else{ CS2; c2 = 0; program2; } May violate the livelock requirement.

50 Algorithm 4 (Peterson) int c1 = 0, c2 = 0, WillWait; cobegin
p1: while (1) { c1 = 1; willWait = 1; while (c2 && (WillWait==1)); /*wait*/ CS1; c1 = 0; program1; } // p2: while (1) { c2 = 1; willWait = 2; while (c1 && (WillWait==2)); /*wait*/ CS2; c2 = 0; program2; coend

51 Algorithm 4 (Peterson)      Mutual Exclusion No mutual blocking
int c1 = 0, c2 = 0, WillWait; cobegin p1: while (1) { c1 = 1; willWait = 1; while (c2 && (WillWait==1)); /*wait*/ CS1; c1 = 0; program1; } // p2: while (1) { c2 = 1; willWait = 2; while (c1 && (WillWait==2)); /*wait*/ CS2; c2 = 0; program2; coend Mutual Exclusion No mutual blocking No dog in manger Fairness No deadlock No livelock

52 Cooperation: Producer/Consumer
Buffer Consumer Deposit Remove Producer must not overwrite any data before the Consumer can remove it. Consumer must be able to wait for the Producer when the latter falls behind and does not fill the buffer on time.

53 Client/Server Architecture
Processes communicate by message passing. Client/Server Architecture

54 Competition and Cooperation
Problems with software solutions: Difficult to program and to verify Competition and cooperation use entirely different solutions Processes loop while waiting (busy-wait)

55 Process States running running ready ready time-out ready_queue
dispatch

56 Process States running running ready ready blocked time-out
ready_queue dispatch wait(si) blocked wait-queues s1 sn . . .

57 Process States running ready ready blocked time-out ready_queue
dispatch wait(si) blocked wait-queues s1 sn . . .

58 Process States A running process calls signal(si). running running
time-out running running ready ready ready_queue dispatch wait(si) signal(si) blocked wait-queues s1 sn . . .

59 P/V Operators running running ready ready blocked time-out ready_queue
dispatch wait(si) signal(si) P operation V operation blocked wait-queues s1 sn . . .

60 Dijkstra’s Semaphores
Dijkstra’s (1968) introduced two new operations, called P and V, that considerably simplify the coordination of concurrent processes. Universally applicable to competition and cooperation among any number of processes. Avoid the performance degradation resulting from waiting.

61 There is a wait-queue associated with each semaphore.
Semaphores A semaphore s is an non-negative integer, a down counter, with two operations P and V. P and V are indivisible operations (atomic) P(s) /* wait(s) */ { if (s>0) s--; else{ queue the process on s, change its state to blocked, schedule another process } V(s) /* signal(s) */ { if (s==0 && queue is not empty){ pick a process from the queue on s, change its state from blocked to ready; } else s++;

62 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4

63 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4

64 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 V(s) V(s) V(s) V(s) Program1 Program2 Program2 Program3 Program4

65 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4

66 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 Process 3 V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4 Program4

67 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 Process 4 Process 3 V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4 Process 3

68 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 Process 4 V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4 Process 3

69 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 Process 4 V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4 Process 3

70 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 Process 4 V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4

71 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 Process 4 V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4

72 Semaphores s There is a wait-queue associated with each semaphore. s
Process 1 Process 2 Process 3 Process 4 s P(s) P(s) P(s) P(s) CS1 CS2 CS3 CS4 CS4 V(s) V(s) V(s) V(s) V(s) V(s) Program1 Program2 Program3 Program4

73 There is a wait-queue associated with each semaphore.
Semaphores A semaphore s is an non-negative integer with two operations P and V. P and V are indivisible operations (atomic) P(s) /* wait(s) */ { if (s>0) s--; else{ queue the process on s, change its state to blocked, schedule another process } V(s) /* signal(s) */ { if (s==0 && queue is not empty){ pick a process from the queue on s, change its state from blocked to ready; } else s++;

74 Mutual Exclusion with Semaphores
semaphore mutex = 1; /* binary semaphore */ cobegin p1: while (1) { P(mutex); CS1; V(mutex); program1; } // p2: while (1) { P(mutex); CS2; V(mutex); program2; } . pn: while (1) { P(mutex); CSn; V(mutex); programn; } coend;

75 Producer/Consumer with Semaphores
// counting semaphore semaphore s = 0; /* zero item produced */ cobegin p1: ... P(s); /* wait for signal from other process if needed */ ... // p2: ... V(s); /* send signal to wakeup an idle process*/ coend; Consumer Producer

76 Producer/Consumer with Semaphores
// counting semaphore semaphore s = 0; /* zero item produced */ cobegin p1: ... P(s); /* wait for signal from other process if needed */ ... // p2: ... V(s); /* send signal to wakeup an idle process*/ coend;

77 The Bounded Buffer Problem
e: the number of empty cells f: the number of items available b: mutual exclusion The Bounded Buffer Problem semaphore e = n, f = 0, b = 1; cobegin Producer: while (1) { Produce_next_record; P(e); /* wait if zero cell empty */ P(b); /* mutually excusive on access the buffer */ Add_to_buf; V(b); /* release the buffer */ V(f); /* signal data available */ } // Consumer: while (1) { P(f); /* wait if data not available */ Take_from_buf; V(e); /* signal empty cell available*/ Process_record; coend

78 Event Synchronization
Operating Systems Principles Process Management and Coordination Lecture 2: Process and Their Interaction Event Synchronization

79 Events An event denotes some change in the state of the system that is of interest to a process. Usually principally through hardware interrupts and traps, either directly or indirectly.

80 Two Type of Events Synchronous event (e.g. I/O completion)
Process waits for it explicitly Constructs: E.wait, E.post Asynchronous event (e.g. arithmetic error) Process provides event handler Invoked whenever event is posted

81 Case study: Windows 2000 WaitForSingleObject WaitForMultipleObjects
Process blocks until object is signaled object type signaled when: process all threads complete thread terminates semaphore incremented mutex released event posted timer expires file I/O operation terminates queue item placed on queue


Download ppt "Operating Systems Principles Process Management and Coordination Lecture 2: Processes and Their Interaction 主講人:虞台文."

Similar presentations


Ads by Google