pv操作詳細(xì)過程是怎么樣 簡單計算機操作系統(tǒng)PV操作求步驟

我沒在怕的2022-11-08 19:03:261418

PV操作的詳細(xì)過程是怎么樣?求步驟!操作系統(tǒng),PV操作,PV操作的詳細(xì)資料,簡單計算機操作系統(tǒng)PV操作求步驟,在操作系統(tǒng)中,P操作和V操作各自的動作是如何定義的?pv操作是什么意思?

本文導(dǎo)航

PV操作的詳細(xì)過程是怎么樣?

在操作系統(tǒng)理論中有一個非常重要的概念叫做P,V原語。在我們研究進(jìn)程間的互斥的時候經(jīng)常會引入這個概念,將P,V操作方法與加鎖的方法相比較,來解決進(jìn)程間的互斥問題。實際上,他的應(yīng)用范圍很廣,他不但可以解決進(jìn)程管理當(dāng)中的互斥問題,而且我們還可以利用此方法解決進(jìn)程同步與進(jìn)程通信的問題。

[一]P,V原語理論

闡述P,V原語的理論不得不提到的一個人便是赫赫有名的荷蘭科學(xué)家E.W.Dijkstra。如果你對這位科學(xué)家沒有什么印象的話,提起解決圖論中最短路徑問題的Dijkstra算法應(yīng)當(dāng)是我們再熟悉不過的了。P,V原語的概念以及P,V操作當(dāng)中需要使用到的信號量的概念都是由他在1965年提出的。

信號量是最早出現(xiàn)的用來解決進(jìn)程同步與互斥問題的機制,包括一個稱為信號量的變量及對它進(jìn)行的兩個原語操作。信號量為一個整數(shù),我們設(shè)這個信號量為:sem。很顯然,我們規(guī)定在sem大于等于零的時候代表可供并發(fā)進(jìn)程使用的資源實體數(shù),sem小于零的時候,表示正在等待使用臨界區(qū)的進(jìn)程的個數(shù)。根據(jù)這個原則,在給信號量附初值的時候,我們顯然就要設(shè)初值大于零。

p操作和v操作是不可中斷的程序段,稱為原語。P,V原語中P是荷蘭語的Passeren,相當(dāng)于英文的pass, V是荷蘭語的Verhoog,相當(dāng)于英文中的incremnet。

P原語操作的動作是:

(1) sem減1;

(2) 若sem減1后仍大于或等于零,則進(jìn)程繼續(xù)執(zhí)行;

(3) 若sem減1后小于零,則該進(jìn)程被阻塞后進(jìn)入與該信號相對應(yīng)的隊列中,然后轉(zhuǎn)進(jìn)程調(diào)度。

V原語操作的動作是:

(1) sem加1;

(2) 若相加結(jié)果大于零,則進(jìn)程繼續(xù)執(zhí)行;

(3) 若相加結(jié)果小于或等于零,則從該信號的等待隊列中喚醒一等待進(jìn)程,然后再返回原進(jìn)程繼續(xù)執(zhí)行或轉(zhuǎn)進(jìn)程調(diào)度。

需要提醒大家一點就是P,V操作對于每一個進(jìn)程來說,都只能進(jìn)行一次。而且必須成對使用。且在P,V愿語執(zhí)行期間不允許有中斷的發(fā)生。

對于具體的實現(xiàn),方法非常多,可以用硬件實現(xiàn),也可以用軟件實現(xiàn)。我們采用如下的定義:

procedure p(var s:samephore);

{

s.value=s.value-1;

if (s.value<0) asleep(s.queue);

}

procedure v(var s:samephore);

{

s.value=s.value+1;

if (s.value<=0) wakeup(s.queue);

}

其中用到兩個標(biāo)準(zhǔn)過程:

asleep(s.queue);執(zhí)行此操作的進(jìn)程控制塊進(jìn)入s.queue尾部,進(jìn)程變成等待狀態(tài)

wakeup(s.queue);將s.queue頭進(jìn)程喚醒插入就緒隊列

對于這個過程,s.value初值為1時,用來實現(xiàn)進(jìn)程的互斥。

雖軟說信號量機制畢加鎖方法要好得多,但是也不是說它沒有任何的缺陷。由此我們也可以清晰地看到,這種信號量機制必須有公共內(nèi)存,不能用于分布式操作系統(tǒng),這是它最大的弱點。

[二]P,V原語的應(yīng)用

正如我們在文中最開始的時候提到的,P,V原語不但可以解決進(jìn)程管理當(dāng)中的互斥問題,而且我們還可以利用此方法解決進(jìn)程同步與進(jìn)程通信的問題。

