專用機器指令(硬件方法)

前提:進程訪問臨界區的一般結構

 

進入區

                                           

 

           臨界區

 

退出區

                                                

 

           剩餘區

解決互斥問題:TS指令和Swap指令

  1. TS(Test and Set)指令

TS的指令的功能是讀出指定標誌後把該標誌設爲turn。

Boolean TS(lock);

Boolean lock;

   {  Boolean temp;

Temp=lock;

Lock=true;

Return temp;

}

 

 

While(TS(LOCK))

 

 
   

 

                                                                            

              臨界區

 

Lock=false

                                                   

 

         剩餘區

爲了實現進程對臨界區的訪問,可爲每個臨界資源設置一個布爾變量lock,表示資源的兩種狀態,true表示正被佔用;fasle表示空閒。在進入區檢查和修改標誌lock;有進程在臨界區時,循環檢查,直到其他進程退出時通過檢查進入臨界區。所有要訪問臨界資源的進程在進入區和退出區的代碼是相同的。

  1. Swap指令

Swap指令的功能是交換兩個字節的內容

Void Swap(a,b);

Boolean a,b;

{    Boolean  trmp;

     Temp=a;

     a=b;

     b=temp;

 

Key=true;

Do{

        Swap(lock,key)

}while(key);

}

 

 

 

 

 

        臨界區

 

Lock=false;

 

 
   

 

        剩餘區

     利用Swap指令實現進程互斥算法,爲每個臨界資源設置一個全局布爾變量lock,初始值爲false;每個進程設置一個局部布爾變量key.在進入區利用Swap指令交換lock和key的內容,然後檢查key的狀態;有進程在臨界區時,循環交換和檢查過程,直到其他進程退出時檢查通過,進入臨界區。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章