Skip to content

Latest commit

 

History

History
56 lines (42 loc) · 1.47 KB

44.md

File metadata and controls

56 lines (42 loc) · 1.47 KB

死锁复习题

原文:https://github.com/angrave/SystemProgramming/wiki/Deadlock-Review-Questions

话题

Coffman 条件资源分配图用餐哲学家

  • DP 解决方案失败
  • 活锁 DP 解决方案
  • 工作 DP 解决方案:优势/缺点

问题

  • 什么是科夫曼条件?
  • 每个科夫曼条件意味着什么? (例如,你能提供每个的定义)
  • 给出一个真实的例子,依次打破每个 Coffman 条件。需要考虑的情况:画家,油漆,油漆刷等。您如何确保工作完成?
  • 能够识别 Dining Philosophers 代码何时导致死锁(或不)。例如,如果您看到以下代码片段不满足 Coffman 条件?
// Get both locks or none.
pthread_mutex_lock( a );
if( pthread_mutex_trylock( b ) ) { /*failed*/
   pthread_mutex_unlock( a );
   ...
}
  • 如果一个线程调用
  pthread_mutex_lock(m1) // success
  pthread_mutex_lock(m2) // blocks

和另一个线程调用

  pthread_mutex_lock(m2) // success
  pthread_mutex_lock(m1) // blocks

会发生什么?为什么?如果第三个线程调用pthread_mutex_lock(m1)会发生什么?

  • 有多少进程被阻止?像往常一样,假设一个进程能够获得下面列出的所有资源,就能够完成。
    • P1 获得 R1
    • P2 获得 R2
    • P1 收购 R3
    • P2 等待 R3
    • P3 收购 R5
    • P1 等待 R4
    • P3 等待 R1
    • P4 等待 R5
    • P5 等待 R1

(画出资源图!)