簡單介紹一下訊號量。
訊號量有兩種一種整型型號量,另一種記錄型訊號量。
這個可以用來解決程序互斥,前面提及到的程序互斥沒有實現原則——讓權等待。
讓權等待是這樣子的,比如說我這個程序要執行,然後發現資源不足,那麼就應該主動進入到阻塞態,而不是說等待時間片的執行完畢。
使用者程序可以通過使用作業系統提供的一對原語來對訊號量進行操作,從而實現程序的互斥、程序同步。
訊號量其實是乙個變數,可以是乙個整型也可是是更複雜的記錄值變數,可以用訊號量表示系統中某種資源的數量。
我們在呼叫作業系統的pv操作的時候和呼叫普通函式操作的區別,在於對訊號量只有3種操作,即初始化、p操作、v操作。
整型訊號量
記錄型訊號量
過程:比如說資源為印表機2,然後有下面這幾個程序。
假設一開始是這樣的:
然後1.2程序占用了:
然後p3,p4進來了,資源數量為-2,阻塞隊列為p3和p4,這個時候是p3沒有獲取到資源然後value-1,阻塞加入到阻塞佇列中:
這個時候如果程序1用完了資源然後釋放,然後value變成-1,如果value小於等於0,之後會檢查該資源的阻塞程序中是否有等待,如果有那麼會喚醒p3程序,
然後p3程序開始使用資源。p3用完,然後value變成0,如果value小於等於0,之後會檢查該資源的阻塞程序中是否有等待,然後呼叫p4。這是單核處理機的結果,如果多核結果順序多種,但是機制相同。
作業系統訊號量
本文將針對較為簡單的生產者消費者問題,給出利用訊號量解決問題的方法。生產者 能產生並投放資源的程序 消費者 單純使用 消耗 資源的程序 問題表述 一組 生產者程序和一 組消費者程序 設每組有多個程序 通過緩衝區發生聯絡。生產者程序將生產的產品 資料 訊息等統稱為產品 送入緩衝區,消費者程序從中取出產...
作業系統 訊號量
代表了一類物理資源,是相應的物理資源的抽象,通常為整型或結構體型,除了初始化之外,其他情況下只能使用p v進行操作 執行一次p s 則s.value減一,若執行p s 之後s.value 0,則表示該類資源可用,否則不可用 執行一次v s 則s.value加一,若執行v操作以後,s.value的值仍...
重新整理作業系統概念系類 死鎖
簡單介紹一下死鎖,以及解決死鎖的辦法。死鎖發生的必要條件 1.互斥條件 只有對必須互斥使用的資源的爭奪才會導致死鎖,記憶體 揚聲器是不會導致死鎖的。2.程序所獲取的資源在未使用完成之前,不能其他程序搶奪。3.程序已經保持了至少乙個資源,但又提出新的資源請求,而該資源又被其他程序占有,此時請求程序被阻...