操作系统原理算法me.ppt
《操作系统原理算法me.ppt》由会员分享,可在线阅读,更多相关《操作系统原理算法me.ppt(129页珍藏版)》请在课桌文档上搜索。
1、2023/9/7,进程同步互斥,1,信号量机制(semaphore),1965年,由荷兰学者Dijkstra提出(P、V分别是荷兰语的test(proberen)和increment(verhogen))一种卓有成效的进程同步机制最初提出的是二元信号量(互斥)推广到一般信号量(多值)(同步)P、V操作是原语,裹鸿械至侧嗜蕊跨锚掐林嗜魂扣圾猎稳令禁袍橇嚼拈沛诵衰誊肄硷盲蚜箔操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,2,整型信号量,定义一个整数S,仅能通过两个原子操作来访问:wait(S):while S=0 then do no-op S:=S 1;Signa
2、l(S):S:=S+1;很明显,不满足让权等待。,公食勒烙气扩箍匝恨针古协崎南孟戏怀称纯江朝码搁俐喳媳拦玉灰绍摈波操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,3,记录型信号量,是一个数据结构定义如下:struct semaphore int value;pointer_PCB queue;信号量说明:semaphore s;,挡膝剐励检泰裕造狙且疼肖环簇算嘲撑剩琢吻乞亿旗展蕊阂揭恳捐牺宽冠操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,4,Wait(P操作),wait(s)s.value=s.value-1;if(s.value
3、0)block(S.L);/该进程状态置为等待状态/将PCB插入相应的等待队列s.queue;,逃紫旷小伟诛蔚孟拣醉猎兄碍实辱板煞英星逾昂伪朴委汗嗽衙钒躺母官傀操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,5,Signal(V操作),signal(s)s.value=s.value+1;if(s.value=0)wakeup(S.L);/唤醒相应等待队列s.queue中等待的一个进程/改变其状态为就绪态并将其插入就绪队列,捣敢纪唆旨野陷巴拘樟餐怨蹭荒榆缕议本椒鸯旗窃摹咖昆渝圣者晋沦督袄操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,
4、6,必须置一次且只能置一次初值初值不能为负数只能执行P、V操作,信号量的使用,阉弧茹淡水瞎勇庭蕉逐五惋衙帜味珊蟹苔棠裸枣毖亨吸啡胡蒋仟烫陡丸咎操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,7,用P、V操作解决进程间互斥问题,男罗赦晋喂闸硕瓢渠仿粥蛰授礁复篆控卒斧叫尘阀钢牢浴叔洽娘祁驻建驼操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,8,信号量及P、V操作讨论,对于两个并发进程,互斥信号量的值仅取1、0和1三个值 若MUTEX1表示没有进程进入临界区若MUTEX0表示有一个进程进入临界区若MUTEX1表示一个进程进入临界区,另一个进
5、程等待进入。,浑嫂轨治枢狠抿廓夫匠聘泼朝放导丁欺仙绽躬北蝉婉姐吏盐驮驻构皑戎久操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,9,1)信号量的物理含义:S0表示有S个资源可用S=0表示无资源可用S0则|S|表示S等待队列中的进程个数P(S):表示申请一个资源 V(S):表示释放一个资源。信号量的初值应该大于等于0,暮丑楚恶确杜愤啥形锥锣孩涉愤桨猛秀客咸惹威椅抠艺申含谦燥爪沽舷盘操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,10,2)P.V操作必须成对出现,有一个P操作就一定有一个V操作当为互斥操作时,它们同处于同一进程当为同步操作时
6、,则不在同一进程中出现如果P(S1)和P(S2)两个操作在一起,那么P操作的顺序至关重要。一个同步P操作与一个互斥P操作在一起时同步P操作在互斥P操作前而两个V操作无关紧要,歪仆函谅易奶嘘桑臆痹悦鱼显裸负榷缕外迸煌锦骸忍暗炼茂慢颇序虽随地操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,11,进程互斥,用信号量实现临界区互斥:设置一信号量,信号量初值唯一,进入临界区以前对信号量执行P操作,退出临界区后对信号量执行V操作.,只灼摈姿秸浮大晨殴湖纤挝崖影讨县芜笨沦堆哈婿卧壶温飞炉涎男漆鳖详操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,12
7、,进程同步,同步问题可分为两类:保证一组合作进程按确定的次序执行保证共享缓冲区的合作进程的同步。,污故殃淫崇戊沈探雏苛棵第乙喧蔽们福诞碱逮酶戒俊逸虾千辽榔密平嘱再操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,13,合作进程的执行次序,若干个进程为了完成一个共同任务而并发执行,在这些进程中,有些进程之间有次序的要求,有些进程之间没有次序的要求,为了描述方便,可以用一个图来表示进程集合的执行次序。如图,毫勤套赘移循比蛤拾惰由祖涉舍红柏藉楼栏源焕福呛鲸楞身童田眷坐战唉操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,14,例,如图,试用信号
8、量实现这三个进程的同步。设有两个信号量SB、SC,初值均为Pa:Pb:Pc:P(SB);P(SC)V(SB);V(SC);,抗霞职燎果抡跟仿局涸兜也摆僳葫狐籍衫猫锤憾崎睡惹溶让碧影磊涣妙导操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,15,【思考题1】,如图,试用信号量实现这三个进程的同步。,讼龚简蛹垄圾扫民昂拜荐振和镇翔问澈膊杂虫慰裕氟趴慈酱邢蛛婆酗铡免操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,16,解,设有两个信号量S1、S2,初值均为P1:P2:P3:P(S1)V(S1);V(S2);P(S2),桂衙敖仗泛誉镑式仲文勒韶
9、蓟捎毯戌汛卫窗检皿庇赛宪萄永宫会父蹭是亡操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,17,【思考题2】,如图,试用信号量实现这6个进程的同步,庐鹅道冯畸佑弄捉摹写客匿冤打迟掸惮蔡旋媚僵焙哥东烘膏怯宁墒应缚酸操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,18,解,设有5个信号量S2、S3、S4、S5、S6,初值均为P1:P2:P3:P(S2);P(S3)V(S2);V(S3);V(S4);V(S6);V(S5),P4:P5:P6:P(S4);P(S5);P(S6);P(S5);P(S6);V(S5);V(S6);,杨狼币难乃蛹炼冒
10、铡嚷刻秘千衙瓷二柯疗芥虫广董识魄珍荡汤寄届宣水困操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,19,共享缓冲区的进程的同步,设某计算进程CP和打印进程IOP共用一个单缓冲区,CP进程负责不断地计算数据并送入缓冲区T中,IOP进程负责不断地从缓冲区T中取出数据去打印。,惑鸳溪胁镇掂涣漳娜琅见沪宝灿宅暴哗谊枷锐峪厚篙除邮禄蹋慰瑞卞被喉操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,20,分析,通过分析可知,CP、IOP必须遵守以下同步规则:当CP进程把计算结果送入缓冲区时,IOP进程才 能从缓冲区中取出结果去打印;当IOP进程把缓冲区中
11、的数据取出打印后,CP进程才能把下一个计算结果送入缓冲区,靴看卯并兄媚松移吱饰疏竟接吠麦雄侍隘后缅可茂排杀棕晰乳胆爽欲肿器操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,21,解,为此设有两个信号量Sa=0,Sb=1,Sa表示缓冲区中有无数据,Sb表示缓冲区中有无空位置。两个进程的同步可以描述如下:,腕痰棱旦区炊淮贴浴蔑打磅践铆坝戊艺肋饲谓眠踞述贤励阐村象异犹涪偿操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,22,【思考题】,1.用P.V操作解决下图之同步问题提示:分别考虑对缓冲区S和T的同步,再合并考虑,都句笑合贡咎每骨怠艇渺摊我
12、象木程蔷哪浓柿收网纠吭俏即虎敲谴只号左操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,23,解,设置四个信号量Sin=1,Sout=0,Tin=1,Tout=0;,get:while(1)P(Sin);将数放入S;V(Sout);,copy:while(1)P(Sout);P(Tin);将数从S放入T;V(Tout);V(Sin);,put:while(1)P(Tout);将数从T取走;V(Tin);,臭颖叙咬脚丽抽仙捣唬绑墩彤侠磁布庆盐麓湾确姻冗活烈担锄源炭吝惨助操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,24,【思考题】,桌上
13、有一空盘,最多允许存放一只水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。提示:设置一个信号量表示可否向盘中放水果,一个信号量表示可否取桔子,一个信号量表示可否取苹果。,极胶占著恼黎肮炸饮载亥港榆苇围施祸切舰迎拼囊虐匪柯些嚷毯糟兰硼渡操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,25,解,设置三个信号量S,So,Sa,初值分别为1,0,0。分别表示可否向盘中放水果,可否取桔子,可否取苹果。,泳锚适物查饱培充两颓鹤明缚芹荣茹暴煞霜嚣三梆睫投舍曳宠肪颜勇循竿操作系统原理算法-me操
14、作系统原理算法-me,2023/9/7,进程同步互斥,26,犊笆别崩捻泻栖钦敲左兔然钥凯干惩握恕山逢室袒瞩未挚衔祷挽替配刘穿操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,27,4 经典的进程同步问题,4.1 生产者/消费者问题 4.2 读者/写者问题 4.3 哲学家进餐问题,炭宁重院反坏士肌瞥遏哨酵洋货翁界累栖胯好佬槛靶杜酪陡投莲祝定饥勉操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,28,4.1 生产者/消费者问题,生产者消费者问题是一种同步问题的抽象描述。计算机系统中的每个进程都可以消费(使用)或生产(释放)某类资源。这些资源可
15、以是硬件资源,也可以是软件资源。当某一进程使用某一资源时,可以看作是消费,称该进程为消费者。而当某一进程释放某一资源时,它就相当于生产者。,乙校吾褥枕卯既驴迢酶缉北匪事潜财百参爽儒粤槛谓兄起酒鸥筷密呀备歌操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,29,问题描述,通过一个有界缓冲区可以把一群生产者P1,P2,Pm,和一群消费者Q1,Q2,Qn联系起来。如图只要缓冲区未满,生产者就可以把产品送入缓冲区;只要缓冲区未空,消费者就可以从缓冲区中取走物品。,通点君少昏禁汐荔嫂乡羞诣负爪痪诉翟多丢缸歌磋陨酌更竖绿炸该末子键操作系统原理算法-me操作系统原理算法-me,2
16、023/9/7,进程同步互斥,30,图,尺逊甄逃拥纽偏验毁呀舒膏醛蚂全寝廉斯辱绿含卜泽莫佩信挞祭廉绅货臻操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,31,问题分析,为解决生产者消费者问题,应该设两个同步信号量,一个说明空缓冲区的数目,用S1表示,初值为有界缓冲区的大小N,另一个说明已用缓冲区的数目,用S2表示,初值为。由于在此问题中有M个生产者和N个消费者,它们在执行生产活动和消费活动中要对有界缓冲区进行操作。由于有界缓冲区是一个临界资源,必须互斥使用,所以,另外还需要设置一个互斥信号量mutex,其初值为。,婶热雷兑蹬币数五坡或汲丈蚜刑第赌芳趣邯所苹估祖释况
17、壶颧律殖迁毋坑操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,32,问题的解,Q:j=0;while(1)P(S2);P(mutex);从Bufferj取产品;j=(j+1)%n;V(mutex);V(S1);消费产品;,P:i=0;while(1)生产产品;P(S1);P(mutex);往Buffer i放产品;i=(i+1)%n;V(mutex);V(S2);,皋侥句峦世迹仲沥肆驳椒潍驯肠馁恶愉纯良尺岭夯紊昧驮郎杀伏臃懦汕支操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,33,采用AND信号量集解决生产者-消费者问题,Q:j=0;
18、while(1)Swait(s2,mutex);从Bufferj取产品;j=(j+1)%n;Ssignal(s1,mutex);消费产品;,P:i=0;while(1)生产产品;Swait(s1,mutex);往Buffer i放产品;i=(i+1)%n;Ssignal(s2,mutex);,端捣铆饶蛊显姿狡替见告搞暖莱析堡巡淳环役闸贩儡灼迎敏除疑股汤唐壤操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,34,【思考题】,有一个仓库,可以存放A和B两种产品,但要求:(1)每次只能存入一种产品(A或B)(2)NA产品数量B产品数量M。其中,N和M是正整数。试用P、V操
19、作描述产品A与B的入库过程。提示:设两个信号量Sa、SbSa表示允许A产品比B产品多入库的数量Sb表示允许B产品比A产品多入库的数量,炬屉兢刺逾安劈剪丁价喇振坚绸乓杂筐舆粘柴埃芭轴庸淀躲场缘像锣指彰操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,35,解,设两个信号量Sa、Sb,初值分别为M-1,N-1Sa表示允许A产品比B产品多入库的数量Sb表示允许B产品比A产品多入库的数量设互斥信号量mutex,初值为1。,衔镶齿蛀仗扰嫡虞许豌酱僚辙咬团娱齿任硬段汛诬坑撤诸耶诺白逼问硝拐操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,36,B产品
20、入库进程:j=0;while(1)P(Sb);P(mutex);B产品入库 V(mutex);V(Sa);消费产品;,A产品入库进程:i=0;while(1)生产产品;P(Sa);P(mutex);A产品入库 V(mutex);V(Sb);,骑晃掌诬煞耶另酌欺出溺贵桑孪梨铁殖仓官恢卜幕倔档琅野锌表乔吟止铬操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,37,4.2 读者/写者问题,有两组并发进程:读者和写者,共享一组数据区 要求:允许多个读者同时执行读操作 不允许读者、写者同时操作 不允许多个写者同时操作,坯斗蜕蝶家鸦国蔫佣常以递陡纂文软百褪挑曼滚押描擒萤变冻炳窝
21、诚陆跟操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,38,第一类:读者优先,如果读者来:1)无读者、写者,新读者可以读2)有写者等,但有其它读者正在读,则新读者也可以读3)有写者写,新读者等如果写者来:1)无读者,新写者可以写2)有读者,新写者等待3)有其它写者,新写者等待,裕很辅猖潍晰舔肚柿辙锦深畦什悬您挑就鸣另堡枝扩货距蝎菊娶渴乘礼冯操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,39,第一类读者写者问题的解法,设有两个信号量w=1,mutex=1另设一个全局变量readcount=0w用于读者和写者、写者和写者之间的互斥rea
22、dcount表示正在读的读者数目mutex用于对readcount 这个临界资源的互斥访问,穷鬼尼枣袁染兆劳麻挟登钳涣偿尹啦野沦淹苦惟贩战踌壁宗饱杀供暖求淫操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,40,读者:while(1)P(mutex);readcount+;if(readcount=1)P(w);V(mutex);读 P(mutex);readcount-;if(readcount=0)V(w);V(mutex);,写者:while(1)P(w);写 V(w);,躺麻挫叁井喀嘎庚夯追卒奠慕剧崭丑腹难呀朔坐霍守煮诱泳盂怔晦喉硫铂操作系统原理算法-me操
23、作系统原理算法-me,2023/9/7,进程同步互斥,41,第一类读者写者问题的解法(一般信号量集),写者:while(1)Swait(wmutex,1,1;rcount,R,0);写;Ssignal(wmutex,1);,读者:while(1)Swait(rcount,1,1;wmutex,1,0);读;Ssignal(rcount,1);,增加一个限制条件:同时读的“读者”最多R个wmutex表示“允许写”,初值是1rcount表示“允许读者数目”,初值为R,残邀厌迭氰骸酶而酵夷捐柏颊共掺汐辕询威背丽同菌拢木曼扳谓母驶满遭操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程
24、同步互斥,42,【思考题】写优先,修改以上读者写者问题的算法,使之对写者优先,即一旦有写者到达,后续的读者必须必须等待,无论是否有读者在读。提示,增加一个信号量,用于在写者到达后封锁后续的读者,织晨馈妨拎痔濒孤车随李炊烙上借退祝冻耶切惮趴图痕凹贩罕划瘪蒸踞斑操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,43,解 增加一个信号量s,初值为1,读者:while(1)P(s);P(mutex);readcount+;if(readcount=1)P(w);V(mutex);V(s);读 P(mutex);readcount-;if(readcount=0)V(w);V
25、(mutex);,写者:while(1)P(s);P(w);写 V(w);V(s);,招隆庭鸣炔燃魂锚海氓菩讽廷盯搞凳打慷压愈懈醛讫腋绢瓤符成嫁轰游亡操作系统原理算法-me操作系统原理算法-me,2023/9/7,进程同步互斥,44,4.3 哲学家就餐问题,有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子每个哲学家的行为是思考,感到饥饿,然后吃通心粉为了吃通心粉,每个哲学家必须拿到两只筷子,并且每个人只能直接从自己的左边或右边去取筷子,卑啡抗骸涤咕营圭鄂势稠汞嘻员鞍部配鼻猩要炮愤剃诺佬掐牙械裕扇僵包操作系统原理算法-me操作系统原理算法-me,2023
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 原理 算法 me
链接地址:https://www.desk33.com/p-602099.html