作業系統pv是什麼意思,作業系統PV是什麼意思?

時間 2021-10-14 22:16:41

1樓:匿名使用者

是作業系統裡程序之間通訊用到的兩種操作 具體可以參考下面:

在作業系統理論中有乙個非常重要的概念叫做p,v原語。在我們研究程序間的互斥的時候經常會引入這個概念,將p,v操作方法與加鎖的方法相比較,來解決程序間的互斥問題。實際上,他的應用範圍很廣,他不但可以解決程序管理當中的互斥問題,而且我們還可以利用此方法解決程序同步與程序通訊的問題。

[一]p,v原語理論

闡述p,v原語的理論不得不提到的乙個人便是赫赫有名的荷蘭科學家e.w.dijkstra。

如果你對這位科學家沒有什麼印象的話,提起解決圖論中最短路徑問題的dijkstra演算法應當是我們再熟悉不過的了。p,v原語的概念以及p,v操作當中需要使用到的訊號量的概念都是由他在2023年提出的。

訊號量是最早出現的用來解決程序同步與互斥問題的機制,包括乙個稱為訊號量的變數及對它進行的兩個原語操作。訊號量為乙個整數,我們設這個訊號量為:sem。

很顯然,我們規定在sem大於等於零的時候代表可供併發程序使用的資源實體數,sem小於零的時候,表示正在等待使用臨界區的程序的個數。根據這個原則,在給訊號量附初值的時候,我們顯然就要設初值大於零。

p操作和v操作是不可中斷的程式段,稱為原語。p,v原語中p是荷蘭語的passeren,相當於英文的pass, v是荷蘭語的verhoog,相當於英文中的incremnet。

p原語操作的動作是:

(1) sem減1;

(2) 若sem減1後仍大於或等於零,則程序繼續執行;

(3) 若sem減1後小於零,則該程序被阻塞後進入與該訊號相對應的佇列中,然後轉程序排程。

v原語操作的動作是:

(1) sem加1;

(2) 若相加結果大於零,則程序繼續執行;

(3) 若相加結果小於或等於零,則從該訊號的等待佇列中喚醒一等待程序,然後再返回原程序繼續執行或轉程序排程。

需要提醒大家一點就是p,v操作對於每乙個程序來說,都只能進行一次。而且必須成對使用。且在p,v願語執行期間不允許有中斷的發生。

對於具體的實現,方法非常多,可以用硬體實現,也可以用軟體實現。我們採用如下的定義:

procedure p(var s:samephore);

procedure v(var s:samephore);

其中用到兩個標準過程:

asleep(s.queue);執行此操作的程序控制塊進入s.queue尾部,程序變成等待狀態

wakeup(s.queue);將s.queue頭程序喚醒插入就緒佇列

對於這個過程,s.value初值為1時,用來實現程序的互斥。

雖軟說訊號量機制畢加鎖方法要好得多,但是也不是說它沒有任何的缺陷。由此我們也可以清晰地看到,這種訊號量機制必須有公共記憶體,不能用於分布式作業系統,這是它最大的弱點。

[二]p,v原語的應用

正如我們在文中最開始的時候提到的,p,v原語不但可以解決程序管理當中的互斥問題,而且我們還可以利用此方法解決程序同步與程序通訊的問題。

(1)用p v原語實現程序互斥

把臨界區置於p(sem) 和v(sem)之間。當乙個程序想要進入臨界區時,它必須先執行p原語操作以將訊號量sem減1,在程序完成對臨界區的操作後,它必須執行v原語操作以釋放它所占用的臨界區。從而就實現了程序的互斥:

具體的過程我們可以簡單的描述如下:

pa:p(sem)

;v(sem)

pb:p(sem)

;v(sem)

(2) 用p v原語實現程序同步

程序同步問題的解決同樣可以採用這種操作來解決,我們假設兩個程序需要同步進行,乙個程序是計算程序,另乙個程序是列印程序,那麼這個時候兩個程序的定義可以表示為:

pc(表示計算程序)

a: local buf

repeat

buf=buf

until buf=空

計算得到計算結果

buf=計算結果

goto a

pp:(表示列印程序)

b: local pri

repeat

pri=buf

until pri!=空

列印buf中的資料

清除buf中的資料

goto b

相應用p,v原語的實現過程為:

pa: deposit(data)

begin local x

p(bufempty)

按fifo方式選擇乙個空緩衝區buf(x)

buf(x)=data

