Download presentation
Presentation is loading. Please wait.
Published byAllan Daniel Modified over 9 years ago
1
Concurrency: Mutual Exclusion and Synchronization Chapter 5
2
Concurrency The design of an OS are concerned with the management of processes and threads: Multiprogramming Multiprocessing Distributed processing Fundamental of OS design that deal with all of these is Concurrency Execution of more than one procedure at the same time (i.e. access to shared data), either truly simultaneously (as in multiprocessor) or in an unpredictably interleaved manner (as in uniprocessor) 2
3
Concurrency… Encompass a host design issues including: Communication among processes Sharing and competing for resources Synchronization of the activities of multiple processes Allocation of processor time to processes This issues arise in multiprocessing, distributed processing and also in single- processor multiprogramming systems. 3
4
Concurrency… Arise in three different contexts: Multiple applications Multiprogramming was invented to allow processing time to be dynamically shared among a number of active applications. Structured application Some application can be effectively programmed as a set of concurrent processes Operating-system structure OS also implemented as a set of processes or threads. 4
5
Principles of Concurrency Difficulties with Concurrency: 1.Sharing global resources E.g.: two process make use same global variable and both perform reads and writes on that variable, then the order in which the various reads and writes are executed is critical. 2.Management of allocation of resources E.g.: process A may request use of, and be granted control of a particular I/O channel and then be suspended before using that channel 3.Programming errors difficult to locate. Because results are typically not deterministic and reproducible. 5
6
A Simple Example 1 Consider the following echo procedure: void echo() { chin = getchar(); chout = chin; putchar(chout); } 6
7
A Simple Example 1… This procedure shows the essential elements of a program that will provide a character echo procedure: Input is obtained from keyboard Each input is stored in variable chin. Then transferred to variable chout and sent to display. Any program can call this procedure repeatedly to accept user input and display it on the user’s screen. 7
8
A Simple Example 1… In uniprocessor multiprogramming system : User can jump from one application to another and each application uses the same keyboard for input and same screen for output. Each application need to use this procedure, so this shared procedure is loaded into a portion of memory global to all applications. Thus only a single copy of echo procedure is used, saving space. The sharing of main memory among processes is useful to permit efficient and close interaction among processes. 8
9
A Simple Example 1… But, it can leads to problem, consider the following sequence (Process P1 and P2): 1.P1 invokes the echo procedure and is interrupted immediately after the conclusion of getchar function. At this point P1 has entered x, so x is stored in variable chin. 2.P2 is activated and invokes the echo procedure, runs to conclusion, inputting and display a single character y on the screen. 3.P1 is resumed. But the value of x has been overwritten in chin and therefore lost. chin contains y and transferred to chout and displayed on screen. 9
10
A Simple Example 1… Thus the first character is lost and the second character is displayed twice. The problem is on the shared global variable chin. Multiple processes have access to this variable; if one process updates the global variable and then is interrupted, another process may alter the variable before the first process can use its value. 10
11
A Simple Example 1… How to Solve??? Only one process at a time in that procedure. So, the following sequence may result: 1.P1 invokes the echo procedure and is interrupted immediately after the conclusion of the input function. x is stored in variable chin. 2.P2 activated and invokes the echo procedure. However because P1 is still in the echo procedure, P2 is currently blocked from entering the procedure. Therefore P2 is suspended awaiting for the availability of the echo procedure. 11
12
A Simple Example 1… 3.P1 resumes and completes execution of echo. The proper character x is displayed. 4.When P1 exits echo, this removes the block on P2. When P2 later resumed, the echo is successfully invoked. Necessary to protect share global variables. How? Control the code that accesses the variable. How this discipline is imposed? Major topic of this chapter. 12
13
A Simple Example 2 In multiprocessor system, the same problems of protected shared resources arise, and the same solution used. Suppose there is no mechanism for controlling access to the shared global variable, the following events occur: 1.P1 and P2 are both executing, each on separate processor. Both processes invoke the echo procedure. 13
14
A Simple Example 2… 2.The following events occur: Process P1Process P2.. chin = getchar();....chin = getchar(); chout = chin; chout = chin; putchar(chout);....putchar(chout);.. 14
15
A Simple Example 2… The result is, the character input for P1 is lost before displayed, and the character input for P2 is displayed by both P1 and P2. Now, let add the capability of enforcing the discipline that only one process at a time maybe in echo. 15
16
A Simple Example 2… The following sequence occurs: 1.P1 and P2 are both executing, each on separate processor. P1 invokes the echo procedure. 2.While P1 is inside the echo procedure, P2 invokes echo procedure. Because P1 is still inside the echo procedure (whether P1 is suspended or executing), P2 is blocked from entering procedure. So, P2 is suspended awaiting the availability of the echo procedure. 16
17
A Simple Example 2… 3.After P1 completes execution of echo, it will exits that procedure, and continue executing. P2 will resumed and begins executing echo. 17
18
Race Condition Occurs when multiple processes read and write data items so that the final result depends on the order of execution of instructions in the multiple processes. Example 1: Two processes P1 and P2 share the global variable A. P1 updates A = 1, and at some point P2 update A = 2. These two tasks are in race to write in variable A. The “loser” of the race (the process that updates last) determines the final value of A. 18
19
Race Condition Example 2: Two processes P3 and P4 share the global variable B and C, with initial value B = 1 and C = 2. P3 B = B + C, P4 C = B + C. These two processes update different variables. The final values of the two variables depend on the order in which the two processes execute these assignments. 19
20
Operating System Concerns Issues raised by concurrency: 1.Keep track of active processes 2.Allocate and deallocate resources Processor time Memory Files I/O devices 3.Protect data and resources 4.Result of process must be independent of the speed of execution of other concurrent processes (SUBJECT OF THIS CHAPTER) 20
21
Operating System Concerns To understand how the issue of speed independence can be address, we need to understand the ways in which processes can interact with each other. 21
22
Process Interaction The process can be classify with the ways which processes interact on the basis of the degree to which they are aware of each other’s existence. 1.Processes unaware of each other 2.Processes indirectly aware of each other 3.Process directly aware of each other 22
23
Processes Unaware of Each Other Independent processes that are not intended to work together. E.g. of situation: multiprogramming of multiple independent processes Although the processes are not working together, the OS needs to be concerned about competition for resources. E.g.: two independent applications may both want to access the same disk or file or printer. OS must regulate these accesses. 23
24
Competition Among Processes for Resources Concurrent processes come into conflict with each other when they are competing for the use of the same resource. E.g of situation: Two or more processes need to access a resource during the course of their execution. Each process unaware of the existence of the other processes, and each is to be unaffected by the execution of other processes. Each process should leave the state of any resource that it uses unaffected. (e.g of resource: I/O devices, memory and processor time) 24
25
Competition Among Processes for Resources… There is no exchange information btw this processes but the execution of one process may affect the behavior of competing processes. If two process both wish access to a single, then one process will be allocated by the OS and the other will have to wait. The process that is denied access will be slow down. Extreme case: the blocked process may never get access to the resource and hence will never terminate successfully. 25
26
Competition Among Processes for Resources… Three control problems in the case of competing processes: 1.Mutual Exclusion 2.Deadlock 3.Starvation 26
27
Mutual Exclusion The ability to exclude all other processes from a course of action while one process is granted that ability. Suppose there are two or more processes require access to single non sharable resource such as printer. During the execution, each process will be sending commands to the I/O device, receiving status information, sending data and/or receiving data. 27
28
Mutual Exclusion… This resource known as critical resource, and the portion of the program that uses it a critical section of a program. At a time only one program can be allowed in critical section 28
29
Deadlock Consider two processes, P1 and P2, and two resources R1 and R2. Suppose that each process needs access to both resources to perform its function. It is possible to have the following situation: P1 request for R2, receives it P2 request for R1, receives it P1 request R1, queue up waiting for P2 to release it P2 request R2, queue up waiting for P1 to release it 29
30
Starvation Suppose that three processes (P1, P2, P3) each require periodic access to resource R. Consider the situation: P1 is using the resource, both P2 and P3 are delayed waiting for the resources. When P1 exits its critical section, either P2 or P3 should be allowed to access R. Assume OS granted request P3, and P1 again require access. 30
31
Starvation… If the OS grants access to P1 after P3 has finished and subsequently alternately grants access to P1 and P3, the P2 may indefinitely be denied to the resource, even though there is no deadlock situation. 31
32
Competition Among Processes for Resources… Control of competition inevitably involves the OS who responsible to allocate resources. But in addition, the processes themselves will need to be able to express the requirement for mutual exclusion, such as locking a resource prior to its use. Any solution will involve some support from the OS, such as the provision of locking facility. (E.g: Figure 5.1) 32
33
Processes Indirectly Aware of Each Other These are processes that are not necessarily aware of each other by their respective process IDs but that share access to some object, such as an I/O buffer. Such processes exhibit cooperation in sharing the common object. 33
34
Cooperation Among Process by Sharing The case of cooperation by sharing covers processes that interact with other processes without being explicitly aware of them. For e.g, multiple processes may have access to shared variables or to a shared files or database. Processes may use and update the shared data without reference to other processes but know that other processes may have access to the same data. 34
35
Cooperation Among Process by Sharing… Thus the process must cooperate to ensure that the data they share are properly managed. The control mechanisms must ensure the integrity of the shared data. There are also need the control problems of mutual exclusion, deadlock and starvation because data are hold on resources. 35
36
Cooperation Among Process by Sharing… The different is that data items may be accessed in two different modes, reading and writing, and only writing operations must be mutually exclusive. Data coherence as the new requirement is introduced. 36
37
Cooperation Among Process by Sharing… Data Coherence: E.g.: Book keeping application where various data items may be updated Suppose two items of data a and b are to be maintained in the relationship a=b. So, any program that updates one value, must also update the other to maintain the relationship (a=b) 37
38
Cooperation Among Process by Sharing… Consider the following two processes: P1: a = a + 1; b = b + 1; P2: b = 2 * b; a = 2 * a; 38
39
Cooperation Among Process by Sharing… If each process taken separately, in will leave the shared data in consistent state. Consider the following concurrent execution, in which this two processes respect mutual exclusion on each individual data item (a and b); a = a + 1; b = 2 * b; b = b + 1; a = 2 * a; 39
40
Cooperation Among Process by Sharing… At the end of the execution sequence, the condition a = b no longer holds. For e.g. if we start with a = b = 1, at the end of the execution sequence we have a = 4 and b = 3. This problem can be avoided by declaring the entire sequence in each process to be a critical section. 40
41
Processes Directly Aware of Each Other These are processes that are able to communicate with each other by process ID and that are designed to work jointly on some activity. Processes exhibit cooperation. 41
42
Cooperation Among Processes by Communication When processes cooperate by communication, the various processes participate in a common effort that links all the processes. The communication provides a way to synchronize, or coordinate, the various activities. Communication can be characterized as consisting messages of some sort. Primitives for sending and receiving messages may be provided as part of programming language or provided by the system kernel of the OS. 42
43
Cooperation Among Processes by Communication… So, nothing is shared between processes in the act of passing messages, no need to control mutual exclusion. The deadlock and starvation problems are present. E.g. of deadlock, two process may be blocked, each waiting for communication from the other. 43
44
Cooperation Among Processes by Communication… E.g. of starvation, consider three processes, P1,P2 and P3, that exhibit the following behavior: P1 is attempting to communicate with either P2 or P3, and P2 and P3 are both attempting to communicate with P1. A sequence could arise in which P1 and P2 exchange information repeatedly, while P2 is blocked waiting for a communication from P1. There is no deadlock, because P1 still active but P3 is starved here. 44
45
Summary of Process Interaction 45 Degree of Awareness RelationshipInfluences That One Process Has on the Other Potential Control Problems Unaware of each otherCompetitionResults of one process independent of the action of others Timing of process maybe affected Mutual Exclusion Deadlock Starvation Indirectly aware of each other (e.g. share object) Cooperation by sharingResults of one process may depend on information obtained from others Timing of process maybe affected Mutual Exclusion Deadlock Starvation Data Coherence Directly aware of each other (have communication primitives available to them) Cooperation by communication Results of one process may depend on information obtained from others Timing of process maybe affected Deadlock Starvation
46
Requirements for Mutual Exclusion Any facility or capability that is to provide support for mutual exclusion should meet the following requirements: 1.Mutual Exclusion must be enforced: Only one process at a time is allowed in the critical section for a resource or shared object. 2.A process that halts in its non-critical section must do so without interfering with other processes. 46
47
Requirements for Mutual Exclusion… 3.It must not be possible for a process requiring access to critical section to be delayed indefinitely: No deadlock or starvation 4.A process must not be delayed access to a critical section when there is no other process using it 5.No assumptions are made about relative process speeds or number of processes 6.A process remains inside its critical section for a finite time only 47
48
Approaches for Mutual Exclusion 1.Software Solution 2.Hardware Solution 3.The 3 rd approach 48
49
Software Solutions Leave the responsibility to the process that wish to execute concurrently. Thus processes, whether they are system programs or application programs, would be required to coordinate with one another to enforce mutual exclusion. No support from programming language or operating system. Prone to high processing overhead and bugs E.g: Dekker’s Algorithm and Peterson Algorithm 49
50
Hardware Solutions 1.Interrupt Disabling In uniprocessor system, concurrent process can’t be overlapped. A process runs until it invokes an operating- system service or until it is interrupted Disabling interrupts guarantees mutual exclusion Disadv: Price high : Processor is limited in its ability to interleave programs Will not work in Multiprocessor –disabling interrupts on one processor will not guarantee mutual exclusion 50
51
Hardware Solutions… 2.Special Purpose Machine Instruction Several machine instruction that carry out two actions atomically (read & write @ read & test). Performed in a single instruction cycle. Not subject to interference from other instruction Adv: Applicable to any number of processes on either a single or multiple processor sharing main memory Simple and easy to verify It can be used to support multiple critical sections –Each critical section can be verify by it owns variable. 51
52
Hardware Solutions… DisAdv: Busy waiting consumes processor time Starvation is possible –When a process leaves a critical section and more that one process is waiting. Deadlock –If a low priority process (P1) has the critical region and a higher priority process (P2) needs, the higher priority process will obtain the processor. –P1 is interrupted to give the processor to P2. –P2 attempts to use same resources as P1, so P1 will be denied access because of the ME. –P1 will be in the busy waiting loop. –P1 will never be dispatched because it’s priority is lower than P2. 52
53
The 3 rd Approach To provide some level of support within the operating system or a programming language. - semaphores, monitors and message passing. 53
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.