【报班】大三考研
红包
【考研】专业课HOT
26考研
【MBA】管综备考
【申硕】同等学力
【报录比】查询
计划
【真题】历年考试
计划
【大三】全科高分
预备
【在职】双证硕士
26考研
【测评】英语|政治
免费
【AI】智能择校
免费
【.zip】资料下载
精
扫码加入训练营
牢记核心词
学习得礼盒
今天新东方在线考研频道小编为各位考生整理了“2025考研计算机知识梳理:操作系统-哲学家进餐问题”,相关内容。专业、实用的计算机考研复习备考内容,能使大家更有效率的掌握相关知识点,避免盲目学!更多计算机考研复习精彩内容,时刻关注新东方在线考研频道!
2025考研计算机知识梳理:操作系统-哲学家进餐问题
操作系统-哲学家进餐问题
一、哲学家进餐问题
哲学家进餐问题是典型的同步问题。该问题是描述有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五只筷子分别放在哲学家左右,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐。进餐完毕,放下筷子继续思考。
经分析可知,哲学家进餐问题是一个并发控制问题,要求多个进程之间分配多个资源且不会出现死锁或饥饿问题。放在桌子上的筷子是临界资源,在一段时间内只允许一位哲学家使用。为了实现对筷子的互斥使用,可以用一个信号量表示一只筷子,由这五个信号量构成信号量数组。其描述如下:
semaphore chopstick[5]={1, 1, 1, 1, 1}; //信号量初始化
所有信号量均被初始化为1, 第i位哲学家的活动可描述为:
Pi ( ){ //第i位哲学家进程
while(1){
wait(chopstick[i]); //取左手筷子
wait(chopstick[(i+1)%5]); //取右手筷子
…… //进餐
signal(chopstick[i]); //放回左手筷子
signal(chopstick[(i+1)%5]); //放回右手筷子
……} //思考
}
在以上描述中,当哲学家饥饿时,总是先去拿他左边的筷子,执行wait(chopstick[i]);成功后,再去拿他右边的筷子,即执行wait(chopstick[(i+1)%5]);又成功后便可进餐。进餐完毕,又先放下他左边的筷子,然后再放右边的筷子。
虽然,上述解法可保证不会有两个相邻的哲学家同时进餐,但有可能引起死锁。假如五位哲学家同时饥饿而各自拿起左边的筷子时,就会使五个信号量chopstick均为0;当他们再试图去拿右边的筷子时,都将因无筷子可拿而无限期地等待。对于这样的死锁问题,可采取以下几种解决方法:
(1)仅当哲学家的左、右两只筷子均可用时,才允许他进餐。
(2)至多只允许有四位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能够进餐。
(3)规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子,而偶数号哲学家则相反。
仅当哲学家的左、右两只筷子均可用时,才允许他进餐,哲学家进餐问题的算法描述如下:
semaphore chopstick[5]={1, 1, 1, 1, 1};
semaphore mutex=1; //临界区互斥信号量
do {
wait (mutex);
wait(chopstick[i]);
wait(chopstick[(i+1)%5]);
signal (mutex);
…… //eat;
signal(chopstick[i]);
signal(chopstick[(i+1)%5]);
…… //think;
}while(TRUE);
二、相关试题
(2019-43)有n(n≥3)位哲学家围坐在一张圆桌边,每位哲学家交替地就餐和思考。在圆桌中心有m(m≥1)个碗,每两位哲学家之间有1根筷子。每位哲学家必须取到一个碗和两侧的筷子之后,才能就餐,进餐完毕,将碗和筷子放回原位,并继续思考。为使尽可能多的哲学家同时就餐,且防止出现死锁现象,请使用信号量的P、V操作(wait( )、 signal( )操作)描述上述过程中的互斥与同步,并说明所用信号量及初值的含义。
三、参考答案
解析:
semaphore bowl; //用于协调哲学家对碗的使用
semaphore chopsticks[n]; //用于协调哲学家对筷子的使用
for( int i=0; i
chopsticks[i].value=1; //设置两个哲学家之间筷子的数量
bowl.value=min(n-1,m); // bowl.value≤n-1,确保不死锁
CoBegin
while(TRUE) { //哲学家i的程序
思考;
P(bowl); //取碗
P(chopsticks[i]) //取左边镇子
P( chopsticks[(i+1)MOD n]); //取右边筷子
就餐;
V(chopsticks[i]):
V(chopsticks[(i+1)MOD n]);
V(bowl);
}
Coend
以上就是关于“2025考研计算机知识梳理:操作系统-哲学家进餐问题”的内容,更多计算机考研复习精彩内容,请持续关注新东方在线考研频道!
本文关键字: 考研计算机复习指导
资料下载
2014年-2024年考研历年真题汇总
发布时间:2024-04-25扫码添加【考研班主任】
即可领取资料包
考研大纲PDF电子版下载-历年(附解析)
发布时间:2024-04-25扫码添加【考研班主任】
即可领取资料包
2025年考研政数英备考资料zip压缩包
发布时间:2024-04-25扫码添加【考研班主任】
即可领取资料包
考研英语大纲词汇5500打印版(基础必备)
发布时间:2024-04-25扫码添加【考研班主任】
即可领取资料包
新东方在线考试模拟题【12套】
发布时间:2024-04-25扫码添加【考研班主任】
即可领取资料包
2025年考研专业课知识点总结
发布时间:2024-04-25扫码添加【考研班主任】
即可领取资料包
新东方考研资料下载地址
发布时间:2023-05-17新东方在线考研资料合集
下载方式:微信扫码,获取网盘链接
目录:
1.2013-2023年近10年政数英真题及解析PDF版(新东方)
2.2013-2023年专业课考试历年真题及解析PDF版
3.24考研复习备考资料大合集:大纲+备考资料+词汇书+考前押题+自命题
资料介绍:
1.2013-2023年近10年政数英真题及解析PDF版(新东方)
、
2.2013-2023年专业课考试历年真题及解析PDF版
3.24考研复习备考资料大合集
3.24考研复习备考资料:考研大纲
3.24考研复习备考资料:政数英备考资料+自命题真题
------------------
考研备考过程中,尤其是专业课部分,参考往年的考试真题,对于我们的复习有更好的帮助。北京大学考研真题资料都有哪些?小编为大家进行了汇总。
北京大学考研真题资料-公共课
北京大学考研真题资料-专业课
以上就是关于“北京大学考研真题资料下载(历年汇总)”的整理,更多考研资料下载,请关注微信获取下载地址。
2024考研公共课必背知识点汇总
发布时间:2023-01-03扫码添加【考研班主任】
即可领取资料包
2013-2023考研历年真题汇总
发布时间:2023-01-03扫码添加【考研班主任】
即可领取资料包
考研英语大纲词汇(PDF可打印)
发布时间:2023-01-03扫码添加【考研班主任】
即可领取资料包
2024考研专业课知识点总结
发布时间:2023-01-03扫码添加【考研班主任】
即可领取资料包
2023考研政治 内部押题 PDF
发布时间:2022-11-16扫码添加【考研班主任】
即可领取资料包
徐涛:23考研预测六套卷
发布时间:2022-11-16扫码添加【考研班主任】
即可领取资料包
考研政数英冲刺资料最新整理
发布时间:2022-11-16扫码添加【考研班主任】
即可领取资料包
23考研答题卡模板打印版
发布时间:2022-11-16扫码添加【考研班主任】
即可领取资料包
2023考研大纲词汇5500PDF电子版
发布时间:2022-07-28扫码添加【考研班主任】
即可领取资料包
考研历年真题(公共课+专业课)
发布时间:2022-07-28扫码添加【考研班主任】
即可领取资料包
考研英语阅读100篇附解析及答案
发布时间:2022-01-07扫码添加【考研班主任】
即可领取资料包
新东方考研学霸笔记整理(打印版)
发布时间:2022-01-07扫码添加【考研班主任】
即可领取资料包
2001-2021年考研英语真题答案(可打印版)
发布时间:2022-01-07扫码添加【考研班主任】
即可领取资料包
考研英语词汇5500(完整版下载)
发布时间:2022-01-07扫码添加【考研班主任】
即可领取资料包
2022考研政审表模板精选10套
发布时间:2022-01-07扫码添加【考研班主任】
即可领取资料包
历年考研真题及答案 下载
发布时间:2021-12-09扫码添加【考研班主任】
即可领取资料包
考研政审表模板汇总
发布时间:2020-06-17扫码添加【考研班主任】
即可领取资料包
近5年考研英语真题汇总
发布时间:2020-06-17扫码添加【考研班主任】
即可领取资料包
考研英语大纲词汇5500
发布时间:2020-06-17扫码添加【考研班主任】
即可领取资料包
2022考研12大学科专业排名汇总
发布时间:2019-11-21扫码添加【考研班主任】
即可领取资料包
2023考研政治复习备考资料【珍藏版】
发布时间:2019-11-21扫码添加【考研班主任】
即可领取资料包
考研英语万能模板+必备词汇+范文
发布时间:2019-11-21扫码添加【考研班主任】
即可领取资料包
考研数学一、二、三历年真题整理
发布时间:2019-11-21扫码添加【考研班主任】
即可领取资料包
添加班主任领资料
添加考研班主任
免费领取考研历年真题等复习干货资料
推荐阅读
更多>>今天新东方在线考研频道小编为各位考生整理了2025考研计算机知识梳理:调度与死锁,相关内容。专业、实用的计算机考研复习备考内容,能
来源 : 网络 2024-04-26 07:29:00 关键字 : 考研计算机复习指导
今天新东方在线考研频道小编为各位考生整理了2025考研计算机知识梳理:操作系统接口,相关内容。专业、实用的计算机考研复习备考内容,
来源 : 网络 2024-04-26 07:29:00 关键字 : 考研计算机复习指导
今天新东方在线考研频道小编为各位考生整理了2025考研计算机知识梳理:磁盘与文件系统,相关内容。专业、实用的计算机考研复习备考内容
来源 : 网络 2024-04-26 07:29:00 关键字 : 考研计算机复习指导
今天新东方在线考研频道小编为各位考生整理了2025考研计算机知识梳理:复用技术,相关内容。专业、实用的计算机考研复习备考内容,能使
来源 : 网络 2024-04-25 07:28:00 关键字 : 考研计算机复习指导
今天新东方在线考研频道小编为各位考生整理了2025考研计算机知识梳理:引起进程阻塞和唤醒的事件,相关内容。专业、实用的计算机考研复
来源 : 网络 2024-04-25 07:28:00 关键字 : 考研计算机复习指导
资料下载
更多>>扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
新东方在线考研资料合集
下载方式:微信扫码,获取网盘链接
目录:
1.2013-2023年近10年政数英真题及解析PDF版(新东方)
2.2013-2023年专业课考试历年真题及解析PDF版
3.24考研复习备考资料大合集:大纲+备考资料+词汇书+考前押题+自命题
资料介绍:
1.2013-2023年近10年政数英真题及解析PDF版(新东方)
、
2.2013-2023年专业课考试历年真题及解析PDF版
3.24考研复习备考资料大合集
3.24考研复习备考资料:考研大纲
3.24考研复习备考资料:政数英备考资料+自命题真题
------------------
考研备考过程中,尤其是专业课部分,参考往年的考试真题,对于我们的复习有更好的帮助。北京大学考研真题资料都有哪些?小编为大家进行了汇总。
北京大学考研真题资料-公共课
北京大学考研真题资料-专业课
以上就是关于“北京大学考研真题资料下载(历年汇总)”的整理,更多考研资料下载,请关注微信获取下载地址。
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
扫码添加【考研班主任】
即可领取资料包
阅读排行榜
相关内容