操作系统原理:进程 PV 操作如何计算?全网最全三种前驱图计算类型总结
文章目錄
- 前言
- 一、PV 操作定義
- 1.1、P 操作定義
- 1.2、V 操作定義
- 二、串聯(lián)進(jìn)程(單線前驅(qū)圖)
- 2.1、什么是單線前驅(qū)圖?
- 2.2、如何計算單線前驅(qū)圖的 PV?
- 2.2.1、計算前驅(qū)節(jié)點 PV
- 2.2.2、計算中間節(jié)點 PV
- 2.2.3、計算尾節(jié)點 PV
- 三、并聯(lián)進(jìn)程(多線前驅(qū)圖)
- 3.1、什么是多線前驅(qū)圖?
- 3.2、并聯(lián)進(jìn)程趨于合并
- 3.2.1、計算前驅(qū)節(jié)點 PV
- 3.2.2、計算中間節(jié)點 PV
- 3.2.3、計算尾節(jié)點 PV
- 3.3、并聯(lián)進(jìn)程趨于展開
- 3.3.1、計算前驅(qū)節(jié)點 PV
- 3.3.2、計算中間節(jié)點 PV
- 3.3.3、計算尾節(jié)點 PV
- 總結(jié)
前言
關(guān)于 PV 操作基本都是結(jié)合進(jìn)程管理的前驅(qū)圖來進(jìn)行考察,歷年以來,無論是軟考還是操作系統(tǒng)的單獨考試,占有很大的比重。今天我們總結(jié)兩種在考試中常考的類型。一種是單線前驅(qū)圖,即串聯(lián)進(jìn)程,另一種是多線前驅(qū)圖,即并聯(lián)進(jìn)程。并聯(lián)進(jìn)程下又細(xì)分為兩類:一種逐漸向后合并(進(jìn)程趨于合并),另一種是前驅(qū)圖逐漸向后展開。兩種類型你都掌握了應(yīng)試也就毫無問題了。一、PV 操作定義
本文中的 S 為信號量。關(guān)于前驅(qū)圖以及信號量的基礎(chǔ)知識本篇不作詳細(xì)介紹。
1.1、P 操作定義
S:=S-1,若 S≥0,則執(zhí)行 P 操作的進(jìn)程繼續(xù)執(zhí)行;若 S<0,則置該進(jìn)程為阻塞狀態(tài)(因為無可用資源),并將其插入阻塞隊列。
定義這么長,我們只需要謹(jǐn)記:執(zhí)行 P 操作的進(jìn)程將進(jìn)入等待隊列。
1.2、V 操作定義
S:=S+1,若 S>0,則執(zhí)行 V 操作的進(jìn)程繼續(xù)執(zhí)行;若 S≤0,則從阻塞狀態(tài)喚醒一個進(jìn)程,并將其插入就緒隊列,然后執(zhí)行 V 操作的進(jìn)程繼續(xù)。
定義這么長,我們只需要謹(jǐn)記:執(zhí)行 V 操作的進(jìn)程將從阻塞隊列中喚醒一個進(jìn)程。
二、串聯(lián)進(jìn)程(單線前驅(qū)圖)
2.1、什么是單線前驅(qū)圖?
串聯(lián)進(jìn)程(單線前驅(qū)圖)是計算 PV 操作中最為簡單的。那什么是單線前驅(qū)圖呢?舉例前驅(qū)圖如下:
題干信息:使用 PV 操作控制進(jìn)程 P1、P2、P3 執(zhí)行的過程,設(shè)置 2 個信號量分別為 S1、S2 且初值均為零。分別列出 3 個進(jìn)程的進(jìn)程執(zhí)行圖來計算每個進(jìn)程的 PV 操作。
我們可以看到 P1、P2、P3 三個進(jìn)程是串聯(lián)關(guān)系,一一執(zhí)行,只有前面的進(jìn)程執(zhí)行了后面的才可以執(zhí)行,我們將這類前驅(qū)圖歸類為單線前驅(qū)圖。
2.2、如何計算單線前驅(qū)圖的 PV?
那我們計算該進(jìn)程的 PV 操作呢?我們將節(jié)點分為前驅(qū)節(jié)點(即首節(jié)點),中間節(jié)點,尾節(jié)點分別計算 PV。
2.2.1、計算前驅(qū)節(jié)點 PV
對于前驅(qū)的首結(jié)點 P1 進(jìn)程,進(jìn)程 P1 從初始狀態(tài)執(zhí)行操作的結(jié)果就是從阻塞隊列中喚醒一個進(jìn)程,即喚醒 P2,故其只有 V 操作,占用一個信號量 S1,進(jìn)程 P1 執(zhí)行 V(S1)操作。P1 進(jìn)程執(zhí)行圖如下圖所示:
2.2.2、計算中間節(jié)點 PV
對于中間節(jié)點 P2 進(jìn)程,只有在前驅(qū)進(jìn)程 P1 完成之后才可以執(zhí)行,如果進(jìn)程 P1 阻塞 P2 就無法正常執(zhí)行,處于等待狀態(tài),故 P2 進(jìn)程是從等待 S1 的信號量,運行本進(jìn)程,結(jié)果就是喚醒另一個進(jìn)程即 P3 進(jìn)程,并占用一個信號量 S2。P2 進(jìn)程執(zhí)行圖如下圖所示:
2.2.3、計算尾節(jié)點 PV
對于 P3 進(jìn)程,同理,只有在前驅(qū)節(jié)點 P2 執(zhí)行完成將信號量 S2 傳過來之后才可以執(zhí)行,然后進(jìn)程結(jié)束。P3 進(jìn)程執(zhí)行圖如下圖所示:
三、并聯(lián)進(jìn)程(多線前驅(qū)圖)
3.1、什么是多線前驅(qū)圖?
多線前驅(qū)圖即并聯(lián)進(jìn)程,多個進(jìn)程趨于合并或者單個進(jìn)程展開為多個進(jìn)程,類似于初中我們所學(xué)的串并聯(lián)電路知識。下面我們分別從并聯(lián)進(jìn)程趨于合并與并聯(lián)進(jìn)程趨于展開兩個方向來討論不同情況如何計算 PV 操作。
3.2、并聯(lián)進(jìn)程趨于合并
并聯(lián)進(jìn)程趨于合并是并聯(lián)進(jìn)程中較為簡單的,我在這里舉一例較為經(jīng)典的例題。進(jìn)程前驅(qū)圖如下:
題干信息:使用 PV 操作控制進(jìn)程 P1、P2、P3、P4 并發(fā)執(zhí)行的過程,設(shè)置 4 個信號量分別為 S1、S2、S3、S4 且初值均為零。分別列出 5 個進(jìn)程的進(jìn)程執(zhí)行圖來計算每個進(jìn)程的 PV 操作。
3.2.1、計算前驅(qū)節(jié)點 PV
對于前驅(qū)的首結(jié)點,以 P1 進(jìn)程為例,進(jìn)程 P1 從初始狀態(tài)執(zhí)行操作的結(jié)果就是從阻塞隊列中喚醒一個進(jìn)程,即喚醒 P4,故其只有 V 操作,并占用一個信號量 S1,故進(jìn)程 P1 執(zhí)行 V(S1)操作。P1 進(jìn)程執(zhí)行圖如下圖所示:
同理,P2、P3 進(jìn)程與 P1 相同,三個進(jìn)程分別各占三個信號量S1、S2、S3,進(jìn)程執(zhí)行圖如下圖所示:
3.2.2、計算中間節(jié)點 PV
對于中間節(jié)點進(jìn)程 P4,只有在前驅(qū)進(jìn)程 P1、P2、P3 都已經(jīng)完成之后才可以執(zhí)行,而進(jìn)程 P1、P2、P3 均有可能在阻塞隊列中,故進(jìn)程 P4 需要先等待 P1、P2、P3 進(jìn)程的執(zhí)行(即 P 操作)接收信號量,然后執(zhí)行 P4 自身進(jìn)程喚醒 P5 操作(即 V 操作)占用一條信號量 S4。P4 進(jìn)程執(zhí)行圖如下圖所示:
3.2.3、計算尾節(jié)點 PV
對于 P5 進(jìn)程,同理,需要接收到 P4 進(jìn)程的信號量才可以運行,然后進(jìn)程結(jié)束。P5 進(jìn)程執(zhí)行圖如下圖所示:
3.3、并聯(lián)進(jìn)程趨于展開
并聯(lián)進(jìn)程趨于展開是并聯(lián)進(jìn)程中較為難的一種,但是理清了思緒還是得心應(yīng)手的。舉例題如下:
題干信息:使用 PV 操作控制進(jìn)程 P1、P2、P3、P4、P5 執(zhí)行的過程,設(shè)置 5 個信號量分別為 S1、S2、S3、S4、S5 且初值均為零。分別列出 5 個進(jìn)程的進(jìn)程執(zhí)行圖來計算每個進(jìn)程的 PV 操作。
分析:對于本前驅(qū)圖,我們應(yīng)該注意 P2、P3、P4 進(jìn)程,信號量的判別根據(jù)進(jìn)程標(biāo)識順序走。
3.3.1、計算前驅(qū)節(jié)點 PV
前驅(qū)節(jié)點進(jìn)程 P1跟之前我們講到的一樣,這里不再贅述。P1 進(jìn)程執(zhí)行圖如下圖所示:
3.3.2、計算中間節(jié)點 PV
對于進(jìn)程 P2,需要等到 P1 的信號量 S1,并喚醒 P3、P4 進(jìn)程分別占用信號量 S1、S2。P2 進(jìn)程執(zhí)行圖如下圖所示:
對于進(jìn)程 P3,需要等到進(jìn)程 P2 的信號量 S2 才可以執(zhí)行,然后激活進(jìn)行 P4,占用一個信號量 S4。P3 進(jìn)程執(zhí)行圖如下圖所示:
對于進(jìn)程 P4,需要等到進(jìn)程 P2、P3 的信號量 S3、S4 才可以執(zhí)行,然后激活進(jìn)程 P5,并占用一個信號量 S5。P4 進(jìn)程執(zhí)行圖如下圖所示:
3.3.3、計算尾節(jié)點 PV
對于尾節(jié)點進(jìn)程 P5,需要等到進(jìn)程 P4 的信號量 S5 才可以執(zhí)行,直到進(jìn)程結(jié)束。P5 進(jìn)程執(zhí)行圖如下圖所示:
總結(jié)
本文給大家介紹了操作系統(tǒng)基本原理中的一個重要知識點,進(jìn)程管理之 PV 操作。我們通過對不同的前驅(qū)圖進(jìn)行分類,總結(jié)了兩大類最為常見的前驅(qū)圖類型,在不同的情境下設(shè)置不同的處理思路。循序漸進(jìn),從單進(jìn)程到多進(jìn)程,處理思路跟著題目給出的前驅(qū)圖表示順序走(跟著順序走你會發(fā)現(xiàn)都是單進(jìn)程的計算方式)。相信本篇文章更能讓你在計算過程中起到事半功倍的效果。我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補(bǔ)充可以留言在文章下方,感謝大家的支持!
總結(jié)
以上是生活随笔為你收集整理的操作系统原理:进程 PV 操作如何计算?全网最全三种前驱图计算类型总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 盛京银行是哪里的银行 对外投资有哪些
- 下一篇: 目标检测第4步:显卡、GPU、CUDA、