(1)用P V原語實現(xiàn)進(jìn)程互斥

把臨界區(qū)置于P(sem) 和V(sem)之間。當(dāng)一個進(jìn)程想要進(jìn)入臨界區(qū)時,它必須先執(zhí)行P原語操作以將信號量sem減1,在進(jìn)程完成對臨界區(qū)的操作后,它必須執(zhí)行V原語操作以釋放它所占用的臨界區(qū)。從而就實現(xiàn)了進(jìn)程的互斥:

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

PA:

P(sem)

<S>;

V(sem)

PB:

P(sem)

<S>;

V(sem)

(2) 用P V原語實現(xiàn)進(jìn)程同步

進(jìn)程同步問題的解決同樣可以采用這種操作來解決,我們假設(shè)兩個進(jìn)程需要同步進(jìn)行,一個進(jìn)程是計算進(jìn)程,另一個進(jìn)程是打印進(jìn)程,那么這個時候兩個進(jìn)程的定義可以表示為:

PC(表示計算進(jìn)程)

A: local buf

repeat

buf=buf

until buf=空

計算

得到計算結(jié)果

buf=計算結(jié)果

goto A

PP:(表示打印進(jìn)程)

B: local pri

repeat

pri=buf

until pri!=空

打印buf中的數(shù)據(jù)

清除buf中的數(shù)據(jù)

goto B

相應(yīng)用P,V原語的實現(xiàn)過程為:

PA: deposit(data)

Begin local x

P(bufempty)

按FIFO方式選擇一個空緩沖區(qū)buf(x)

buf(x)=data

buf(x)置滿標(biāo)記

V(buffull)

end

PB:remove(data)

Begin local x

P(buffull)

按FIFO方式選擇一個裝滿

數(shù)據(jù)的緩沖區(qū)buf(x)

data=buf(x)

buf(x)置空標(biāo)記

V(bufempty)

end

(3)用P V原語實現(xiàn)進(jìn)程通信

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

郵箱通信滿足的條件是:

<1>;發(fā)送進(jìn)程發(fā)送消息的時候,郵箱中至少要有一個空格能存放該消息。

<2>;接收進(jìn)程接收消息時,郵箱中至少要有一個消息存在。

發(fā)送進(jìn)程和接收進(jìn)程我們可以進(jìn)行如下的描述:

Deposit(m)為發(fā)送進(jìn)程,接收進(jìn)程是remove(m). Fromnum為發(fā)送進(jìn)程的私用信號量,信箱空格數(shù)n。mesnum為接收進(jìn)程的私用信號量,初值為0.

Deposit(m):

Begin local x

P(fromnum)

選擇空格x

將消息m放入空格x中

置格x的標(biāo)志為滿

V(mesnum)

end

Remove(m)

Begin local x

P(mesnum)

選擇滿格x

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

置格x標(biāo)志為空

V(fromnum)

end

求步驟!操作系統(tǒng),PV操作

在計算機操作系統(tǒng)中,PV操作是進(jìn)程管理中的難點。

首先應(yīng)弄清PV操作的含義:PV操作由P操作原語和V操作原語組成(原語是不可中斷的過程),對信號量進(jìn)行操作,具體定義如下:

P(S):①將信號量S的值減1,即S=S-1;

②如果S?,則該進(jìn)程繼續(xù)執(zhí)行;否則該進(jìn)程置為等待狀態(tài),排入等待隊列。

V(S):①將信號量S的值加1,即S=S+1;

②如果S>0,則該進(jìn)程繼續(xù)執(zhí)行;否則釋放隊列中第一個等待信號量的進(jìn)程。

PV操作的意義:我們用信號量及PV操作來實現(xiàn)進(jìn)程的同步和互斥。PV操作屬于進(jìn)程的低級通信。

什么是信號量?信號量(semaphore)的數(shù)據(jù)結(jié)構(gòu)為一個值和一個指針,指針指向等待該信號量的下一個進(jìn)程。信號量的值與相應(yīng)資源的使用情況有關(guān)。當(dāng)它的值大于0時,表示當(dāng)前可用資源的數(shù)量;當(dāng)它的值小于0時,其絕對值表示等待使用該資源的進(jìn)程個數(shù)。注意,信號量的值僅能由PV操作來改變。

