訊號量,PV操作

2021-10-05 21:28:30 字數 1767 閱讀 9722

它從整型訊號量->記錄型訊號量,進而發展為「訊號量集」機制

訊號量集,就是訊號量的集合

現在要用的是記錄型訊號量

1,訊號量幹嘛用的?

訊號量:解決程序間同步與互斥問題

2.訊號量的組成

訊號量:分很多種,在此寫記錄型訊號量(record semaphore):

訊號量組成:每個訊號量s除乙個整數值s.value(計數)外,還有乙個程序等待佇列s.l,其中是阻塞在該訊號量的各個程序的標識

訊號量s>=0時,s表示可用資源的數量

當s小於零時,其絕對值則表示正在等待使用臨界區的程序數,

其實就是有多少個程序進行了p操作,結果發現別的程序再用,被加入了等待佇列中。

訊號量,僅僅由pv操作能改變他的值。也有說法是:假定乙個訊號量為乙個訊息。

1.為什麼叫pv操作,?

因為是發明人用荷蘭文定義的,在荷蘭文中,通過叫passeren ,釋放叫vrijgeven 。p表示通過,v表示釋放。

2.什麼是pv操作?

通俗一點,p操作是進廁所然後上鎖,v操作 是出廁所開鎖。s表示可以用的廁所數量。剛開始總有乙個能用

pv操作有p操作原語和v操作原語組成

用pv操作來管理共享資源時,首先要確保pv操作自身執行的正確性。由於p(s)和v(s)都是在同乙個訊號量s上操作,為了使得它們在執行時,不發生因交叉訪問訊號量s而可能出現的錯誤。約定p(s)和v(s)必須是兩個不可被中斷的過程。即讓他們在遮蔽中斷下執行。把不可被中斷的過程稱之為原語。

訊號量初始為1時,p操作訊息到達,,意味著s值》=0

3.pv操作幹了些啥?

p操作的主要動作:

1.s減1; 2若s減1後仍大於或等於0,則程序繼續執行

3.若s減1後小於0,則該程序被阻塞後放入等待該訊號量的等待佇列中,然後轉程序排程

訊號量初始為1時,v操作訊息到達意味著s<0

v操作的主要動作:

1.s加1.

2若相加後結果大於0,則程序繼續執行

3.若相加後結果小於或等於0,則從改該訊號的等待佇列中釋放乙個等待程序,然後再返回源精粹執行或轉程序排程

通俗理解就是在商場上廁所的過程。

p操作:看有沒有廁所,有就去,沒有就等,排隊。

v操作:上完出來,走人,看有沒有人等,有就等的人來。

4.同步與互斥的區別聯絡

同步:則是把非同步環境下的一組併發任務因直接制約而互相傳送訊息,進行互相合作,互相等待,使得各任務按一定的速度執行的過程,具有同步關係的一組併發任務稱為合作任務,合作任務間互相傳送的訊號稱為訊息或事件。

互斥是指兩個或兩個以上任務,不能同時進入關於同一組共享變數的臨界區域,否則可能發生與時間相關的錯誤

同步:是指為了避免錯誤,在乙個程序訪問共享資料時,另乙個程序不訪問改資料,

互斥:是指,兩個程序不能同時在乙個臨界區中,使用同乙個可重複使用的資源。

互斥與同步的區別:互斥是指某一資源同時只允許乙個訪問者對其進行訪問,具有唯一性和排它性,但互斥無法限制訪問者對資源的訪問順序。、

同步:大多數情況是互斥的,但他還規定了某種先後次序來執行,這種先後次序依賴於要完成的特定任務

比如:生產者與消費者模型,必須生產者先執行,將資料放到共享區,消費者後執行,將資料從共享區取出。這就是同步。生產者在寫的時候,消費者只能等,不能同時使用一塊共享資源。這就是互斥。

訊號量同步 P V 操作

訊號是 e.w.dijkstra 在二十世紀六十年代末設計的一種程式設計架構。dijkstra 的模型與鐵路操作有關 假設某段鐵路是單線的,因此一次只允許一列火車通過。訊號將用於同步通過該軌道的火車。火車在進入單一軌道之前必須等待訊號燈變為允許通行的狀態。火車進入軌道後,會改變訊號狀態,防止其他火車...

PV操作和訊號量

乙個程序被分為了 就緒 ready 執行 running 和 阻塞 blocking 三個工作狀態,當前用處理器的哪個程序是 執行 狀態,當前已經具備了使用處理器的條件而等待處理器的程序是處於就緒狀態的程序,當執行的程序由於某種原因無法繼續使用處理器的時候就停止他使用處理器使他進入 阻塞 狀態,當他...

PV操作和訊號量

1 訊號量的型別定義 訊號量 semaphore 的資料結構為乙個值和乙個指標,指標指向等待該訊號量的下乙個程序。訊號量的值與相應資源的使用情況有關。當它的值大於0時,表示當前可用資源的數量 當它的值小於0時,其絕對值表示等待使用該資源的程序個數。注意,訊號量的值僅能由pv操作來改變。一般來說,訊號...