第4章-互斥同步与通信解析优秀PPT.ppt
《第4章-互斥同步与通信解析优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第4章-互斥同步与通信解析优秀PPT.ppt(116页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机操作系统教程(第计算机操作系统教程(第2版)版)第四章第四章 互斥、同步与通讯互斥、同步与通讯并发进程(concurrent processes)进程互斥(mutual exclusion)进程同步(synchronization)进程高级通讯(communication)1计算机操作系统教程(第计算机操作系统教程(第2版)版)4.1 并发进程4.1.1 依次程序及其特性依次程序及其特性程序的依次性程序的依次性-内部依次性:内部依次性:P1:a1,a2,a3;P2:b1,b2,b3-外部依次性:情形外部依次性:情形1:a1,a2,a3,b1,b2,b3;情形情形2:b1,b2,b3,a1
2、,a2,a3依次程序设计的特性:依次程序设计的特性:-依次性:处理机严格按指令依次执行;依次性:处理机严格按指令依次执行;-封闭型:执行过程独占资源;封闭型:执行过程独占资源;-可再现性:程序执行的结果与执行速度无关。可再现性:程序执行的结果与执行速度无关。多个进程依次执行多个进程依次执行进程内全部指令按依次执行进程内全部指令按依次执行2计算机操作系统教程(第计算机操作系统教程(第2版)版)4.1 并发进程4.1.2 并发程序及其特性并发程序及其特性程序的并发性程序的并发性内部并发性:内部并发性:P2:b1,b2,b3;P2:b1,b3,b2外部并发性:情形外部并发性:情形1:a1,b1,b2
3、,a2,a3,b3;情形情形2:b1,b2,a1,b3,a2,a3并发程序的特性(带来好处也引发问题):并发程序的特性(带来好处也引发问题):-交叉性:不同的交叉可能导致不同的结果;交叉性:不同的交叉可能导致不同的结果;-非封闭性:进程的运行环境可被其他进程所变更;非封闭性:进程的运行环境可被其他进程所变更;-不行再现性:不行再现上次运行的结果。不行再现性:不行再现上次运行的结果。指令可以按依次也可以不按依次执行指令可以按依次也可以不按依次执行进程交叉执行进程交叉执行并发特性将引发一系列问题如互斥、死锁、饿死等并发特性将引发一系列问题如互斥、死锁、饿死等3计算机操作系统教程(第计算机操作系统教
4、程(第2版)版)4.1.2 与时间有关的错误与时间有关的错误例:图书借阅系统例:图书借阅系统 (x:某种某种书册数,设当前书册数,设当前x=1.)终端终端1(进程p1):终端终端2(进程p2):do do 等待借书者等待借书者;等待借书者等待借书者;IF(x=1)IF(x=1)x=x-1;x=x-1;借书借书 借书借书 Else 无书无书 Else 无书无书 while(1)while(1)12344计算机操作系统教程(第计算机操作系统教程(第2版)版)4.1.2 与时间有关的错误与时间有关的错误(Cont.)错误缘由之错误缘由之1:进程执行交叉进程执行交叉(进程推动速度不同进程推动速度不同)
5、;错误缘由之错误缘由之2:涉及公共变量涉及公共变量(x)。Remarks:某些交叉导致结果不正确某些交叉导致结果不正确;必需去掉导致不正确结果的交叉。必需去掉导致不正确结果的交叉。5计算机操作系统教程(第计算机操作系统教程(第2版)版)4.2 进程互斥进程互斥(mutual exclusion)进程间发生的一种间接性相互作用。进程间发生的一种间接性相互作用。4.2.1 共享变量与临界区共享变量与临界区4.2.2 临界区域与进程互斥临界区域与进程互斥4.2.3 进程互斥的实现进程互斥的实现4.2.4 多处理机环境下的互斥多处理机环境下的互斥6计算机操作系统教程(第计算机操作系统教程(第2版)版)
6、4.2.1 共享变量与临界区域共享变量与临界区域共享变量(共享变量(shared variable)多个进程都须要访问的变量。多个进程都须要访问的变量。临界区(临界区(critical region)访问共享变量的程序段。访问共享变量的程序段。一组共享变量一组共享变量CR1CR2CRn.程序段1程序段2程序段n7计算机操作系统教程(第计算机操作系统教程(第2版)版)共享变量与临界区表示共享变量与临界区表示共享变量共享变量:shared 临界区域临界区域:region do 语句语句例子:例子:shared x1,x2;shared y1,y2;region x1,x2 do region y1
7、,y2 do 临界区可以嵌套临界区可以嵌套8计算机操作系统教程(第计算机操作系统教程(第2版)版)4.2.2 临界区域与进程互斥临界区域与进程互斥定义:两个或两个以上进程不能同时进入关于同一组共定义:两个或两个以上进程不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,享变量的临界区域,否则可能发生与时间有关的错误,这种现象称为进程互斥。这种现象称为进程互斥。二层涵义:二层涵义:(1)不容很多个进程同时进入关于同一组共享变)不容很多个进程同时进入关于同一组共享变量的相同的临界区域;量的相同的临界区域;(2)不容很多个进程同时进入关于同一组共享变)不容很多个进程同时进入关于同
8、一组共享变量的不同的临界区域。量的不同的临界区域。Remarks:互斥是相对于公共变量而言的。互斥是相对于公共变量而言的。9计算机操作系统教程(第计算机操作系统教程(第2版)版)嵌套临界区域嵌套临界区域 shared x;shared y;region x do region y do .region y do region x do .临界区可以嵌套:临界区可以嵌套:已进入临界区域已进入临界区域可能引发死锁!可能引发死锁!10计算机操作系统教程(第计算机操作系统教程(第2版)版)4.2.3 进程互斥的实现进程互斥的实现FrameworkRepeat critical section rema
9、inder sectionUntil falseentry sectionexit section11计算机操作系统教程(第计算机操作系统教程(第2版)版)4.2.3 进程互斥的实现进程互斥的实现实现临界区管理的三个原则:实现临界区管理的三个原则:正确性原则:正确性原则:随意时刻至多只能有一个进程处于同一组共享变量的临随意时刻至多只能有一个进程处于同一组共享变量的临界区域中;界区域中;公允性原则:公允性原则:一个恳求进入临界区的进程应当在有限等待时间内获得一个恳求进入临界区的进程应当在有限等待时间内获得进入临界区的机会;进入临界区的机会;进展性原则:进展性原则:当临界区空闲时,竞争进入临界区的
10、多个进程在有限的当临界区空闲时,竞争进入临界区的多个进程在有限的时间内确定下一个进入临界区的进程。时间内确定下一个进入临界区的进程。临界区调度原则:临界区调度原则:!临界区空闲,想进入的应能进入;!临界区空闲,想进入的应能进入;!临界区不空闲,进程应等待;!临界区不空闲,进程应等待;!进程离开临界区时,应能唤醒等待进入的进程。!进程离开临界区时,应能唤醒等待进入的进程。12计算机操作系统教程(第计算机操作系统教程(第2版)版)4.2.3.1 进程互斥的软件实现进程互斥的软件实现完全用程序实现,不需特殊硬件指令支持。可用于单CPU和多CPU环境中。有忙式等待问题。Busy waiting“运行运
11、行”或或“就绪就绪”13计算机操作系统教程(第计算机操作系统教程(第2版)版)Lamport面包店算法面包店算法算法思想:设置一个发号者,按算法思想:设置一个发号者,按0,1,2,发号。想进入临发号。想进入临界区的进程抓号,抓到号之后按由小到大的次序依次进入。界区的进程抓号,抓到号之后按由小到大的次序依次进入。Problem:两个进程可能抓到相同的号。两个进程可能抓到相同的号。Why?为保证抓到不同的号,须要互斥机制。为保证抓到不同的号,须要互斥机制。Resolution:若抓到相同的号,按进程编号依次进入。若抓到相同的号,按进程编号依次进入。Definition:(a,b)(c,d)if(a
12、c)or(a=c and bd)14计算机操作系统教程(第计算机操作系统教程(第2版)版)Lamport面包店算法面包店算法int choosing n;表示进程是否在抓号表示进程是否在抓号int number n;记录进程所抓到的号码记录进程所抓到的号码Pi 进入进入:do choosingi=1;numberi=maxnumber0,numbern-1+1;choosingi=0;for(j=0;jn;j+)While(choosingj)skip;While(numberj0)&(numberj,j)(numberi,i)skip;正在抓号正在抓号抓到号码抓到号码抓号完毕抓号完毕比较号码
13、比较号码确定谁进入确定谁进入忙等待忙等待15计算机操作系统教程(第计算机操作系统教程(第2版)版)Lamport面包店算法面包店算法(Cont.)临界区临界区(CS)其余部分其余部分while(1);变量变量choosing的作用:的作用:P1:抓到:抓到1;P2:抓到:抓到1;正确次序:正确次序:P1,P2,P3P3:抓到:抓到2;可能按可能按P2,P3,P1次序进入次序进入!numberi=0;进入临界区进入临界区出临界区,号码清零出临界区,号码清零16计算机操作系统教程(第计算机操作系统教程(第2版)版)Eisenberg/Mcguire算法(令牌法)算法(令牌法)enum flag n
14、;(取值:取值:idle,want_in,in_cs);int turn;(取值:(取值:0.n-1,初始随意)初始随意)0 i turnn-1先于先于i先于先于iflagi=idle:进程进程Pi不想进入临界区不想进入临界区flagi=want_in:进程进程Pi想进入临界区想进入临界区flagi=in_cs:进程进程Pi想进入或已进入临界想进入或已进入临界区区17计算机操作系统教程(第计算机操作系统教程(第2版)版)Eisenberg/Mcguire算法算法Pi进入进入:Do do flagi=want_in;我要进入我要进入 j=turn;取令牌取令牌 While(j!=i)令牌是我的?
15、令牌是我的?If(flagj!=idle)j=turn;不是,有令牌的要进?不是,有令牌的要进?Else j=(j+1)%n;有令牌的不进,看下一个有令牌的不进,看下一个 flagi=in_cs;j=i令牌轮到我,设置标记表示要进令牌轮到我,设置标记表示要进 j=0;While(jvalue-;if(s-valuequeue);asleep(s-queue):(1)执行此操作进程的执行此操作进程的PCB入入s-queue尾(状态改为等待);尾(状态改为等待);(2)转处理机调度程序。转处理机调度程序。原语:一段不行间断执行的程序34计算机操作系统教程(第计算机操作系统教程(第2版)版)V操作原
16、语操作原语V操作原语:操作原语:void V(semaphore*s)s-value+;if(s-valuequeue);wakeup(s-queue)S-queue链头链头PCB出等待队列,进入就绪队列(状态改出等待队列,进入就绪队列(状态改为就绪)。为就绪)。35计算机操作系统教程(第计算机操作系统教程(第2版)版)规定和结论规定和结论对于信号灯变量的规定:对于信号灯变量的规定:必需置一次初值,只能置一次初值,初值必需置一次初值,只能置一次初值,初值=0;只能执行只能执行P操作和操作和V操作,全部其它操作非法。操作,全部其它操作非法。几个有用的结论:几个有用的结论:当当s-value=0时
17、,时,s-queue为空;为空;当当s-valuevalue|为队列为队列s-queue的长度;的长度;当当s-value初初=1时,可以实现进程互斥;时,可以实现进程互斥;当当s-value初初=0时,可以实现进程同步;时,可以实现进程同步;当当s-value初初=正整数,可以用来管理同类资源。正整数,可以用来管理同类资源。36计算机操作系统教程(第计算机操作系统教程(第2版)版)用信号灯实现进程同步用信号灯实现进程同步一般形式一般形式一般形式一般形式:Semaphore s;(initial value 0)Semaphore s;(initial value 0)P(S)后动作后动作先动
18、作先动作 V(S)P1:P2:37计算机操作系统教程(第计算机操作系统教程(第2版)版)用信号灯实现进程同步用信号灯实现进程同步例子:司机例子:司机-售票员问题:售票员问题:semaphore s1,s2;(initial value 0)司机活动:司机活动:售票员活动:售票员活动:Repeat Repeat P(S1)关车门关车门 启动车辆启动车辆 V(S1)正常行驶正常行驶 售售 票票 到站停车到站停车 P(S2)V(S2)开车门开车门 Until false Until false38计算机操作系统教程(第计算机操作系统教程(第2版)版)例例1.生产者生产者/消费者问题消费者问题 0 1
19、 k-1箱子,容量箱子,容量k,缓冲区缓冲区 B:Array0.k-1Of item生产者生产者消费者消费者生产物品生产物品放入放入B中中B中取物品中取物品消费之消费之39计算机操作系统教程(第计算机操作系统教程(第2版)版)环形缓冲区环形缓冲区10K-1in(in+1)%kout(out+1)%k40计算机操作系统教程(第计算机操作系统教程(第2版)版)问题分析问题分析生产者活动生产者活动:消费者活动消费者活动:do do 加工一件物品;加工一件物品;箱中取一物品;箱中取一物品;物品放入箱中;物品放入箱中;消耗这件物品;消耗这件物品;while(1);while(1);资源:资源:箱子(同种
20、组合)箱子(同种组合)资源:资源:物品(同种组合)物品(同种组合)Semaphore S1;semaphore S2;S1.value=k;S2.value=0;放前:放前:P(S1)取前:取前:P(S2)放后:放后:V(S2)取后:取后:V(S1)41计算机操作系统教程(第计算机操作系统教程(第2版)版)同步同步生产者活动生产者活动:消费者活动消费者活动:Repeat Repeat 加工一件物品加工一件物品 P(S2)P(S1)箱中取一物品箱中取一物品 物品放入箱中物品放入箱中 V(S1)V(S2)消耗这件物品消耗这件物品 Until false Until false对对B(缓冲区)和和i
21、n,out(指针)的互斥的互斥:semaphore mutex;(mutex.value=1)42计算机操作系统教程(第计算机操作系统教程(第2版)版)互斥互斥生产者活动:生产者活动:消费者活动:消费者活动:Repeat Repeat 加工一件物品加工一件物品 P(S2)P(S1)P(mutex)P(mutex)箱中取一物品箱中取一物品 物品放入箱中物品放入箱中 V(mutex)V(mutex)V(S1)V(S2)消耗这件物品消耗这件物品 Until false Until false43计算机操作系统教程(第计算机操作系统教程(第2版)版)程序清单程序清单Program producers_
22、consumers;itemType bufferk;semaphore S1=k;semaphore S2=0;int in=0;int out=0;semaphore mutex=1;void producer()while(1)produceItem(&item);P(S1);P(mutex);Bufferin=item;in=(in+1)%k;V(mutex);V(S2)void consumer()itemType temp;while(1)P(s2);P(mutex);temp=bufferout;out=(out+1)%k;V(mutex);V(S1);44计算机操作系统教程(第
23、计算机操作系统教程(第2版)版)程序(续前)程序(续前)Fork(producer,0);fork(producer,m-1);Fork(consumer,0);fork(consumer,n-1);45计算机操作系统教程(第计算机操作系统教程(第2版)版)例例2.读者读者/写者问题写者问题P.T.Courtois 1971Communication of the ACM,Vol.14,667-669.ACM:Association for Computing Machinery解法1:写者可能饿死(允许写者饿死)解法2:写者优先(写者优先于读者)生产者生产者/消费者问题:消费者问题:多个进程
24、协作,各有各的箱子;多个进程协作,各有各的箱子;读者读者/写者问题:写者问题:多个进程协作,共享同一箱子。多个进程协作,共享同一箱子。46计算机操作系统教程(第计算机操作系统教程(第2版)版)例例2.读者读者/写者问题写者问题问题描述:一组公共数据DB R1 Rm W1.Wn要求:(1)R-R可以同时 (2)R-W不行同时 (3)W-W不行同时accessing47计算机操作系统教程(第计算机操作系统教程(第2版)版)正确解法(可能产生写者饥饿)正确解法(可能产生写者饥饿)Int readCount=0;semaphore r_w_w=1;semaphore mutex=1;Reader()w
25、hile(1)P(&mutex);read_count=read_count+1;If(read_count=1)P(&r_w_w);V(&mutex);P(&mutex);read_count=read_count-1;If(read_count=0)V(&r_w_w);V(&mutex);读者加计数,互斥读者加计数,互斥有写者,读者等待于此信号灯有写者,读者等待于此信号灯多个读者不互斥多个读者不互斥读者减计数,互斥读者减计数,互斥若无读者,唤醒等待的写者若无读者,唤醒等待的写者只有一个读者进入计数只有一个读者进入计数其他要进入的读者等待其他要进入的读者等待48计算机操作系统教程(第计算机操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 同步 通信 解析 优秀 PPT
限制150内