同步與鎖定

應用程式的multi-thread是獨立成thread的函式可以並列執行,如果同時有好幾個thread讀寫同一塊記憶體的話就有可能發生問題,因此需要鎖定機制。multi-thread需要保護關鍵區域(critical section),也就是說必須能夠把無法同時並列的部分隔離開來,一次只能讓一個thread執行才能避免這些問題。

關鍵區域(critical section)

Critical Section是一程式區段, 而這個程式區段必須擁有某共用資源的權限才能執。系統不保證進入Critical Section thread 的順序,但OS保證公平對待所有要進入的thread。 若要控制critical section執行之機制必須滿足下列三個要求:

(1)Mutual exclusion:不允許兩個以上的process同時在對應的critical section中執行。(確定獨佔權(mutex))

(2)Progress:若沒有process在對應的critical section中執行,則控制的機制不能阻擋請求進入critical section之process進入critical section。(避免死結(deadlock))

(3)Bounded waiting:控制機制必須使等待進入critical section之process在有限時間內進入critical section。(避免挨餓(starvation))。

results matching ""

    No results matching ""