一般來說,信號量S?時,S表示可用資源的數(shù)量。執(zhí)行一次P操作意味著請求分配一個單位資源,因此S的值減1;當(dāng)S<0時,表示已經(jīng)沒有可用資源,請求者必須等待別的進(jìn)程釋放該類資源,它才能運行下去。而執(zhí)行一個V操作意味著釋放一個單位資源,因此S的值加1;若S?,表示有某些進(jìn)程正在等待該資源,因此要喚醒一個等待狀態(tài)的進(jìn)程,使之運行下去。

PV操作的詳細(xì)資料

THE 是艾恩德霍芬技術(shù)大學(xué)的荷蘭文Tchnische Hoogeschool Eindhov –en的詞 頭縮寫。狄克斯特拉在THE這個系統(tǒng)中所提 出的一系統(tǒng)方法和技術(shù)奠定了計算機現(xiàn)代操作系統(tǒng)的基礎(chǔ),尤其是關(guān)于多層體系結(jié)構(gòu),順序進(jìn)程之間的同步和互斥機制這樣一些重要的思想和概念都是狄克斯特拉在THE中首先提出并為以后的操作系統(tǒng)如UNⅨ等所采用的。為了在單處理機的情況下確定進(jìn)程(process)能否占有處理機,狄克斯特拉將每個進(jìn)程分為“就緒”(ready)、“運行”(running)和“阻塞”(blocking)三個工作 狀態(tài)。由于在任一時刻最多只有一個進(jìn)程可以使用處理機,正占用著處理機的進(jìn)程稱為“運行”進(jìn)程。當(dāng)某進(jìn)程已具備了使用處理機的條 件,而當(dāng)前又沒有處理機供其使用,則使該進(jìn)程處于“就緒”狀態(tài)。當(dāng)運行進(jìn)程由于某種原因無法繼續(xù)運行下去時,就停止其占用處理機,使之進(jìn)入“阻塞”狀態(tài),待造成其退出運行的條件解除,再進(jìn)入“就緒”狀態(tài)。而對系統(tǒng)中所有同時運行的進(jìn)程之間所存在的相互制約的同步(synchronization,指為了避免錯誤,在一個進(jìn)程訪問共享數(shù)據(jù)時,另一個進(jìn)程不訪問該數(shù)據(jù))和互斥(mutually-exclusive,指兩個進(jìn)程不能同時在一個臨界區(qū)中使用同一個可重復(fù)使用的資源,諸如讀寫緩沖區(qū))兩個關(guān)系,狄克斯特拉巧妙地利用火車運行控制系統(tǒng)中的“信號燈”(semaphore,或叫“信號量”)概念加以解決。所謂信號燈,實際上就是用來控制進(jìn)程狀態(tài)的一個代表某一資源的存儲單元。例如,P1和P2是分別將數(shù)據(jù)送入緩沖B和從緩沖B讀出數(shù)據(jù)的兩個進(jìn)程,為了防止這兩個進(jìn)程并發(fā)時產(chǎn)生錯誤,狄克斯特拉設(shè)計了一種同步機制叫“PV操作”,P操作和V操作是執(zhí)行時不被打斷的兩個操作系統(tǒng)原語。執(zhí)行P操作P(S)時信號量S的值減1,若結(jié)果不為負(fù)則P(S)執(zhí)行完畢,否則執(zhí)行P操作的進(jìn)程暫停以等待釋 放。執(zhí)行V操作V(S)時,S的值加1,若結(jié)果不大于0則釋放一個因執(zhí)行P(S)而等待的進(jìn)程。對P1和P2可定義兩 個信號量S1和S2,初 值分別為1和0。進(jìn)程P1在向緩沖B送入數(shù)據(jù)前執(zhí)行P操 作P(S1),在送入數(shù)據(jù)后執(zhí)行V操 作V(S2)。進(jìn)程P2在從緩沖B讀取數(shù) 據(jù)前先執(zhí)行P操作P(S2),在讀出數(shù)據(jù) 后執(zhí)行V操作V(S1)。當(dāng)P 1往緩沖B送入一數(shù)據(jù)后信號量S1之值變?yōu)?,在該數(shù)據(jù)讀出后S1之值才又變?yōu)?,因此在前一數(shù)未讀出前 后一數(shù)不會送入,從而保 證了P1和P2之間的同步。中國讀者常常不明白這一同步機制為什么叫PV操作,原 來這是狄克斯特拉用荷蘭文定義的,因為在荷 蘭文中,通過叫passeren,釋放叫vrijgeven,PV操 作因此得名。這是在計算機術(shù)語中不是用英 語表達(dá)的極少數(shù)的例子之一。

簡單計算機操作系統(tǒng)PV操作求步驟

