Concurrency: Mutual Concurrency: Mutual Exclusion and Exclusion and SynchronizationSynchronizationChapter 5
1
ConcurrencyConcurrencyMultiple applicationsStructured applicationsOperating system structure
2
ConcurrencyConcurrency
3
Difficulties of ConcurrencyDifficulties of ConcurrencySharing of global resourcesOperating system managing the
allocation of resources optimallyDifficult to locate programming
errors
4
CurrencyCurrencyCommunication among processesSharing resourcesSynchronization of multiple
processesAllocation of processor time
5
ConcurrencyConcurrencyMultiple applications
◦MultiprogrammingStructured application
◦Application can be a set of concurrent processes
Operating-system structure◦Operating system is a set of
processes or threads
6
A Simple ExampleA Simple Example
void echo(){chin = getchar();chout = chin;putchar(chout);
}
7
A Simple ExampleA Simple Example
Process P1 Process P2. .chin = getchar(); .. chin = getchar();
chout = chin; chout = chin;putchar(chout); .. putchar(chout);. .
8
Operating System Operating System ConcernsConcernsKeep track of various processesAllocate and deallocate resources
◦ Processor time◦ Memory◦ Files◦ I/O devices
Protect data and resourcesOutput of process must be
independent of the speed of execution of other concurrent processes
9
Process InteractionProcess InteractionProcesses unaware of each otherProcesses indirectly aware of
each otherProcess directly aware of each
other
10
11
Competition Among Competition Among Processes for ResourcesProcesses for ResourcesMutual 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
DeadlockStarvation
12
Requirements for Mutual Requirements for Mutual ExclusionExclusionOnly 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
13
Requirements for Mutual Requirements for Mutual ExclusionExclusionA 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
14
Mutual Exclusion:Mutual Exclusion:Hardware SupportHardware SupportInterrupt 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
15
Mutual Exclusion:Mutual Exclusion:Hardware SupportHardware SupportSpecial Machine Instructions
◦Performed in a single instruction cycle
◦Access to the memory location is blocked for any other instructions
16
Mutual Exclusion:Mutual Exclusion:Hardware SupportHardware SupportTest and Set Instruction
boolean testset (int i) {if (i == 0) {
i = 1;return true;
}else {
return false;}
}
17
Mutual Exclusion:Mutual Exclusion:Hardware SupportHardware SupportExchange Instructionvoid exchange(int register,
int memory) {int temp;temp = memory;memory = register;register = temp;
}
18
Mutual ExclusionMutual Exclusion
19
Mutual Exclusion Machine Mutual Exclusion Machine InstructionsInstructionsAdvantages
◦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
20
Mutual Exclusion Machine Mutual Exclusion Machine InstructionsInstructionsDisadvantages
◦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
21
SemaphoresSemaphoresSpecial variable called a
semaphore is used for signalingIf a process is waiting for a
signal, it is suspended until that signal is sent
22
SemaphoresSemaphoresSemaphore 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
23
Semaphore PrimitivesSemaphore Primitives
24
Binary Semaphore Binary Semaphore PrimitivesPrimitives
25
Mutual Exclusion Using Mutual Exclusion Using SemaphoresSemaphores
26
27
28
Producer/Consumer Producer/Consumer ProblemProblemOne 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
29
ProducerProducer
producer:while (true) {/* produce item v */b[in] = v;in++;
}
30
ConsumerConsumerconsumer:while (true) { while (in <= out)
/*do nothing */;w = b[out];out++; /* consume item w */
}
31
Producer/Consumer Producer/Consumer ProblemProblem
32
Producer with Circular Producer with Circular BufferBufferproducer:while (true) {/* produce item v */while ((in + 1) % n == out)
/* do nothing */;b[in] = v;in = (in + 1) % n
}
33
Consumer with Circular Consumer with Circular BufferBufferconsumer:while (true) {while (in == out)
/* do nothing */;w = b[out];out = (out + 1) % n;/* consume item w */
}
34
35
36
37
38
39
MonitorsMonitorsMonitor is a software moduleChief 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
40
41
42
43
44
Message PassingMessage PassingEnforce mutual exclusionExchange information
send (destination, message)receive (source, message)
45
SynchronizationSynchronizationSender 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
46
SynchronizationSynchronizationNonblocking send, blocking
receive◦Sender continues on◦Receiver is blocked until the
requested message arrivesNonblocking send, nonblocking
receive◦Neither party is required to wait
47
AddressingAddressingDirect 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
48
AddressingAddressingIndirect 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
49
50
Message FormatMessage Format
51
52
53
Readers/Writers ProblemReaders/Writers ProblemAny number of readers may
simultaneously read the fileOnly one writer at a time may
write to the fileIf a writer is writing to the file, no
reader may read it
54
55
56