MutualExclusion,SynchronizationandClassicalInterProcess

上传人:sx****84 文档编号:243039357 上传时间:2024-09-14 格式:PPT 页数:44 大小:382.50KB
返回 下载 相关 举报
MutualExclusion,SynchronizationandClassicalInterProcess_第1页
第1页 / 共44页
MutualExclusion,SynchronizationandClassicalInterProcess_第2页
第2页 / 共44页
MutualExclusion,SynchronizationandClassicalInterProcess_第3页
第3页 / 共44页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,Mutual Exclusion, Synchronization and Classical InterProcess Communication (IPC) Problems,B.Ramamurthy,CSE421,9/14/2024,1,Introduction,An important and fundamental feature in modern operating systems is concurrent execution of processes/threads. This feature is essential for the realization of multiprogramming, multiprocessing, distributed systems, and client-server model of computation.,Concurrency encompasses many design issues including communication and synchronization among processes, sharing of and contention for resources.,In this discussion we will look at the various design issues/problems and the wide variety of solutions available.,9/14/2024,2,Topics for discussion,The principles of concurrency,Interactions among processes,Mutual exclusion problem,Mutual exclusion- solutions,Software approaches (Dekkers and Petersons),Hardware support (test and set atomic operation),OS solution (semaphores),PL solution (monitors),Distributed OS solution ( message passing),Reader/writer problem,Dining Philosophers Problem,9/14/2024,3,Principles of Concurrency,Interleaving and overlapping the execution of processes.,Consider two processes P1 and P2 executing the function,echo,:,input (in, keyboard);,out = in;,output (out, display);,9/14/2024,4,.Concurrency (contd.),P1 invokes,echo,after it inputs into,in, gets interrupted (switched). P2 invokes,echo, inputs into,in,and completes the execution and exits. When P1 returns in is overwritten and gone. Result: first ch is lost and second ch is written twice.,This type of situation is even more probable in multiprocessing systems where real concurrency is realizable thru multiple processes executing on multiple processors.,Solution: Controlled access to shared resource,Protect the shared resource :,in,buffer; “critical resource”,one process/shared code. “critical region”,9/14/2024,5,Interactions among processes,In a multi-process application these are the various degrees of interaction:,1.,Competing processes,: Processes themselves do not share anything. But OS has to share the system resources among these processes “competing” for system resources such as disk, printer.,Co-operating processes,: Results of one or more processes may be needed for another process.,2. Co-operation by sharing,: Example: Sharing of an IO buffer. Concept of critical section. (indirect),3. Co-operation by communication,: Example: typically no data sharing, but co-ordination thru synchronization becomes essential in certain applications. (direct),9/14/2024,6,Interactions .(contd.),Among the three kinds of interactions indicated by 1, 2 and 3 above:,1 is at the system level: potential problems : deadlock and starvation.,2 is at the process level : significant problem is in realizing,mutual exclusion,.,3 is more a,synchronization,problem.,We will study mutual exclusion and synchronization here, and defer deadlock, and starvation for a later time,.,9/14/2024,7,Race Condition,Race condition,: The situation where several processes access and manipulate shared data concurrently. The final value of the shared data depends upon which process finishes last.,To prevent race conditions, concurrent processes must be,synchronized,.,9/14/2024,8,Mutual exclusion problem,Successful use of concurrency among processes requires the ability to define critical sections and enforce mutual exclusion.,Critical section,: is that part of the process code that affects the shared resource.,Mutual exclusion,: in the use of a shared resource is provided by making its access mutually exclusive among the processes that share the resource.,This is also known as the Critical Section (CS) problem.,9/14/2024,9,Mutual exclusion,Any facility that provides mutual exclusion should meet these requirements:,1. No assumption regarding the relative speeds of the processes.,2. A process is in its CS for a finite time only.,3. Only one process allowed in the CS.,4. Process requesting access to CS should not wait indefinitely.,5. A process waiting to enter CS cannot be blocking a process in CS or any other processes.,9/14/2024,10,Software Solutions: Algorithm 1,Process 0,.,while turn != 0 do,nothing;,/ busy waiting,turn = 1;,.,Problems : Strict alternation, Busy Waiting,Process 1,.,while turn != 1 do,nothing;,/ busy waiting,turn = 0;,.,9/14/2024,11,Algorithm 2,PROCESS 0,.,flag0 = TRUE;,while flag1 do nothing;,flag0 = FALSE;,PROBLEM : Potential for deadlock, if one of the processes fail within CS.,PROCESS 1,.,flag1 = TRUE;,while flag0 do nothing;,flag1 = FALSE;,9/14/2024,12,Algorithm 3,Combined shared variables of algorithms 1 and 2.,Process P,i,do,flag i:= true;turn = j;while (flag j and turn = j) ;,critical section,flag i = false;,remainder section,while (1);,Meets all three requirements; solves the critical-section problem for two processes.,9/14/2024,13,Synchronization Hardware,Test and modify the content of a word atomically.,boolean TestAndSet(boolean &target) ,boolean rv = target;,tqrget = true;,return rv;,9/14/2024,14,Mutual Exclusion with Test-and-Set,Shared data:,boolean lock = false;,Process,P,i,do ,while (TestAndSet(lock) ;,critical section,lock = false;,remainder section,9/14/2024,15,Synchronization Hardware,Atomically s variables.,void S &a, boolean &b) ,boolean temp = a;,a = b;,b = temp;,9/14/2024,16,Mutual Exclusion with Swap,Shared data (initialized to,false,):,boolean lock;,Process,P,i,do ,key = true;,while (key = true),S);,critical section,lock = false;,remainder section,9/14/2024,17,Semaphores,Think about a semaphore as a class,Attributes: semaphore value, Functions: init, wait, signal,Support provided by OS,Considered an OS resource, a limited number available: a limited number of instances (objects) of semaphore class is allowed.,Can easily implement mutual exclusion among any number of processes.,9/14/2024,18,Critical Section of,n,Processes,Shared data:,semaphore mutex; /,initially,mutex,= 1,Process,Pi:,do wait(mutex);,critical section,signal(mutex);,remainder section, while (1);,9/14/2024,19,Semaphore Implementation,Define a semaphore as a class:,class Semaphore, int value; / semaphore value,ProcessQueue L; / process queue,/operations,wait(),signal(),Assume,two simple utility operations:,block,suspends the process that invokes it.,wakeup,resumes the execution of a blocked process,P,.,9/14/2024,20,Implementation,Semaphore operations now defined as,S.,wait(),:,S.value-;,if (S.value 0) ,add this process to,S.L;block(); / block a process,S.,signal,:,S.value+;,if (S.value = 0) ,remove a process,P,from,S.L;wakeup(); / wake a process,9/14/2024,21,Semaphores for CS,Semaphore is initialized to 1. The first process that executes a,wait(),will be able to immediately enter the critical section (CS). (S.,wait(),makes S value zero.),Now other processes wanting to enter the CS will each execute the wait() thus decrementing the value of S, and will get blocked on S. (If at any time value of S is negative, its absolute value gives the number of processes waiting blocked. ),When a process in CS departs, it executes S.,signal(),which increments the value of S, and will wake up any one of the processes blocked. The queue could be FIFO or priority queue.,9/14/2024,22,Two Types of Semaphores,Counting,semaphore integer value can range over an unrestricted domain.,Binary,semaphore integer value can range only between 0 and 1; can be simpler to implement.,Can implement a counting semaphore,S,as a binary semaphore.,9/14/2024,23,Semaphore as a General Synchronization Tool,Execute,B,in,P,j,only after,A,executed in,P,i,Use semaphore,flag,initialized to 0,Code:,P,i,P,j,A,flag.,wait,(),flag.,signal,(),B,9/14/2024,24,Classical Problems of Synchronization,Bounded-Buffer Problem,Readers and Writers Problem,Dining-Philosophers Problem,9/14/2024,25,Producer/Consumer problem,Producer,repeat,produce item v;,bin = v;,in = in + 1;,forever;,Consumer,repeat,while (in = out) nop;,w = bout;,out = out + 1;,consume w;,forever;,9/14/2024,26,Solution for P/C using Semaphores,Producer,repeat,produce item v;,MUTEX.wait();,bin = v;,in = in + 1;,MUTEX.signal();,forever;,What if Producer is slow or late?,Consumer,repeat,while (in = out) nop;,MUTEX.wait();,w = bout;,out = out + 1;,MUTEX.signal();,consume w;,forever;,Ans: Consumer will busy-wait at the while statement.,9/14/2024,27,P/C: improved solution,Producer,repeat,produce item v;,MUTEX.wait();,bin = v;,in = in + 1;,MUTEX.signal();,AVAIL.signal();,forever;,What will be the initial values of MUTEX and AVAIL?,Consumer,repeat,AVAIL.wait();,MUTEX.wait();,w = bout;,out = out + 1;,MUTEX.signal();,consume w;,forever;,ANS: Initially MUTEX = 1, AVAIL = 0.,9/14/2024,28,P/C problem: Bounded buffer,Producer,repeat,produce item v;,while(in+1)%n = out) NOP;,bin = v;,in = ( in + 1)% n;,forever;,How to enforce bufsize,?,Consumer,repeat,while (in = out) NOP;,w = bout;,out = (out + 1)%n;,consume w;,forever;,ANS: Using another counting semaphore.,9/14/2024,29,P/C: Bounded Buffer solution,Producer,repeat,produce item v;,BUFSIZE.wait();,MUTEX.wait();,bin = v;,in = (in + 1)%n;,MUTEX.signal();,AVAIL.signal();,forever;,What is the initial value of BUFSIZE?,Consumer,repeat,AVAIL.wait();,MUTEX.wait();,w = bout;,out = (out + 1)%n;,MUTEX.signal();,BUFSIZE.signal();,consume w;,forever;,ANS: size of the bounded buffer.,9/14/2024,30,Semaphores - comments,Intuitively easy to use.,wait() and signal() are to be implemented as atomic operations.,Difficulties:,signal() and wait() may be exchanged inadvertently by the programmer. This may result in deadlock or violation of mutual exclusion.,signal() and wait() may be left out.,Related wait() and signal() may be scattered all over the code among the processes.,9/14/2024,31,Monitors,Monitor is a predecessor of the “class” concept.,Initially it was implemented as a programming language construct and more recently as library. The latter made the monitor facility available for general use with any PL.,Monitor consists of procedures, initialization sequences, and local data. Local data is accessible only thru monitors procedures. Only one process can be executing in a monitor at a time. Other process that need the monitor wait suspended.,9/14/2024,32,Monitors,monitor,monitor-name,shared variable declarations,procedure body,P1,() ,. . .,procedure,body,P2,() ,. . .,procedure body,Pn,() ,. . .,initialization code,9/14/2024,33,Monitors,To allow a process to wait within the monitor, a,condition,variable must be declared, as,condition x, y;,Condition variable can only be used with the operations,wait,and,signal,.,The operation,x.wait();,means that the process invoking this operation is suspended until another process invokes,x.signal();,The,x.signal,operation resumes exactly one suspended process. If no process is suspended, then the,signal,operation has no effect.,9/14/2024,34,Schematic View of a Monitor,9/14/2024,35,Monitor With Condition Variables,9/14/2024,36,Message passing,Both synchronization and communication requirements are taken care of by this mechanism.,More over, this mechanism yields to synchronization methods among distributed processes.,Basic primitives are:,send (destination, message);,receive ( source, message);,9/14/2024,37,Issues in message passing,Send and receive: could be blocking or non-blocking:,Blocking send: when a process sends a message it blocks until the message is received at the destination.,Non-blocking send: After sending a message the sender proceeds with its processing without waiting for it to reach the destination.,Blocking receive: When a process executes a receive it waits blocked until the receive is completed and the required message is received.,Non-blocking receive: The process executing the receive proceeds without waiting for the message(!).,Blocking Receive/non-blocking send is a common combination.,9/14/2024,38,Reader/Writer problem,Data is shared among a number of processes.,Any number of reader processes could be accessing the shared data concurrently.,But when a writer process wants to access, only that process must be accessing the shared data. No reader should be present.,Solution 1 : Readers have priority; If a reader is in CS any number of readers could enter irrespective of any writer waiting to enter CS.,Solution 2: If a writer wants CS as soon as the CS is available writer enters it.,9/14/2024,39,Reader/writer: Priority Readers,Writer:,ForCS.wait();,CS;,ForCS.signal();,Reader:,ES.wait();,NumRdr = NumRdr + 1;,if NumRdr = 1 ForCS.wait();,ES.signal();,CS;,ES.wait();,NumRdr = NumRdr -1;,If NumRdr = 0 ForCS.signal();,ES.signal();,9/14/2024,40,Dining Philosophers Example,monitor dp,enum thinking, hungry, eating state5;,condition self5;,void pickup(int i) / following slides,void putdown(int i) / following slides,void test(int i) / following slides,void init() ,for (int i = 0; i 5; i+),statei = thinking;,9/14/2024,41,Dining Philosophers,void pickup(int i) ,statei = hungry;,testi;,if (statei != eating),selfi.wait();,void putdown(int i) ,statei = thinking;,/ test left and right neighbors,test(i+4) % 5);,test(i+1) % 5);,9/14/2024,42,Dining Philosophers,void test(int i) ,if ( (state(I + 4) % 5 != eating) &,(statei = hungry) &,(state(i + 1) % 5 != eating) ,statei = eating;,selfi.signal();,9/14/2024,43,Summary,We looked at various ways/levels of realizing synchronization among concurrent processes.,Synchronization at the kernel level is usually solved using hardware mechanisms such as interrupt priority levels, basic hardware lock, using non-preemptive kernel (older BSDs), using special signals.,9/14/2024,44,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!