這個只能夠參考計算機操作系統(tǒng)的關(guān)于 P、V 操作的章節(jié)了。即:P 操作為申請一個系統(tǒng)資源,信號量 sem 減 1;V 操作為釋放一個系統(tǒng)資源,信號量 sem 加 1。

在操作系統(tǒng)中,P操作和V操作各自的動作是如何定義的?

①信號量的值減1,即S=S-1;②如果S≥0,則該進(jìn)程繼續(xù)執(zhí)行;如果S<0,則把該進(jìn)程的狀態(tài)置為阻塞態(tài),把相應(yīng)的PCB連入該信號量隊列的末尾,并放棄處理機,進(jìn)行等待(直至其它進(jìn)程在S上執(zhí)行V操作,把它釋放出來為止)。V操作順序執(zhí)行下述兩個動作:①S值加1,即S=S+1;②如果S>0,則該進(jìn)程繼續(xù)運行;如果S≤0,則釋放信號量隊列上的第一個PCB(即信號量指量指針項所指向的PCB)所對應(yīng)的進(jìn)程(把阻塞態(tài)改為就緒態(tài)),執(zhí)行V操作的進(jìn)程繼續(xù)運行。

1.PV操作的含義:PV操作由P操作原語和V操作原語組成(原語是不可中斷的過程),對信號量進(jìn)行操作,具體定義如下:P(S):①將信號量S的值減1,即S=S-1;②如果S30,則該進(jìn)程繼續(xù)執(zhí)行;否則該進(jìn)程置為等待狀態(tài),排入等待隊列。V(S):①將信號量S的值加1,即S=S+1;②如果S>0,則該進(jìn)程繼續(xù)執(zhí)行;否則釋放隊列中第一個等待信號量的進(jìn)程。2.PV操作的意義:我們用信號量及PV操作來實現(xiàn)進(jìn)程的同步和互斥。PV操作屬于進(jìn)程的低級通信。什么是信號量?信號量(semaphore)的數(shù)據(jù)結(jié)構(gòu)為一個值和一個指針,指針指向等待該信號量的下一個進(jìn)程。信號量的值與相應(yīng)資源的使用情況有關(guān)。當(dāng)它的值大于0時,表示當(dāng)前可用資源的數(shù)量;當(dāng)它的值小于0時,其絕對值表示等待使用該資源的進(jìn)程個數(shù)。注意,信號量的值僅能由PV操作來改變。3, ;一般來說,信號量S30時,S表示可用資源的數(shù)量。執(zhí)行一次P操作意味著請求分配一個單位資源,因此S的值減1;當(dāng)S<0時,表示已經(jīng)沒有可用資源,請求者必須等待別的進(jìn)程釋放該類資源,它才能運行下去。而執(zhí)行一個V操作意味著釋放一個單位資源,因此S的值加1;若S£0,表示有某些進(jìn)程正在等待該資源,因此要喚醒一個等待狀態(tài)的進(jìn)程,使之運行下去。

pv操作是什么意思

PV操作是一種實現(xiàn)進(jìn)程互斥與同步的有效方法。
PV操作是典型的同步機制之一。用一個信號量與一個消息聯(lián)系起來,當(dāng)信號量的值為0時,表示期望的消息尚未產(chǎn)生。當(dāng)信號量的值非0時,表示期望的消息已經(jīng)存在。用PV操作實現(xiàn)進(jìn)程同步時,調(diào)用P操作測試消息是否到達(dá),調(diào)用V操作發(fā)送消息。
用PV操作來管理共享資源時,首先要確保PV操作自身執(zhí)行的正確性。由于P(S)和V(S)都是在同一個信號量S上操作,為了使得它們在執(zhí)行時不發(fā)生因交叉訪問信號量S而可能出現(xiàn)的錯誤,約定P(S)和V(S)必須是兩個不可被中斷的過程,即讓它們在屏蔽中斷下執(zhí)行。把不可被中斷的過程稱為原語。于是,P操作和V操作實際上應(yīng)該是P操作原語和V操作原語。

掃描二維碼推送至手機訪問。

版權(quán)聲明:本文由尚恩教育網(wǎng)發(fā)布,如需轉(zhuǎn)載請注明出處。

本文鏈接:http://www.lmix.com.cn/view/65007.html

標(biāo)簽: 互聯(lián)網(wǎng)

“pv操作詳細(xì)過程是怎么樣 簡單計算機操作系統(tǒng)PV操作求步驟” 的相關(guān)文章

數(shù)字傳媒技術(shù) 數(shù)字傳媒專業(yè)學(xué)校排名

