作業系統 互斥的定義及實現

2022-01-11 11:34:16 字數 1860 閱讀 5552

所謂程序互斥,指的是對某個系統資源,乙個程序正在使用它,另外乙個想用它的程序就必須等待,而不能同時使用 。

程序互斥是多道程式系統中程序間存在的一種源於資源共享的制約關係,也稱間接制約關係,主要是由被共享資源的使用性質所決定的。

空則讓進:當無程序在互斥區時,任何有權使用互斥區的程序可進入。

忙則等待:不允許兩個以上的程序同時進入互斥區,當已有程序進入臨界區時,其他試圖進入臨界區的程序必須等待。

等則有限:對請求訪問的程序,應該保證能在有限時間內進入臨界區(保證不會飢餓)。

等則讓權:當程序不能進入臨界區時,應立即釋放處理機,避免程序忙等待。

進入區:

1主動爭取

2主動謙讓

3檢查對方是否也想使用,且最後一次是不是自己說了「客氣話」。

王道考研老師舉了乙個這樣的例子:

如果是按照①②③的順序:

香香想要用馬桶,並且表示可以謙讓臭臭,但是臭臭並不想用馬桶,於是香香去使用馬桶了。

如果是按照①⑥②⑦⑧的順序,香香想要使用馬桶,臭臭也想要使用馬桶,香香表示可以先讓臭臭來使用馬桶,臭臭表示可以先讓香香來使用馬桶,但最後一次謙讓的客氣話是臭臭說的,所以臭臭要等待香香先去使用馬桶。

其實對於所有解決程序互斥演算法的分析,都可以採用乙個相同的思路:

先區分出那乙個是進入區,在進入區都做了哪些事情,再把進入區這些操作併發會產生的不同順序依次執行,驗證有可能會導致什麼樣的問題出現。

剛開始lock是false,tsl使得lock變為true,並且返回的old值為false,while迴圈條件不足,跳出迴圈進入臨界區,若這時候又有乙個程序要訪問臨界區,但此時的lock為ture,執行tsl之後old返回ture,while一直迴圈直到上乙個程序訪問完臨界區在退出去進行「解鎖」。

剛開始lock是false,swap使得lock與old交換變為true,old值變為false,while迴圈條件不足,跳出迴圈進入臨界區,若這時候又有乙個程序要訪問臨界區,但此時的lock為ture,執行swap之後old交換為ure,while一直迴圈直到上乙個程序訪問完臨界區在退出去進行「解鎖」。

作業系統原理 作業系統的定義 特徵及功能

1.作業系統的定義 為了達到方便使用者和提高資源利用率的目的設計的,有效控制和管理計算機硬體和軟體資源的,合理的組織計算機工作流程的程式集合。有效 根據使用者的不同要求,在管理計算機資源時考慮到系統執行的效率和資源的利用率。合理 作業系統 公平 對待不同程式,保證系統不發生 死鎖 和 飢餓 現象 2...

作業系統實驗 同步互斥

實習1 程序同步 實習要求 在windows 2000 環境下,建立乙個包含n 個執行緒的控制台程序。用這n 個執行緒來表示n 個讀者或寫者。每個執行緒按相應測試資料檔案的要求,進行讀寫操作。請用訊號量機制分別 實現讀者優先和寫者優先的讀者 寫者問題。讀者 寫者問題的讀寫操作限制 1 寫 寫互斥 2...

作業系統互斥程序問題

假設有n個程序,共享乙個空間 1 當共享區只允許乙個程序占用時候,則訊號量 mutex 的取值範圍 2共享區允許m個程序占用,訊號量取值範圍 1,互斥訊號量初值為 1 變化範圍為 n l 1 當沒有程序進入互斥段時,訊號量值為 1 當有 1 個程序進入互斥段但沒有程序等待進入互斥段時,訊號量值為 0...