(1)简述判断死锁的必要条件。 (2)一种哲学家就餐问题的解决方案如下所述(对每位哲学家都采用这种算法),分析其 死锁的可能性并提出解决方案。 Philosopher i: d0{wait(chopstick[i]; wait(ch

admin2012-06-21  36

问题 (1)简述判断死锁的必要条件。
  (2)一种哲学家就餐问题的解决方案如下所述(对每位哲学家都采用这种算法),分析其
    死锁的可能性并提出解决方案。
  Philosopher i:
  d0{wait(chopstick
  wait(chopstick[(i+1)%5])
  eat
  signal(chopstick);
  signal(chopstick[(i+1)%5]);
  think
  }while(1);

选项

答案(1)①互斥条件。进程竞争的资源必须互斥使用。 ②请求与保持条件。当前已拥有资源的进程,仍能申请新的资源,而且,当该进程因为新的资源被其他进程占据而被阻塞时,它仍保持自己的资源不放。 ③不可剥夺条件。进程申请的资源,只能在使用完毕时自行释放。 ④循环等待条件。存在一个至少包含两个进程的循环等待链,链中的每个进程都在等待下一个进程所占有的资源。 (2)假设每个哲学家变得饥饿,同时拿起左边筷子,而右边的筷子为空,这样永远拿不到右边的筷子,处于死锁的状态。解决方案:规定在拿到左侧的筷子后,先检查右面的筷子是否可用。如果不可用,则先放下左侧筷子,等一段时间再重复整个过程。

解析
转载请注明原文地址:https://kaotiyun.com/show/N8xi777K
0

最新回复(0)