數(shù)字傳媒技術(shù) 數(shù)字傳媒專業(yè)學(xué)校排名

數(shù)字媒體技術(shù)是學(xué)什么的?數(shù)字傳媒專業(yè)具體學(xué)什么?數(shù)字傳媒專業(yè)學(xué)些什么?數(shù)字傳媒技術(shù)學(xué)校怎么樣?數(shù)字媒體技術(shù)專業(yè)就業(yè)方向及前景,數(shù)字媒體技術(shù)專業(yè)就業(yè)怎么樣?它的就業(yè)方向有哪些?本文導(dǎo)航數(shù)字媒體技術(shù)是一門怎樣的學(xué)科數(shù)字與傳媒專業(yè)就業(yè)前景數(shù)字媒體專業(yè)好不好學(xué)數(shù)字傳媒專業(yè)學(xué)校排名數(shù)字媒體技術(shù)專業(yè)5年后就業(yè)前...

河北科技大學(xué)排名 在河北省的所有大學(xué)排名

河北科技大學(xué)排名 在河北省的所有大學(xué)排名

河北的大學(xué)排名,河北省大學(xué)在全國的排名(主要河北科技大學(xué),河北工程大學(xué)和河北科技大學(xué)哪個好,河北科技大學(xué)在河北來說怎么樣?認(rèn)可度如何?北華航天工業(yè)學(xué)院,河北科技大學(xué),華北科技學(xué)院哪一所學(xué)校最好,河北省大學(xué)2021最新排名怎么樣?本文導(dǎo)航在河北省的所有大學(xué)排名河北科技大學(xué)是什么檔次的大學(xué)河北工業(yè)大學(xué)河...

何凱文現(xiàn)在怎么樣了 何凱文努力是最不值得一提的

何凱文現(xiàn)在怎么樣了 何凱文努力是最不值得一提的

文都教育 何凱文 考研英語閱讀同源外刊時文精析——破解考研英語閱讀的深層奧秘、這本書怎么樣?何凱文怎么樣?何凱文老師講的考研英語怎么樣????誰參加了文都???考研培訓(xùn)名師任燕翔開撕何凱文,如何看待此事?考研培訓(xùn)名師任燕翔開撕何凱文,這事因何而起,何凱文長難句怎么樣?本文導(dǎo)航何凱文考研英語語法知識點...

為什么學(xué)公共關(guān)系 公共關(guān)系學(xué)優(yōu)缺點

為什么學(xué)公共關(guān)系 公共關(guān)系學(xué)優(yōu)缺點

為什么學(xué)習(xí)公共關(guān)系課?什么是公共關(guān)系,公共關(guān)系學(xué)有什么用處?學(xué)習(xí)《公共關(guān)系學(xué)》有什么好處?公共關(guān)系學(xué)的現(xiàn)實意義,空乘專業(yè)為什么要開公共關(guān)系學(xué)?論公共關(guān)系學(xué)的重要性。本文導(dǎo)航為什么學(xué)習(xí)公共關(guān)系課公共關(guān)系學(xué)的優(yōu)缺點公共關(guān)系學(xué)讀出來可以做什么公共關(guān)系學(xué)優(yōu)缺點空乘與禮儀屬于什么專業(yè)公共關(guān)系學(xué)的定義為什么學(xué)習(xí)...

郵電研究院有哪些 武漢郵電研究院學(xué)費多少

郵電研究院有哪些 武漢郵電研究院學(xué)費多少

北京郵電大學(xué)有哪些分院,北郵有幾個院?是什么?武漢郵電科學(xué)研究院的發(fā)展概覽,中國目前有哪些郵電大學(xué),排名如何?北郵有幾個院?分別叫什么名字?武漢郵電研究院,就是武漢郵電科學(xué)研究院嗎?也叫烽火國際????本文導(dǎo)航北京郵電大學(xué)本部是哪個北郵為什么不叫985武漢工程大學(xué)郵電信息工程院官網(wǎng)中國最好的二本郵電...

千研萬語賬號怎么注冊 千研萬語論壇怎么注冊

千研萬語論壇,如何下載上外考研論壇上的資料?高分緊急求助:關(guān)于上海外國語大學(xué)的口譯方向的研究生考試咨詢,我注冊了上外的千研萬語考研論壇好幾天都沒有通過審核,這是為什么呢?????上外的千研萬語論壇怎么打不開? 有能打開的朋友嗎,http://forum.shisu.edu.cn/index.php是...

發(fā)表評論

訪客

◎歡迎參與討論,請在這里發(fā)表您的看法和觀點。