14臨界區互斥的硬體實現方法

2021-10-14 16:31:44 字數 1078 閱讀 8938

1、臨界區互斥的硬體實現方法:提供了特殊的硬體指令,允許對乙個字中的內容進行檢測和修正,或者是對兩個字的內容進行交換等。

2、中斷遮蔽方法

當乙個程序正在使用處理機執行它的臨界區**時,要防止其他程序再進入其臨界區訪問的最簡單方法是禁止一切中斷的發生。典型模式為

……關中斷;

臨界區;

開中斷;

……這種方法限制了處理機交替執行程式的能力,因此執行的效率將會明顯降低。

3、硬體指令

testandset指令

這條指令是原子操作,即執行該**時不允許被中斷,其功能是讀出指定標誌後把該標誌設定為真。指令的功能描述如下:

boolean testandset(boolean *lock)

可以為每個臨界區資源設定乙個共享布林遍歷lock,表示資源的兩種狀態:true表示正被占用,初始值為false。在程序訪問臨界資源之前,利用testandset檢查和修改標誌lock;若有程序在臨界區,則重複檢查,直到程序退出。利用該指令實現程序互斥的演算法描述如下:

while testandset(&lock);

程序的臨界區**段;

lock=false;

程序的其他**;

swap指令:該指令的功能是交換兩個字的內容。其功能描述如下。

swap(boolean *a,boolean *b)

以上對testandset和swap指令的描述僅僅是功能實現,並非軟體實現定義,事實上它們是由硬體邏輯直接實現的,不會被中斷。

應為每個臨界資源設定了乙個共享布林變數lock,初始值為false;在每個程序中再設定乙個區域性布林變數key,用於與lock交換資訊。在進入臨界區之前先利用swap指令交換lock與key的內容,然後檢查key的狀態;有程序在臨界區時,重複交換和檢查過程,直到程序退出。利用swap指令實現程序互斥的演算法如下:

key=true;

while(key!=false)

swap(&lock,&key);

程序的臨界區**段;

lock=false;

程序的其他**;

硬體方法的優點:適用於任意數目的程序,不管是單處理機還是多處理機;簡單、容易驗證其正確性。

臨界區的硬體互斥方案

臨界區互斥的硬體解決 基本硬體機制包括禁止中斷 test and set指令 swap指令。1 禁止中斷 這是最簡單的方法,程序一旦進入臨界區就禁止一切中斷,在離開臨界區前放開中斷,但是該方案有如下致命的弱點 將禁止一切中斷的權利賦予普通使用者,若使用者沒有開放中斷,系統的正常執行將受到影響。不適合...

臨界區的硬體互斥方案

臨界區互斥的硬體解決 基本硬體機制包括禁止中斷 test and set指令 swap指令。1 禁止中斷 這是最簡單的方法,程序一旦進入臨界區就禁止一切中斷,在離開臨界區前放開中斷,但是該方案有如下致命的弱點 將禁止一切中斷的權利賦予普通使用者,若使用者沒有開放中斷,系統的正常執行將受到影響。不適合...

實現臨界區互斥的基本方法

設定乙個公用變數turn,若turn 0,則允許p 0p 0 p0 程序進入臨界區,若turn 1,則允許p 1p 1 p1 程序進入臨界區。缺點 兩個程序必須交替進入臨界區,違背空閒讓進。在每個程序訪問臨界資源之前,先檢查臨界資源是否被訪問,若正在被訪問,則程序需要等待,否則程序進入自己的臨界區並...