buf(x)置滿標記

v(buffull)

endpb:remove(data)

begin local x

p(buffull)

按fifo方式選擇乙個裝滿

資料的緩衝區buf(x)

data=buf(x)

buf(x)置空標記

v(bufempty)

end(3)用p v原語實現程序通訊

我們以郵箱通訊為例說明問題:

郵箱通訊滿足的條件是:

<1>;傳送程序傳送訊息的時候,郵箱中至少要有乙個空格能存放該訊息。

<2>;接收程序接收訊息時,郵箱中至少要有乙個訊息存在。

傳送程序和接收程序我們可以進行如下的描述:

deposit(m)為傳送程序,接收程序是remove(m). fromnum為傳送程序的私用訊號量,信箱空格數n。mesnum為接收程序的私用訊號量,初值為0.

deposit(m):

begin local x

p(fromnum)

選擇空格x

將訊息m放入空格x中

置格x的標誌為滿

v(mesnum)

endremove(m)

begin local x

p(mesnum)

選擇滿格x

把滿格x中的訊息取出放m中

置格x標誌為空

v(fromnum)

end筆者僅從最基本的程序問題上論述p,v原語的應用。當然關於這一部分的應用是十分廣泛的。比如作業系統文化史上非常經典的哲學家就餐問題,生產-消費問題,讀者-寫者問題,理髮師問題等等。

大家不妨嘗試一下用訊號量的方法進行實現。

主要參考書目:

《計算機作業系統教程》清華大學出版社 張堯學

operating systems--design and implementation,prentice hall

2樓:落日_餘暉

(1)作業系統pv意思:pv操作與訊號量的處理相關,p表示通過的意思,v表示釋放的意思。

(2)p操作和v操作是不可中斷的程式段,稱為原語。如果將訊號量看作共享變數,則pv操作為其臨界區,多個程序不能同時執行,一般用硬體方法保證。乙個訊號量只能置一次初值,以後只能對之進行p操作或v操作。

作業系統中「通道」是什麼意思?

3樓:匿名使用者

通道是一種通過執行通道程式管理i/o操作的控制器,它使主機(cpu和記憶體)與i/o操作之間達到更高的並行程度。由於它的任務是管理實現輸入/輸出操

作,提供一種傳送通道,所以將這種部件稱作「通道」。cpu把資料傳輸功能下放給通道,這樣,通道與cpu分時使用記憶體,就可以實現cpu與外設的並行工

作。在採用通道方式的指令系統中,除了供cpu程式設計使用的機器指令系統外,還設定另外供通道專用的一組通道指令,用通道指令編制通道程式,存入儲存器。當

需要進行i/o操作時,cpu只需啟動通道,然後可以繼續執行自身程式,通道則執行通道程式,管理與實現i/o操作。整個系統分為二級管理,一級是cpu

對通道的管理,二級是通道對裝置控制的管理。

通道就是可以通資料的

cpu發出一條通道命令,然後由通道和外設交換資料,之後cpu就做其它的事情,通道和外設交換完資料後再向cpu匯報,cpu再處理

dos是什麼作業系統,DOS是什麼作業系統?

沐陽 是早期個人計算機上的一類作業系統。從1981年ms dos1.0直到1995年ms dos 6.22的15年間,dos作為微軟公司在個人計算機上使用的一個作業系統載體,推出了多個版本。dos在ibm pc 相容機市場中佔有舉足輕重的地位。可以直接操縱管理硬碟的檔案,以dos的形式執行。 一二三...

安裝作業系統,安裝作業系統

普通情況下是無法恢復了,因為你操作的不是刪除資料,而是覆蓋資料,了解硬碟原理的人都知道,覆蓋資料後很難找回原來的資料,而且在你裝系統之前肯定格式化c盤了,這樣想找回資料更是雪上加霜,如果資料真的對你很重要的話,你可以選擇專門的資料恢復公司幫忙,可能要價很高,而且對硬碟是不保證的,也不保證資料一定能找...

印表機與作業系統,印表機作業系統是什麼意思

與作業系統有關,但是裝置管理器中沒有是正常的!不用多慮,要是有問題直接問就好了! 沒事 解除安裝了從新安裝印表機驅動,如果你係統比較新就去網上找找看有支援win7 或是vista的系統的驅動沒 xp 一般都沒事 印表機作業系統是什麼意思 貢齊九平鬆 就是系統預設的印表機,但是不能輸入到外面的,輸入到...