作業系統 程序同步筆記(一)

2021-10-09 04:41:32 字數 1599 閱讀 5794

程序同步的概念

一、臨界資源

1、entry section;//進入區

2、critical section;//臨界區

3、exit section/;/退出區

4、remainder section/;/剩餘區

二、同步

1、直接制約

2、相互合作

3、緩衝區為空 b被堵塞,a將資料輸入b,b被喚醒

緩衝滿,a被堵塞,b取走緩衝資料,喚醒a程序

三、互斥

1、間接制約方法

2、乙個程序進入,另乙個程序等待

退出了,才能去訪問

3、阻塞態——>就緒態

4、遵循以下準則

空閒讓進

忙則等待

有限等待

讓權等待

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

1.軟體實現

進入區設定並檢查一些標誌表明是否有程序在臨界區

若有,迴圈檢查進行等待,離開後,在退出區修改標誌

演算法一 單標誌法

turn=0,允許p0進入臨界區

兩個程序必須交替進入臨界區

若乙個不在進,則另乙個也無法進

演算法二 雙標誌法先檢查

是否被訪問

有 等待

設定乙個資料flag[i]=false pi未進入臨界區

true 進入臨界區

優點:不用交替進入

缺點:pipj可能同時進入

演算法三 雙標誌之後檢查法

將自己的標誌設定為true,在檢查對方的標誌,

若對方的標誌為true,則程序等待

缺點:發現對方也想要進入,互相謙讓,導致飢餓現象

演算法四:peterson』s algorithm

每個程序在設定自己的標誌後再設定trun標誌

再同時檢查另乙個程序狀態標誌

利用flag解決臨界資源的互斥訪問

利用turn解決「飢餓」現象

2、硬體實現方法

低階方法 原方法

(1)中斷遮蔽方法

禁止一切中斷發生

…關中斷

臨界區開中斷

…限制了交換機的處理能力,效率會下降

(2)硬體指令方法

testandset指令

原子操作,讀出標誌後把標誌設定為真

boolean testandset(boolean *lock)
true正在被占用,初始值為false

在程序訪問臨界資源之前,利用testandset檢查和修改標誌lock

l利用該指令實現程序互斥的演算法·如下

while testandset(&lock);

程序的臨界區**段

lock=false;

程序的其他**

硬體的優點:簡單容易驗證正確性

支援程序內有多個臨界區,只需為每乙個臨界區設立乙個布林值

缺點:不能實現讓權等待,可能導致「飢餓」

作業系統 程序同步

臨界資源 critical resouce 臨界區 critical section 硬體同步機制 訊號量機制 訊號量的應用 管程3使用多道批處理系統不僅能有效的改善資源的利用率,還可以顯著地提高系統的吞吐量,但同時會使系統變得更加複雜,會使程式的執行結果存在不確定性。所以必須引入程序同步機制從而保...

作業系統 程序同步

引入程序 提高了資源的利用率和系統的吞吐量 程序的非同步性 會給系統造成混亂 程序同步基本概念 1,兩種形式的制約關係 a 間接相互制約 ab兩程序爭用一台印表機 b 直接相互制約 a程序放資料 緩衝區 b程序從緩衝區取資料 2,臨界資源 硬體臨界資源 軟體臨界資源 印表機,磁帶機,緩衝區。3,臨界...

作業系統 程序同步

ipc.件 include include include include include include include define bufsz 256 建立或獲取 ipc 的一組函式的原型說明 int get ipc id char proc file,key t key char set s...