在作業系統中,程序之間經常會存在互斥(都需要共享獨占性資源)和同步(完成非同步的兩個程序的協作)。
(1)訊號量:是一種特殊的變數,表現形式是乙個整形s和乙個佇列。
(2)p操作:s=s-1,若s<0,程序暫停執行,進入等待佇列。
(3)v操作:s=s+1,若s<=0,喚醒等待佇列中的乙個程序。
p(訊號量)
臨界區v(訊號量)
由於只允許乙個程序進入,因此訊號量s的初值為1。
最簡單的同步形式是程序a在另乙個程序b到達l2以前,不應前進到超過點l1
程序al1:p(訊號量)
程序bl2:v(訊號量)
因此,要確保程序b執行v操作之前,不讓程序a的執行超過l1,,就要設定訊號量s的初值為0。
它不僅要解決生產者與消費者程序的同步關係,還要處理緩衝區的互斥關係,因此通常需要三個訊號量來實現。
empty:同步,因為程式開始時,緩衝區全部是空,所以,其初始值為緩衝區的總個數。
full:同步,其初始值為0
mutext:互斥,保證同時只有乙個程序在寫緩衝區,因此,其初始值應為1.
訊號量與PV操作
1 訊號量 訊號量 semaphore 的資料結構為乙個值和乙個指標,指標指向等待該訊號量的下乙個程序。訊號量的值與相應資源的使用情況有關。當它的值大於0時,表示當前可用資源的數量 當它的值小於0時,其絕對值表示等待使用該資源的程序個數。注意,訊號量的值僅能由pv操作來改變。訊號量s表示了作業系統中...
訊號量與PV操作
解決程序同步與互斥問題的機制。一種特殊變數,表現形式是乙個整數semaphore和乙個佇列。s 0時,s表示可用資源的數量。s 0時,已經沒有可用資源,s的絕對值表示當前等待該資源的程序數。s s 1 使用資源,此時如果s 0,則掛起該程序。s s 1 釋放資源,此時如果s 0,從阻塞佇列裡喚醒乙個...
訊號量,PV操作
它從整型訊號量 記錄型訊號量,進而發展為 訊號量集 機制 訊號量集,就是訊號量的集合 現在要用的是記錄型訊號量 1,訊號量幹嘛用的?訊號量 解決程序間同步與互斥問題 2.訊號量的組成 訊號量 分很多種,在此寫記錄型訊號量 record semaphore 訊號量組成 每個訊號量s除乙個整數值s.va...