作業系統 程序互斥的軟硬體實現方法

2021-10-05 12:44:47 字數 1508 閱讀 4368

二、程序互斥的硬體軟體實現方法

我們把乙個時間段只允許乙個程序使用的資源稱為臨界資源。例如許多物理裝置(攝像頭,印表機)都屬於臨界資源。此外還有許多變數、資料、記憶體緩衝區等都屬於臨界資源。

對臨界資源的訪問,必須互斥地進行,在每個程序,訪問臨界資源的那段**稱為臨界區

為了保證臨界資源的正確使用,分為四個部分:

程序同步:讓各併發程序按要求有序地推進

併發性帶來了非同步性,有時需要通過程序同步解決這種非同步問題。程序之間需要相互配合完成工作,遵循一定的先後順序

亦稱間接制約關係。當乙個程序進入臨界區使用臨界資源時,另乙個程序必須等待,當占用臨界資源的程序退出臨界區後,另一程序才允許訪問此臨界資源。

為禁止兩個程序同時進入臨界區,同步機制應遵循以下準則: 方法

實現優點

缺點中斷遮蔽

利用「開/關中斷指令」實現

簡單,高效

1.不適用於多處理機的系統2.只適用於核心程序,不適用於使用者程序

tesstandset指令(ts指令、tsl指令)

tsl指令使用硬體實現的,在執行過程中不允許被中斷,只能一氣呵成**片

實現簡單,無需檢查邏輯漏洞,適用於多處理機

不滿足 「讓權等待」

swap指令

同上**片同上

同上

bool tsl(bool *lock)

while(tsl(&lock));

//臨界區**段

lock = false;

//剩餘區**段

swap(bool *a,bool *b)

bool old=true;

while(old==true):

swal(&lock,&old)

//臨界區**

lock=false;

//剩餘區**

方法

思想缺點

單標誌法

兩個程序在訪問完臨界區後,會把使用臨界區的許可權交給另乙個程序。每個程序進入臨界區的許可權只能被另乙個程序賦予。

違背:空閒讓進、讓權等待

雙標誌先檢查法

設定乙個布林型陣列flag,陣列中各元素用來標記程序想進入臨界區的意願,true表示想要進入。每個程序在進入臨界區之前先檢查當前有沒有別的程序想進入臨界區,如果沒有,則把自身的flag設為true,之後開始訪問臨界區。 違背:忙則等待、讓權等待

雙標誌後檢查法

雙標識後檢查法的改進版。前乙個演算法的問題是先檢查後上鎖,但是這兩個操作無法一氣呵成,因此導致了兩個程序可能同時進入臨界區。所以改進為先上鎖後檢查來避免上述問題。

違背:空閒讓進、有限等待、讓權等待

peterson演算法

雙標識後檢查法中,兩個程序都爭著想要進入臨界區,誰也不讓誰,最後都無法進入臨界區。peterson演算法使用了一種主動讓對方先使用臨界區的思想。

違背:讓權等待

作業系統 程序互斥的軟硬體實現方法(四)

目錄 一 程序同步互斥的基本概念 1 臨界資源 2 同步 3 互斥 二 程序互斥的軟體實現方法 圖 1 單標誌法 2 雙標誌先檢查法 3 雙標誌後檢查法 4 peterson演算法 3 程序互斥的硬體實現方法 圖 1 中斷遮蔽方法 2 testandset方法 3 swap指令 我們把乙個時間段只允...

作業系統 程序互斥 硬體方案

原則 程序進入臨界區時關中斷,退出臨界區時開中斷。為什麼要採用關中斷?關中斷是指在此中斷處理完成前,不處理其它中斷,這樣就可以保證程序不被中斷,從而保證了互斥性 不允許兩個以上的共享該資源的併發程序同時進入臨界區稱為互斥 因此採用關中斷。缺點?將禁止一切中斷的權利賦予普通使用者,若使用者沒有開放中斷...

作業系統(二十)程序互斥的硬體實現方法

目錄 2.3.3程序互斥的硬體實現方法 2.3.3.1 中斷遮蔽 2.3.3.2 testandset指令 tsl指令 2.3.3.3 swap指令 在本系列的第五節曾經提到過中斷的概念,並說中斷是作業系統奪回cpu的唯一方式,在這裡中斷遮蔽的想法與原語原子性保證的想法是一致的,即將臨界區放在開中斷...