什麼是透過停用中斷實現互斥?
當一個程序正在訪問共享變數時,我們就說該程序處於臨界區。如果在同一時間沒有兩個程序處於同一個臨界區,那麼這種技術稱為互斥。
示例
下面顯示了帶有分配優先順序的互斥問題。
讓我們看看互斥的要求,並說明在停用中斷時哪些要求得到了滿足。
當中斷被停用時,它有效地停止了其他程序的排程。當停用中斷時,CPU將無法切換程序,並且程序可以使用共享變數而不會被其他程序訪問。
實現互斥最明顯的方法是在程序進入臨界區之前允許它停用中斷。單處理器指的是隻要不發生上下文切換,操作就是原子的。
基本上有兩種方法可以控制排程程式,如下所示:
**內部事件** - 執行緒執行某些操作以釋放 CPU。
**外部事件** - 中斷會導致排程程式奪回 CPU。
因此,需要防止內部和外部事件,如下所示:
防止內部事件很容易。
防止外部事件需要停用中斷。
現在讓我們確定與該機制相關的問題,如下所示:
當停用中斷時,CPU將無法切換程序,並且程序可以使用共享變數而不會被其他程序訪問。
系統時鐘依賴於中斷,因此它可能會漂移。
停用中斷在多處理器上效果不佳,因為在所有程序上停用和啟用所需的時間很長。
廣告