对计算机考研操作系统考点还不熟悉的同学们赶紧看过来吧!小编以“哲学家进餐问题”为例,为大家整理了有关2024计算机考研操作系统考点的内容,具体如下:

一、哲学家进餐问题
哲学家进餐问题是典型的同步问题。该问题是描述有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五只筷子分别放在哲学家左右,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐。进餐完毕,放下筷子继续思考。
经分析可知,哲学家进餐问题是一个并发控制问题,要求多个进程之间分配多个资源且不会出现死锁或饥饿问题。放在桌子上的筷子是临界资源,在一段时间内只允许一位哲学家使用。为了实现对筷子的互斥使用,可以用一个信号量表示一只筷子,由这五个信号量构成信号量数组。其描述如下:
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
本文内容整理于网络,仅供参考。
关于2024计算机考研操作系统高频考点“哲学家进餐问题”的内容,小编就给大家简单介绍到这里了。如果还有其他考研考试相关内容想要了解的,就请登录高顿考研频道看看吧。
小编为2024考研的小伙伴们准备了丰富的学习资料,点击下方蓝色图片即可领取哦~
展开全文
版权声明:本条内容自发布之日起,有效期为一个月。凡本网站注明“来源高顿教育”或“来源高顿网校”或“来源高顿”的所有作品,均为本网站合法拥有版权的作品,未经本网站授权,任何媒体、网站、个人不得转载、链接、转帖或以其他方式使用。 经本网站合法授权的,应在授权范围内使用,且使用时必须注明“来源高顿教育”或“来源高顿网校”或“来源高顿”,并不得对作品中出现的“高顿”字样进行删减、替换等。违反上述声明者,本网站将依法追究其法律责任。 本网站的部分资料转载自互联网,均尽力标明作者和出处。本网站转载的目的在于传递更多信息,并不意味着赞同其观点或证实其描述,本网站不对其真实性负责。 如您认为本网站刊载作品涉及版权等问题,请与本网站联系(邮箱fawu@gaodun.com,电话:021-31587497),本网站核实确认后会尽快予以处理。
考研热搜
-
2024计算机考研操作系统高频考点:设备分配与回收 高顿教育 2023-06-06 09:31:47
-
2024计算机考研操作系统高频考点:连续分配管理方式 高顿教育 2023-05-31 16:40:28
-
2024计算机考研操作系统高频考点:虚拟内存 高顿教育 2023-05-31 16:39:49
-
2024计算机考研操作系统高频考点:文件结构 高顿教育 2023-05-31 16:39:36
-
2024计算机考研操作系统高频考点:结构算法 高顿教育 2023-05-31 09:28:13
-
2024计算机考研操作系统高频考点:进程管理 高顿教育 2023-05-31 09:28:13
其他人还搜了
热门推荐
考研
证书星级
距离考研考试仅剩
天
全国硕士研究生统一招生考试,简称“考研”。是指教育主管部门和招生机构为选拔研究生而组织的相关考试的总称,由国家考试主管部门和招生单位组织的初试和复试组成。是一项选拔性考试。思想政治理论、外国语、大学数学等公共科目由全国统一命题,专业课主要由各招生单位自行命题(加入全国统考的学校全国统一命题)。硕士研究生招生方式分为全日制、非全日制、中外合办等。培养模式分为学术型硕士和专业型硕士研究生两种。
加载更多










