- 1、本文档共111页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
湘潭大的学操作系统课件第3章课件定稿
(1)问题描述 有五位哲学家,用一生来思考和吃饭。他们围坐在一张圆桌旁边,桌子中央有一大碗米饭,桌上还有五个碗和五只筷子,他们的生活方式是交替地进行思考和进餐。平时,当某位哲学家进行思考时,他不与其它哲学家交互。当他感觉到饥饿时,便试图拿起与其左右最靠近他的筷子。满足: 一个哲学家每次只能拿起一只筷子,且他不能从其他哲学家手里拿筷子 只有在他拿到两只筷子时才能进餐 3.4.5 经典同步问题 * (2) 用信号量解决哲学家就餐问题 每一只筷子的使用都必须是互斥的,在某一时刻只允许一个哲学家使用 利用一个信号量表示一只筷子,五只筷子的信号量数组定义为semaphore chopstick[5] 3.4.5 经典同步问题 * 信号量解决哲学家就餐问题描述如下: semaphore chopstick[5] = {1,1,1,1,1}; int i; void philosopher (int i){ while(TRUE){ // think wait(chopstick[i]); wait(chopstick[(i+1) % 5]); // eat signal(chopstick[(i+1) % 5]); signal(chopstick[i]); } } void main(){ parbegain (philosopher(0), philosopher(1), philosopher(2), philosopher(3), philosopher(4));} * 可能出现死锁: 当五位哲学家都感到饥饿并都同时拿起了自己左边的筷子,又都伸手去拿右边的筷子的时,会发现右边的筷子都没有了。 一种解决方法是仅当哲学家左、右两边的筷子都能拿时才允许该哲学家拿起筷子就餐; 另一种解决方法是增加一位服务员,他最多只允许四位哲学家同时进入餐厅就餐,这就至少能保证有一位哲学家能同时拿起左、右两根筷子。 3.4.5 经典同步问题 * 补充:AND型信号量 前面我们所介绍的问题针对的是多个并发进程仅共享一个临界资源的情况。在有些应用场合,一个进程往往需要获得两个或两个以上的共享资源后方能继续执行。 AND型同步机制的基本思想:将进程在整个运行过程中所需要的所有资源一次性全部分配给进程,待进程使用完之后再一起释放。只要尚有一个资源未能分配给进程,其它所有可能为之分配的资源也不分配给它。 3.4.5 经典同步问题 * 补充:AND型信号量 这样,对若干个临界资源的分配采取原子操作方式:要么,把它所请求的资源全部分配给进程;要么一个也不分配。 在wait操作中增加了一个“AND”条件,故称为AND同步,或称为同时wait操作。Swait(Simultaneous wait)定义为: 3.4.5 经典同步问题 * Swait(S1,S2,…,Sn) { while(TRUE) { if(Si=1 … Sn=1){ for(i=1; i=n; i++) break; } else{ place the process in the waiting queue associated with the first Si found with Si 1, and set the program count of this process to the beginning of Swait operation } } } * Ssignal(S1,S2,…,Sn) { while(TRUE) { for(i=1; i=n; i++){ Si++; Remove all the process waiting in the queue associated with Si into the ready queue } } } 利用AND信号量机制解决哲学家进餐问题,避免死锁 * semaphore chopstick chopstick[5] = {1,1,1,1,1}; do{ … //think …
您可能关注的文档
- 深井的泵自动控制器.pdf
- 淘金币操作手册2016年7月的22日.doc
- 消防泵和柜培的训资料.doc
- 深入Android的消息机制源码详解~Handler,MessageQueue与Loop的er关系.doc
- 深入浅出的设计模式之命令模式.ppt
- 消防自动报的警系统.ppt
- 深入浅出设计模式之的迭代器模式.ppt
- 深入浅出的设计模式之适配器模式.ppt
- 深入浅出设计模式的之代理模式.ppt
- 深入的浅出设计模式之策略模式.ppt
- Haier海尔413升风冷变频多门冰箱 BCD-413WGHFD1BSJU1(白)说明书用户手册.pdf
- Siemens西门子工业抽屉式断路器主回路后垂直连接 抽屉式断路器主回路后垂直连接使用手册.pdf
- Samsung三星智能佩戴设备 Galaxy Fit3安全手册.pdf
- Samsung三星滚筒洗衣机 AI神 黑钻热泵洗烘旗舰 WD18DB8995BZSC使用手册.pdf
- Sakura樱花消毒柜 保洁柜消毒柜 SCQ-130D6用户手册说明书.pdf
- Hifiman头领科技ARYA UNVEILED说明书用户手册.pdf
- Siemens西门子工业抽屉式主回路连接前置端子 支撑件 抽屉式主回路连接前置端子 支撑件使用手册.pdf
- Siemens西门子工业中性线的外部电流传感器 中性线的外部电流传感器使用手册.pdf
- Siemens西门子工业电子脱扣单元 电子脱扣单元使用手册.pdf
- Razer雷蛇Playstation 专用雷蛇战锤狂鲨极速版 RZ12-038203 用户指南 (简体中文)说明书用户手册.pdf
文档评论(0)