Major Member
|
引用:
作者巧克力酥片
違反了Critical Section三個條件中的mutual exclusion。題目是要求給一個反例指出程式違反了Critical Section三個條件中的那一個條件,不是要你指出程式那行寫錯,何況閣下所打出來的程式滿滿的錯誤。
主程式main執行到parbegin(P(0),P(1));時,,2個processes會平行執行,這時就看誰先取得cpu資源。
假設這時p(1)先取得cpu資源,然後一直執行到while(turn!=id)這行,發現目前turn的值是0,和自己的id不相等,就會執行while中的程式。執行到while(Blocked[1-id]);時,去檢查另一個process是否想進入Critical Section,發現p(0)還沒要進入Critical Section,所以while迴圈裡面的動作不作,要進入Critical Section。正要進去時,cpu的使用權被p(0)搶走,p(0),因為turn的值還是0,沒有作修改,p(0)檢查發現自己有優先權,也不作while裡面的動作,直接進入Critical Section。等到cpu被p(1)搶回來時,就從進入...
|
您好,不好意思請教一下
為什麼p(0),p(1)會平行執行?
single thread的情況下應該會一直block在p(0)中吧?
還請指教囉 
|