双桶洗衣机维修视频教程:哲学家问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/06 06:03:21
问题描述:
一个房间内有五位哲学家,他们的生活就是思考和进食.房间里有一张圆桌,中间放着一盘通心
粉(假定通心粉无限多),桌子周围放有五把椅子,分别属于五位哲学家.每两位哲学家之间有一把叉子,哲学家进食时必须同时
使用左右两把叉子.
解答:
进程:philosopher----哲学家
共有的数据结构与过程:
ph:array[0.4]of semaphore;
每个哲学家 有一个信号量,初值为0.
mutex:semaphore;
---mutex保护临界区,初值=1.
procedure test(i:0:4);
{
if((state{i}=hungry)and(state{(i+1)mod5}<>eating)and(ststr{(i-1)mod 5}<>eating))
{
state{i}=eating;
V(ph[i]);
}
}
philosopher(i:0..4):
{
while(true)
{
thik();
p(mutex);
state[i]=hungry;
stet(i);
et( );
p(mutex);
state[i]=think;
test((i-1)mod5);
test((i+1)mod5);
v(mutex);
}
}
敢问那位天才知道不防给我个完整的答案日后必会重赏
那个可以给我解解释它是什么意思

你要什么答案呢,这个是操作系统中用P/V原语实现进程互斥的一个例子。

迷茫!!

看不懂...