您好,登錄后才能下訂單哦!
本篇內容介紹了“三種操作系統前驅圖類型詳細總結進程管理之如何使用PV操作”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
本文中的 S 為信號量。關于前驅圖以及信號量的基礎知識本篇不作詳細介紹。
S:=S-1,若 S≥0,則執行 P 操作的進程繼續執行;若 S<0,則置該進程為阻塞狀態(因為無可用資源),并將其插入阻塞隊列。
定義這么長,我們只需要謹記:執行 P 操作的進程將進入等待隊列。
S:=S+1,若 S>0,則執行 V 操作的進程繼續執行;若 S≤0,則從阻塞狀態喚醒一個進程,并將其插入就緒隊列,然后執行 V 操作的進程繼續。
定義這么長,我們只需要謹記:執行 V 操作的進程將從阻塞隊列中喚醒一個進程。
串聯進程(單線前驅圖)是計算 PV 操作中最為簡單的。那什么是單線前驅圖呢?舉例前驅圖如下:
題干信息:使用 PV 操作控制進程 P1、P2、P3 執行的過程,設置 2 個信號量分別為 S1、S2 且初值均為零。分別列出 3 個進程的進程執行圖來計算每個進程的 PV 操作。
我們可以看到 P1、P2、P3 三個進程是串聯關系,一一執行,只有前面的進程執行了后面的才可以執行,我們將這類前驅圖歸類為單線前驅圖。
那我們計算該進程的 PV 操作呢?我們將節點分為前驅節點(即首節點),中間節點,尾節點分別計算 PV。
對于前驅的首結點 P1 進程,進程 P1 從初始狀態執行操作的結果就是從阻塞隊列中喚醒一個進程,即喚醒 P2,故其只有 V 操作,占用一個信號量 S1,進程 P1 執行 V(S1)操作。P1 進程執行圖如下圖所示:
對于 P3 進程,同理,只有在前驅節點 P2 執行完成將信號量 S2 傳過來之后才可以執行,然后進程結束。P3 進程執行圖如下圖所示:
題干信息:使用 PV 操作控制進程 P1、P2、P3、P4 并發執行的過程,設置 4 個信號量分別為 S1、S2、S3、S4 且初值均為零。分別列出 5 個進程的進程執行圖來計算每個進程的 PV 操作。
對于前驅的首結點,以 P1 進程為例,進程 P1 從初始狀態執行操作的結果就是從阻塞隊列中喚醒一個進程,即喚醒 P4,故其只有 V 操作,并占用一個信號量 S1,故進程 P1 執行 V(S1)操作。P1 進程執行圖如下圖所示:
對于中間節點進程 P4,只有在前驅進程 P1、P2、P3 都已經完成之后才可以執行,而進程 P1、P2、P3 均有可能在阻塞隊列中,故進程 P4 需要先等待 P1、P2、P3 進程的執行(即 P 操作)接收信號量,然后執行 P4 自身進程喚醒 P5 操作(即 V 操作)占用一條信號量 S4。P4 進程執行圖如下圖所示:
并聯進程趨于展開是并聯進程中較為難的一種,但是理清了思緒還是得心應手的。舉例題如下:
對于進程 P2,需要等到 P1 的信號量 S1,并喚醒 P3、P4 進程分別占用信號量 S1、S2。P2 進程執行圖如下圖所示:
對于進程 P4,需要等到進程 P2、P3 的信號量 S3、S4 才可以執行,然后激活進程 P5,并占用一個信號量 S5。P4 進程執行圖如下圖所示:
“三種操作系統前驅圖類型詳細總結進程管理之如何使用PV操作”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。