Concurrency Mutual Exclusion and Synchronization Chapter 5 1

  • Slides: 60
Download presentation
Concurrency: Mutual Exclusion and Synchronization Chapter 5 1

Concurrency: Mutual Exclusion and Synchronization Chapter 5 1

Concurrency • Why Important? – We have multiple programs running at the same time.

Concurrency • Why Important? – We have multiple programs running at the same time. • Difficulties: – Shared memory access. – Managing the I/O device access 2

Operating System Concerns • Keep track of various processes • Allocate and deallocate resources

Operating System Concerns • Keep track of various processes • Allocate and deallocate resources – – Processor time Memory Files I/O devices • Protect data and resources • Output of process must be independent of the speed of execution of other concurrent processes 3

Difficulties of Concurrency • Sharing of global resources • Operating system managing the allocation

Difficulties of Concurrency • Sharing of global resources • Operating system managing the allocation of resources optimally • Difficult to locate programming errors – Because we can’t control how everything is going to be timed can be very difficult to duplicate an error. 4

Three Main Types of Concurrent Processes • Processes unaware of each other – Have

Three Main Types of Concurrent Processes • Processes unaware of each other – Have no access or relation. • Processes indirectly aware of each other – Share some data or an object, but don’t have direct access to each other. • Process directly aware of each other – Have direct access to each other. 5

6

6

A Simple Example void echo() { chin = getchar(); chout = chin; putchar(chout); }

A Simple Example void echo() { chin = getchar(); chout = chin; putchar(chout); } 7

A Simple Example Process P 1. chin = getchar(); . chout = chin; putchar(chout);

A Simple Example Process P 1. chin = getchar(); . chout = chin; putchar(chout); . . Process P 2. . chin = getchar(); chout = chin; . putchar(chout); . 8

Mutual Exclusion • What would be some basic rules? – Make sure the processes

Mutual Exclusion • What would be some basic rules? – Make sure the processes don’t interfere with each other. (Only one process allowed in the critical section at a time. ) – Finite length critical sections (can’t stay there forever). 9

Requirements for Mutual Exclusion • Only one process at a time is allowed in

Requirements for Mutual Exclusion • Only one process at a time is allowed in the critical section for a resource • A process that halts in its noncritical section must do so without interfering with other processes • No deadlock or starvation 10

Requirements for Mutual Exclusion • A process must not be delayed access to a

Requirements for Mutual Exclusion • A process must not be delayed access to a critical section when there is no other process using it • No assumptions are made about relative process speeds or number of processes • A process remains inside its critical section for a finite time only 11

Mutual Exclusion: Hardware Support • Interrupt Disabling – A process runs until it invokes

Mutual Exclusion: Hardware Support • Interrupt Disabling – A process runs until it invokes an operating system service or until it is interrupted – Disabling interrupts guarantees mutual exclusion – Processor is limited in its ability to interleave programs – Multiprocessing • disabling interrupts on one processor will not guarantee mutual exclusion 12

Mutual Exclusion: Hardware Support • Special Machine Instructions – Performed in a single instruction

Mutual Exclusion: Hardware Support • Special Machine Instructions – Performed in a single instruction cycle – Access to the memory location is blocked for any other instructions • Why is this important? – We can’t have instructions getting interwoven. 13

