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

2021-09-12 14:18:47 字數 2331 閱讀 1509

目錄

一、程序同步互斥的基本概念

1、臨界資源

2、同步

3、互斥

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

1、單標誌法

2、雙標誌先檢查法

3、雙標誌後檢查法

4、peterson演算法

3 、程序互斥的硬體實現方法 --圖

1、中斷遮蔽方法

2、 testandset方法

3 、swap指令

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

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

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

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

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

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

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

演算法思想:兩個程序在訪問完臨界區後會把使用臨界區的許可權交給另乙個程序。也就是說每個程序進入臨界區的許可權只能被另乙個程序賦予

該演算法可以確保每次只允許乙個程序進入臨界區。但兩個程序必須交替進入臨界區,如果某個程序不再進入臨界區,那麼另個程序也將無法進入臨界區(就違背了"空閒讓進"原則)造成資源浪費

演算法思想:在乙個程序訪問臨界區資源之前,先檢視以下臨界區資源是否被訪問,若被訪問,該程序需等待;否則把自身對應的標誌flag[i]設為true,才可以訪問臨界區。為此設定乙個boolean型別的陣列flag[i],如果i為false,表示pi程序未進入臨界區,值未true,表示pi程序進入臨界區

演算法思想:因為前乙個演算法,先檢查,後上鎖,兩個操作無法一氣呵成,導致了兩個程序同時進入臨界區的問題。因此人們又想到先上鎖,後檢查的方法。

當兩個程序集合同時想進入臨界區時,它們都把自己的標誌flag設hi為true,並且檢測到對方的狀態(while語句),發現對方也想進入臨界區,於是互相謙讓,結果都進不了臨界區,從而導致「飢餓」現象。

演算法思想:雙標誌後檢查法中,兩個程序都爭著想進入臨界區,但是誰也不讓誰,最後誰都無法進入臨界區。gray l.peterson 想到了一種方法,如果對方都爭著想進入臨界區,那可以讓程序嘗試 「孔融讓梨」,主動讓對方先使用臨界區

利用 「開/關中斷指令」 實現(與原語的實現思想相同,即在某程序開始訪問臨界區到結束訪問為止都不允許中斷,也就不能發生程序的切換,因此也不可能發生兩個程序同時訪問臨界區的情況)

硬體方法優點:無論單處理機還是多處理機都適用;簡單,容易驗證其正確性

缺點:違背了 「讓權等待」,會產生 「飢餓」 現象

無論硬體還是軟體實現方法,只需理解執行過程,關鍵是軟體實現方法

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

二 程序互斥的硬體軟體實現方法 我們把乙個時間段只允許乙個程序使用的資源稱為臨界資源。例如許多物理裝置 攝像頭,印表機 都屬於臨界資源。此外還有許多變數 資料 記憶體緩衝區等都屬於臨界資源。對臨界資源的訪問,必須互斥地進行,在每個程序,訪問臨界資源的那段 稱為臨界區 為了保證臨界資源的正確使用,分為...

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

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

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

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