操作系统第二章作业.pptVIP

  • 0
  • 0
  • 约7.27千字
  • 约 29页
  • 2024-02-25 发布于四川
  • 举报

第二章作业1、用记录型信号量实现不会死锁的哲学家问题。考虑了三种实现的方式(A、B、C):

A.原理:至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他所使用过的两支筷子,从而可使更多的哲学家进餐。以下将S作为信号量,只允许4个哲学家同时就餐,这样就能保证至少有一个哲学家可以就餐,而申请就餐的哲学家进入S的等待队列,根据FIFO的原则,总会轮到就餐,因此不会出现饿死和死锁的现象。semaphorechopstick[5]={1,1,1,1,1};

semaphores=4;

voidphilosopher(inti)

{

while(true)

{

think();

wait(s);//请求就餐

wait(chopstick[i]);//请求左手边的筷子

wait(chopstick[(i+1)%5]);//请求右手边的筷子

eat();

signal(chopstick[(i+1)%5]);//释放右手边的筷子

signal(chopstick[i]);//释放左手边的筷子

signal(s);//就餐完毕,释放信号量

}

}

B.原理:仅当哲学家的左右两支筷子都可用时,才允许他拿起筷子进餐。

方法1:利用AND型信号量机制实现:方法2:利用信号量的保护机制实现。通过信号量mutex对eat()

文档评论(0)

1亿VIP精品文档

相关文档