Peterson’s Algorithm Boolean flag[2]; Int turn; Void P 0() { while (true) { flag[0]=true;

Peterson’s Algorithm Boolean flag[2]; Int turn; Void P 0() { while (true) { flag[0]=true; turn = 1; while (flag[1] && turn==1) /** do nothing **/ /** crit section **/ flag [0] = false; } } 14

Peterson’s Algorithm Boolean flag[2]; Int turn; Void P 1() { while (true) { flag[1]=true;

Peterson’s Algorithm Boolean flag[2]; Int turn; Void P 1() { while (true) { flag[1]=true; turn = 0; while (flag[0] && turn==0) /** do nothing **/ /** crit section **/ flag [1] = false } } 15

Homework • Extend Peterson’s Algorithm to work with 3 processes. • Due Wed Feb

Homework • Extend Peterson’s Algorithm to work with 3 processes. • Due Wed Feb 16 th 16

Message Passing • Methods: Memory and Direct Connection • Enforce mutual exclusion • Exchange

Message Passing • Methods: Memory and Direct Connection • Enforce mutual exclusion • Exchange information send (destination, message) receive (source, message) 17

Synchronization • Sender and receiver may or may not be blocking (waiting for message)

Synchronization • Sender and receiver may or may not be blocking (waiting for message) • Blocking send, blocking receive – Both sender and receiver are blocked until message is delivered – Called a rendezvous 18

Synchronization • Nonblocking send, blocking receive – Sender continues on – Receiver is blocked

Synchronization • Nonblocking send, blocking receive – Sender continues on – Receiver is blocked until the requested message arrives • Nonblocking send, nonblocking receive – Neither party is required to wait 19

Addressing • Direct addressing – Send primitive includes a specific identifier of the destination

Addressing • Direct addressing – Send primitive includes a specific identifier of the destination process – Receive primitive could know ahead of time which process a message is expected – Receive primitive could use source parameter to return a value when the receive operation has been performed 20

Direct Addressing • Piped Steams : C and Java – Used to create connections

Direct Addressing • Piped Steams : C and Java – Used to create connections between threads. 21

Addressing • Indirect addressing – Messages are sent to a shared data structure consisting

Addressing • Indirect addressing – Messages are sent to a shared data structure consisting of queues – Queues are called mailboxes – One process sends a message to the mailbox and the other process picks up the message from the mailbox 22

23

23

Message Format 24

Message Format 24

25

25

26

26

Mutual Exclusion: Hardware Support • Test and Set Instruction boolean testset (int i) {

Mutual Exclusion: Hardware Support • Test and Set Instruction boolean testset (int i) { if (i == 0) { i = 1; return true; } else { return false; } } 27

Mutual Exclusion: Hardware Support • Exchange Instruction void exchange(int register, int memory) { int

Mutual Exclusion: Hardware Support • Exchange Instruction void exchange(int register, int memory) { int temp; temp = memory; memory = register; register = temp; } 28

Mutual Exclusion 29

Mutual Exclusion 29

Mutual Exclusion Machine Instructions • Advantages – Applicable to any number of processes on

Mutual Exclusion Machine Instructions • Advantages – Applicable to any number of processes on either a single processor or multiple processors sharing main memory – It is simple and therefore easy to verify – It can be used to support multiple critical sections 30

Mutual Exclusion Machine Instructions • Disadvantages – Busy-waiting consumes processor time – Starvation is

Mutual Exclusion Machine Instructions • Disadvantages – Busy-waiting consumes processor time – Starvation is possible when a process leaves a critical section and more than one process is waiting. – Deadlock • If a low priority process has the critical region and a higher priority process needs, the higher priority process will obtain the processor to wait for the critical region 31

Semaphores • Special variable called a semaphore is used for signaling • If a

Semaphores • Special variable called a semaphore is used for signaling • If a process is waiting for a signal, it is suspended until that signal is sent 32

Semaphores • Semaphore is a variable that has an integer value – May be

Semaphores • Semaphore is a variable that has an integer value – May be initialized to a nonnegative number – Wait operation decrements the semaphore value – Signal operation increments semaphore value 33

34

34

35

35

Mutual Exclusion Using Semaphores 36

Mutual Exclusion Using Semaphores 36

37

37

38

38

Producer/Consumer Problem • One or more producers are generating data and placing these in

Producer/Consumer Problem • One or more producers are generating data and placing these in a buffer • A single consumer is taking items out of the buffer one at time • Only one producer or consumer may access the buffer at any one time 39

Producer producer: while (true) { /* produce item v */ b[in] = v; in++;

Producer producer: while (true) { /* produce item v */ b[in] = v; in++; } 40

Consumer consumer: while (true) { while (in <= out) /*do nothing */; w =

Consumer consumer: while (true) { while (in <= out) /*do nothing */; w = b[out]; out++; /* consume item w */ } 41

Producer/Consumer Problem 42

Producer/Consumer Problem 42

Producer with Circular Buffer producer: while (true) { /* produce item while ((in +

Producer with Circular Buffer producer: while (true) { /* produce item while ((in + 1) /* do nothing b[in] = v; in = (in + 1) % } v */ % n == out) */; n 43

Consumer with Circular Buffer consumer: while (true) { while (in == out) /* do

Consumer with Circular Buffer consumer: while (true) { while (in == out) /* do nothing */; w = b[out]; out = (out + 1) % n; /* consume item w */ } 44

45

45

46

46

47

47

48

48

49

49

Monitors • Monitor is a software module • Chief characteristics – Local data variables

Monitors • Monitor is a software module • Chief characteristics – Local data variables are accessible only by the monitor – Process enters monitor by invoking one of its procedures – Only one process may be executing in the monitor at a time 50

51

51

52

52

53

53

54

54

Readers/Writers Problem • Any number of readers may simultaneously read the file • Only

Readers/Writers Problem • Any number of readers may simultaneously read the file • Only one writer at a time may write to the file • If a writer is writing to the file, no reader may read it 55

56

56

57

57

Concurrency • Multiple applications – Multiprogramming • Structured application – Application can be a

Concurrency • Multiple applications – Multiprogramming • Structured application – Application can be a set of concurrent processes • Operating-system structure – Operating system is a set of processes or threads 58

Competition Among Processes for Resources • Mutual Exclusion – Critical sections • Only one

Competition Among Processes for Resources • Mutual Exclusion – Critical sections • Only one program at a time is allowed in its critical section • Example only one process at a time is allowed to send command to the printer • Deadlock – Next Chapter • Starvation – Next Chapter 59

60

60