什麼是透過停用中斷實現互斥?


當一個程序正在訪問共享變數時,我們就說該程序處於臨界區。如果在同一時間沒有兩個程序處於同一個臨界區,那麼這種技術稱為互斥。

示例

下面顯示了帶有分配優先順序的互斥問題。

讓我們看看互斥的要求,並說明在停用中斷時哪些要求得到了滿足。

當中斷被停用時,它有效地停止了其他程序的排程。當停用中斷時,CPU將無法切換程序,並且程序可以使用共享變數而不會被其他程序訪問。

實現互斥最明顯的方法是在程序進入臨界區之前允許它停用中斷。單處理器指的是隻要不發生上下文切換,操作就是原子的。

基本上有兩種方法可以控制排程程式,如下所示:

  • **內部事件** - 執行緒執行某些操作以釋放 CPU。

  • **外部事件** - 中斷會導致排程程式奪回 CPU。

因此,需要防止內部和外部事件,如下所示:

  • 防止內部事件很容易。

  • 防止外部事件需要停用中斷。

現在讓我們確定與該機制相關的問題,如下所示:

  • 當停用中斷時,CPU將無法切換程序,並且程序可以使用共享變數而不會被其他程序訪問。

  • 系統時鐘依賴於中斷,因此它可能會漂移。

  • 停用中斷在多處理器上效果不佳,因為在所有程序上停用和啟用所需的時間很長。

更新於: 2021年12月1日

4K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告