ImageVerifierCode 换一换
格式:PPT , 页数:9 ,大小:908KB ,
资源ID:342731      下载积分:100 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-342731.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哲学家进餐问题.ppt)为本站会员(ga****84)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

哲学家进餐问题.ppt

1、哲学家进餐问题,林州,周甜,熊元元,张萍,田蝶,陈昊雯,赵建旭,1.问题描述,有五位哲学家,他们的生活方式是交替地进行思考和进餐。哲学家们共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐,进餐毕,放下筷子又继续思考。,从上图可知,筷子是临界资源,用一个信号量来表示一支筷子,可以用记录型信号量来描述,初值均为1:,在以上的描述中,哲学家饥饿时总是拿左边的筷子chopsticki,再去拿右边的筷子chopsticki+1 mod 5,虽然上述解法可以保证不会有两个相邻的哲学家同时进餐,

2、但是会引起死锁,假如五个哲学家同时饥饿而各自拿起左边的筷子时会使五个信号量chopstick均为0,当他们试图去拿右边的筷子时,因无法拿到筷子而无限期等待。对此类的死锁问题可以采用下面的几种解决方法:1、至多只允许四个哲学家同时用餐,以保证至少有一个哲学家能够进餐,最终总会释放他所使用的两支筷子,从而可使更多的哲学家进餐。2、仅当哲学家的左、右筷子均可用时,才允许他拿起筷子进餐。3、规定按奇数号哲学家先拿左边的筷子,然后再拿右边的筷子,偶数相反。,(1) 在什么情况下5 个哲学家全部吃不上饭?,分析:假如所有的哲学家都同时拿起左侧筷子,看到右侧筷子不可用,又都放下左侧筷子,等一会儿,又同时拿起

3、左侧筷子,如此这般,永远重复。对于这种情况,即所有的程序都在无限期地运行,但是都无法取得任何进展,即出现饥饿,所有哲学家都吃不上饭。 void philosopher(int i) /*i:哲学家编号,从0 到4*/ while (TRUE) think( ); /*哲学家正在思考*/ take_fork(i); /*取左侧的筷子*/ take_fork(i+1) % N); /*取左侧筷子;为取模运算*/ eat( ); /*吃饭*/ put_fork(i); /*把左侧筷子放回桌子*/ put_fork(i+1) % N); /*把右侧筷子放回桌子*/ ,(2) 描述一种没有人饿死(永远拿

4、不到筷子)算法。,A.原理: 至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他所使用过的两支筷子,从而可使更多的哲学家进餐。以下将room 作为信号量,只允许4 个哲学家同时进入餐厅就餐,这样就能保证至少有一个哲学家可以就餐,而申请进入餐厅的哲学家进入room 的等待队列,根据FIFO 的原则,总会进入到餐厅就餐,因此不会出现饿死和死锁的现象。伪码:semaphore chopstick5=1,1,1,1,1;semaphore room=4;void philosopher(int i)while(true)think(); wait(room); /请求进入房

5、间进餐 wait(chopsticki); /请求左手边的筷子 wait(chopstick(i+1)%5); /请求右手边的筷子 eat(); signal(chopstick(i+1)%5); /释放右手边的筷子 signal(chopsticki); /释放左手边的筷子 signal(room); /退出房间释放信号量room,B原理: 仅当哲学家的左右两支筷子都可用时,才允许他拿起筷子进餐。 利用AND 型信号量机制实现:根据课程讲述,在一个原语中,将一段代码同时需要的多个临界资源,要么全部分配给它,要么一个都不分配,因此不会出现死锁的情形。当某些资源不够时阻塞调用进程;由于等待队列的

6、存在,使得对资源的请求满足FIFO 的要求,因此不会出现饥饿的情形。 伪码:semaphore chopstick5=1,1,1,1,1;void philosopher(int I)while(true)think(); Swait(chopstick(I+1)%5,chopstickI); eat(); Ssignal(chopstick(I+1)%5,chopstickI);,C 原理: 规定奇数号的哲学家先拿起他左边的筷子,然后再去拿他右边的筷子;而偶数号的哲学家则相反.按此规定,将是1,2号哲学家竞争1号筷子,3,4号哲学家竞争3号筷子.即五个哲学家都竞争奇数号筷子,获得后,再去竞争

7、偶数号筷子,最后总会有一个哲学家能获得两支筷子而进餐。而申请不到的哲学家进入阻塞等待队列,根FIFO原则,则先申请的哲学家会较先可以吃饭,因此不会出现饿死的哲学家。伪码:semaphore chopstick5=1,1,1,1,1;void philosopher(int i)while(true)think(); if(i%2 = 0) /偶数哲学家,先右后左。wait (chopstick i + 1 mod 5) ; wait (chopstick i) ; eat(); signal (chopstick i + 1 mod 5) ; signal (chopstick i) ;Else /奇数哲学家,先左后右。wait (chopstick i) ; wait (chopstick i + 1 mod 5) ; eat(); signal (chopstick i) ; signal (chopstick i + 1 mod 5) ;,thank you!,林州,周甜,熊元元,张萍,田蝶,陈昊雯,赵建旭,

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。