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

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

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

本文導(dǎo)航

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

在操作系統(tǒng)理論中有一個非常重要的概念叫做P,V原語。在我們研究進(jìn)程間的互斥的時候經(jīng)常會引入這個概念,將P,V操作方法與加鎖的方法相比較,來解決進(jìn)程間的互斥問題。實(shí)際上,他的應(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ī)制,包括一個稱為信號量的變量及對它進(jìn)行的兩個原語操作。信號量為一個整數(shù),我們設(shè)這個信號量為:sem。很顯然,我們規(guī)定在sem大于等于零的時候代表可供并發(fā)進(jìn)程使用的資源實(shí)體數(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)的隊(duì)列中,然后轉(zhuǎn)進(jìn)程調(diào)度。

V原語操作的動作是:

(1) sem加1;

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

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

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

對于具體的實(shí)現(xiàn),方法非常多,可以用硬件實(shí)現(xiàn),也可以用軟件實(shí)現(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)程喚醒插入就緒隊(duì)列

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

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

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

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

(1)用P V原語實(shí)現(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ū)。從而就實(shí)現(xiàn)了進(jìn)程的互斥:

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

PA:

P(sem)

<S>;

V(sem)

PB:

P(sem)

<S>;

V(sem)

(2) 用P V原語實(shí)現(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原語的實(shí)現(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原語實(shí)現(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操作

在計算機(jī)操作系統(tǒng)中,PV操作是進(jìn)程管理中的難點(diǎ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),排入等待隊(duì)列。

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

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

PV操作的意義:我們用信號量及PV操作來實(shí)現(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)程釋放該類資源,它才能運(yùn)行下去。而執(zhí)行一個V操作意味著釋放一個單位資源,因此S的值加1;若S?,表示有某些進(jìn)程正在等待該資源,因此要喚醒一個等待狀態(tài)的進(jìn)程,使之運(yùn)行下去。

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

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

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

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

1.PV操作的含義:PV操作由P操作原語和V操作原語組成(原語是不可中斷的過程),對信號量進(jìn)行操作,具體定義如下:P(S):①將信號量S的值減1,即S=S-1;②如果S30,則該進(jìn)程繼續(xù)執(zhí)行;否則該進(jìn)程置為等待狀態(tài),排入等待隊(duì)列。V(S):①將信號量S的值加1,即S=S+1;②如果S>0,則該進(jìn)程繼續(xù)執(zhí)行;否則釋放隊(duì)列中第一個等待信號量的進(jìn)程。2.PV操作的意義:我們用信號量及PV操作來實(shí)現(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)程釋放該類資源,它才能運(yùn)行下去。而執(zhí)行一個V操作意味著釋放一個單位資源,因此S的值加1;若S£0,表示有某些進(jìn)程正在等待該資源,因此要喚醒一個等待狀態(tài)的進(jìn)程,使之運(yùn)行下去。

pv操作是什么意思

PV操作是一種實(shí)現(xiàn)進(jìn)程互斥與同步的有效方法。
PV操作是典型的同步機(jī)制之一。用一個信號量與一個消息聯(lián)系起來,當(dāng)信號量的值為0時,表示期望的消息尚未產(chǎn)生。當(dāng)信號量的值非0時,表示期望的消息已經(jīng)存在。用PV操作實(shí)現(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操作實(shí)際上應(yīng)該是P操作原語和V操作原語。

掃描二維碼推送至手機(jī)訪問。

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

本文鏈接:http://52reasonswhy.com/view/65007.html

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

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

碧水浩浩云茫茫 碧海映朝霞下一句是什么

碧水浩浩云茫茫,美人不來空斷腸,什么意思?碧水浩浩云茫茫下一句是什么?碧水浩浩云茫茫 下句是什么?碧水浩浩云茫茫的下一句,李白贊美春天的詩,碧水浩浩云茫茫,美人不來空斷腸,什么意思?本文導(dǎo)航寒潭秋月心如洗什么意思碧水蕩清波下一句碧海映朝霞下一句是什么云茫茫的下一句是什么李白關(guān)于春天的唐詩雪浪搖空千頃...

應(yīng)用統(tǒng)計專業(yè) 統(tǒng)計學(xué)和應(yīng)用統(tǒng)計學(xué)的就業(yè)方向

應(yīng)用統(tǒng)計專業(yè) 統(tǒng)計學(xué)和應(yīng)用統(tǒng)計學(xué)的就業(yè)方向

應(yīng)用統(tǒng)計學(xué)的就業(yè)方向?就業(yè)前景怎么樣呢??應(yīng)用統(tǒng)計學(xué)是干什么的?應(yīng)用統(tǒng)計學(xué)專業(yè)是什么?應(yīng)用統(tǒng)計學(xué)專業(yè)是學(xué)什么的?應(yīng)用統(tǒng)計學(xué)專業(yè)就業(yè)前景,統(tǒng)計學(xué)和應(yīng)用統(tǒng)計學(xué)有什么區(qū)別,哪個專業(yè)前景好?本文導(dǎo)航應(yīng)用統(tǒng)計學(xué)就業(yè)對專業(yè)能力的要求應(yīng)用統(tǒng)計學(xué)的發(fā)展前景應(yīng)用統(tǒng)計學(xué)專業(yè)的學(xué)生有前途嗎應(yīng)用統(tǒng)計學(xué)專業(yè)需要具備的技能應(yīng)用...

河北科技大學(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é)河...

618所 研究什么的 西工大航天學(xué)院研究生就業(yè)前景

有沒有人知道西安航天618所的具體情況,西安航空618所和紫光國芯那個好,西安618所繞環(huán)崗位是干什么的?材料專業(yè)可以進(jìn)618所嗎?西北工業(yè)大學(xué)研究生專業(yè)飛機(jī)發(fā)動機(jī)進(jìn)洛陽618所待遇如何?西安618所所長什么級別?本文導(dǎo)航西安哪個航天研究所最好西安紫光國芯集團(tuán)在西安收入排名西安210研究所是干什么的...

發(fā)郵件主題寫什么 如何寫一封解決客戶問題的郵件

發(fā)郵件主題寫什么 如何寫一封解決客戶問題的郵件

發(fā)求職簡歷郵件的主題應(yīng)該寫什么?請問郵件主題怎樣寫最能吸引客戶?想讓人發(fā)郵件帶上我,這個郵件的主題怎么寫?本文導(dǎo)航一般投簡歷郵件的開頭怎么寫如何寫一封解決客戶問題的郵件發(fā)郵件如何標(biāo)記為重要郵件一般投簡歷郵件的開頭怎么寫您好,郵件主題寫要點(diǎn):很多單位都表明郵件的主題寫什么,如果有要求,就按要求寫,如果...

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

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

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

發(fā)表評論

訪客

◎歡迎參與討論,請?jiān)谶@里發(fā)表您的看法和觀點(diǎn)。