4操作系统进程管理part2.ppt
- 文档编号:1360480
- 上传时间:2022-10-21
- 格式:PPT
- 页数:105
- 大小:518.50KB
4操作系统进程管理part2.ppt
《4操作系统进程管理part2.ppt》由会员分享,可在线阅读,更多相关《4操作系统进程管理part2.ppt(105页珍藏版)》请在冰豆网上搜索。
第四章进程管理,多道程序设计进程线程进程(线程)调度(CPU调度)进程间的同步与互斥进程间的通信管程,五、进程的同步机制,进程的同步与互斥临界区的概念及使用原则信号量及PV操作生产者消费者问题读者写者问题哲学家就餐问题,(同步问题)例子:
谁买面包?
甲5:
00查看冰箱,面包没了5:
05去超市5:
10到达超市5:
15买好面包5:
20回家,把面包放入冰箱5:
255:
30,乙查看冰箱,面包没了去超市到达超市买好面包回家,把面包放入冰箱噢,TooMuch,直接作用和间接作用直接作用:
进程间的相互联系是有意识的安排的,直接作用只发生在相交进程间间接作用:
进程间要通过某种中介发生联系,是无意识安排的,可发生在两个有联系的进程之间,也可发生在无关进程之间,1.进程间的联系,进程的同步(直接作用),进程的同步:
synchronism指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。
具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态,例子,司机P1售票员P2while(true)while(true)启动车辆;关门;正常运行;售票;到站停车;开门;,进程的互斥(间接作用),由于各进程要求共享资源,而有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥临界资源:
criticalresource系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量,【思考题】,例举两个现实生活中需要同步与互斥的例子,临界区(互斥区):
criticalsection,一个程序片段的集合,这些程序片段分散在不同的进程中,对某个共享的数据结构(共享资源)进行操作临界区:
在进程中涉及到临界资源的程序段相关临界区:
多个进程的临界区,a:
=a-1print(a),a:
=a+1print(a),P1,互斥,P2,互斥,Ifa0thena:
=a+1elsea:
=a-1,P3,互斥,进程的互斥(间接作用),使用互斥区的原则,有空让进:
当无进程在互斥区时,任何有权使用互斥区的进程可进入无空等待:
不允许两个以上的进程同时进入互斥区多中择一:
当没有进程在临界区,而同时有多个进程要求进入临界区,只能让其中之一进入临界区,其他进程必须等待有限等待:
任何进入互斥区的要求应在有限的时间内得到满足让权等待:
处于等待状态的进程应放弃占用CPU,以使其他进程有机会得到CPU的使用权,前提:
任何进程无权停止其它进程的运行进程之间相对运行速度无硬性规定进程互斥的解决有两种做法:
由竞争各方平等协商引入进程管理者,由管理者来协调竞争各方对互斥资源的使用具体方法:
硬件软件,使用互斥区的原则(续),谁买面包?
解法1,基本思想留言(锁)取消留言(解锁)如果看到留言,就不买(等待),解法1if(nobread)if(noNote)leaveNote;buybread;removeNote;,谁买面包?
解法2,进程AleavenoteA;If(noNoteB)if(noBread)buybreadremovenoteA,进程BleavenoteB;If(noNoteA)if(noBread)buybreadremovenoteB,谁买面包?
解法3,进程AleavenoteA;while(NoteB)Xdonothing;if(noBread)buybread;removenoteA,进程BleavenoteB;If(noNoteA)Ydonothing;if(noBread)buybreadremovenoteB,软件解法
(1),free:
表示临界区标志true:
有进程在临界区false:
无进程在临界区(初值).while(free);free=true;临界区free=false;,软件解法
(2),turn:
trueP进入临界区falseQ进入临界区.P:
while(notturn);临界区turn=false;Q:
while(turn);临界区turn=true;,软件解法(3),pturn,qturn:
初值为falseP进入临界区的条件:
pturnnotqturnQ进入临界区的条件:
notpturnqturnP.Q.pturn=true;qturn=true;while(qturn);while(pturn);临界区临界区pturn=false;qturn=false;.,软件解法(4):
Dekker算法(1/2),在解法(3)基础上引入turn枚举类型初值任意P:
while(true)pturn=true;while(qturn)if(turn=2)pturn=false;while(turn=2);pturn=true;临界区turn=2;pturn=false;.,软件解法(4)(2/2),Q:
while(true)qturn=true;while(pturn)if(turn=1)qturn=false;while(turn=1);qturn=true;临界区turn=1;qturn=false;.,软件解法(5):
Peterson算法(1/3),enter_region(i);临界区leave_region(i);非临界区,processi,当一个进程想进入临界区时,先调用enter_region函数,判断是否能安全进入,不能则等待;当它从临界区退出后,需调用leave_region函数,允许其它进程进入临界区,注:
参数为进程号,#defineFALSE0#defineTRUE1#defineN2/进程的个数intturn;/轮到谁?
intinterestedN;/兴趣数组,初始值均为FALSEvoidenter_region(intprocess)/process=0或1intother;/另外一个进程的进程号other=1-process;interestedprocess=TRUE;/表明本进程感兴趣turn=process;/设置标志位while(turn=process,软件解法(5):
Peterson算法(2/3),voidleave_region(intprocess)interestedprocess=FALSE;/本进程已离开临界区,Peterson算法解决了互斥访问的问题,而且克服了强制轮流法的缺点,可以完全正常地工作,软件解法(5):
Peterson算法(3/3),软件解法的缺点:
1.忙等待(busywaiting)2.实现过于复杂,需要高的编程技巧硬件解法:
提供专门的硬件指令,允许对一个字的内容进行检测和修正,或交换两个字的内容目的:
解决共享变量的完整性和正确性简单、有效,特别适用于多处理机缺点:
(1)忙等待;
(2)“饥饿”现象,硬件解法
(1)“测试并设置”(TS)指令,booleanTS(boolean*lock)booleanold;old=*lock;*lock=true;TS指令功能描述,whileTS(每个临界资源设置一个lock,初值为false,硬件解法
(2)“交换”指令,voidSWAP(int*a,int*b)inttemp;temp=*a;*a=*b;*b=temp;Swap指令的功能描述,key=true;doSWAP(每个临界资源设置一个lock,初值为false,中断屏蔽方法“开关中断”指令,进入临界区前执行:
执行“关中断”指令离开临界区后执行:
执行“开中断”指令简单,有效较高的代价,限制CPU并发能力(临界区大小)不适用于多处理器,2.进程的同步机制信号量及P.V操作,以上介绍的各种算法都存在问题,它们是平等进程间的一种协商机制,需要一个地位高于进程的管理者来解决公有资源的使用问题操作系统可从进程管理者的角度来处理互斥的问题,信号量就是操作系统提供的管理公有资源的有效手段,进程的同步机制(续),同步机制:
信号量及P、V操作;管程;条件临界域;路径表达式等(用于集中式系统中)会合;通信顺序进程;分布式进程;远程过程调用等(适用于分布式系统中),同步机制应满足的基本要求:
*描述能力*可以实现*效率高*使用方便,进程的同步机制(续),1965年,由荷兰学者Dijkstra提出(所以P、V分别是荷兰语的test(proberen)和increment(verhogen))一种卓有成效的进程同步机制最初提出的是二元信号量(互斥)推广到一般信号量(多值)(同步),信号量及P、V操作,信号量:
semaphore,是一个数据结构定义如下:
strucsemaphoreintvalue;pointer_PCBqueue;信号量说明:
semaphores;,P操作,P(s)s.value=s.value-1;if(s.value0)该进程状态置为等待状态将该进程的PCB插入相应的等待队列末尾s.queue;重新调度,V操作,V(s)s.value=s.value+1;if(s.value=0)唤醒相应等待队列s.queue中等待的一个进程改变其状态为就绪态,并将其插入就绪队列,P、V操作为原语操作原语:
primitiveoratomicaction是完成某种特定功能的一段程序,具有不可分割性或不可中断性即原语的执行必须是连续的,在执行过程中不允许被中断实现:
屏蔽中断,信号量及P、V操作(1/3),信号量的使用:
必须置一次且只能置一次初值初值不能为负数只能执行P、V操作,信号量及P、V操作(2/3),用P、V操作解决进程间互斥问题,经典的生产者消费者问题(1/3),消费者,生产者,经典的生产者消费者问题(2/3),同步问题:
P进程不能往“满”的缓冲区中放产品,设置信号量为S1Q进程不能从“空”的缓冲区中取产品,设置信号量S2,S1初值为1,S2初值为0,P:
Q:
while(true)while(true)生产一个产品;P(s2);P(s1);从缓冲区取产品;送产品到缓冲区;V(s1);V(s2);消费产品;,经典的生产者消费者问题(3/3),多个缓冲区的生产者和消费者,P:
i=0;while(true)生产产品;P(S1);往Bufferi放产品;V(S2);i=(i+1)%n;,Q:
j=0;while(true)P(S2);从Bufferj取产品;V(S1);消费产品;j=(j+1)%n;,有错误?
【思考题】要不要对缓冲区(临界资源)进行互斥操作?
多个缓冲区的生产者和消费者(续),Q1,Q2,:
j=0;while(true)P(S2);P(mutex);从Bufferj取产品;V(mutex);V(S1);消费产品;j=(j+1)%n;,n个缓冲区、m个生产者和k个消费者,P1,P2,:
i=0;while(true)生产产品;P(S1);P(mutex);往Bufferi放产品;V(mutex);V(S2);i=(i+1)%n;,有错误?
若颠倒两个P操作的顺序?
Q1,Q2,:
j=0;while(true)P(S2);P(mutex2);从Bufferj取产品;j=(j+1)%n;V(mutex2);V(S1);消费产品;,n个缓冲区、m个生产者和k个消费者,P1,P2,:
i=0;while(true)生产产品;P(S1);P(mutex1);往Bufferi放产品;i=(i+1)%n;V(mutex1);V(S2);,正确,1)信号量的物理含义:
S0表示有S个资源可用S=0表示无资源可用S0则|S|表示S等待队列中的进程个数P(S):
表示申请一个资源V(S):
表示释放一个资源信号量的初值应该大于等于0,信号量及P、V操作讨论(1/3),2)P.V操作必须成对出现,有一个P操作就一定有一个V操作当为互斥操作时,它们同处于同一进程当为同步操作时,则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 进程 管理 part2
![提示](https://static.bdocx.com/images/bang_tan.gif)