作業系統 2. 同步與死結 - Ian-Liu-1990/Computer-Arch-OS GitHub Wiki

行程同步

  1. 競爭(Race Condition): 多個Process同時存取共用資源
  2. 避免競爭 : 同一時間只能讓一個行程存取一個資源

臨界區間

  • 定義: 一段不能讓多個Process同時執行的程式碼

死結

I. 死結條件

  1. 互斥(mutual exclusion): 每次只能有一個process可以使用資源,其他Process必申請並等待直到資源被釋放為止

  2. 持有和等待(hold and wait): 存在一個Process持有一個以上的資源並且等待另一個資源是被其他Process所持有

  3. 禁止搶占(no preemption): 一個資源是只能被他所持有的Process工作完成後自願釋放,無法被其他Process所強奪

  4. 循環等待(circular waiting): 一系列Process互相持有其他行程所需要的資源

死結處理方式:

  1. 預防 : (破壞4項死結任一項即可)[消耗一定系統資源, 效能降低]

  2. 避免 : 銀行家演算法(Banker's Algorithm)是一個避免死結(Deadlock)的著名演算法

  3. 偵測 : 定期執行迴圈偵測

活結(Livelock)

  • 定義: 活結則是Process彼此釋放資源又同時占用對方釋放的資源

Program, Process, Thread比較一下