軟測試綜述 PV操作

2021-09-08 11:14:34 字數 2681 閱讀 8725



在作業系統中,程序之間常常會存在相互排斥(都須要共享獨占性資源時)和同步(完畢非同步的兩個程序的協作)兩種關係。

而訊號量和

pv操作完美有效的處理了這兩種情況。

相互排斥:就好比過獨木橋,一次僅僅能執行乙個程序。

同步:好比乙個人騎車乙個人步行,兩方協作完畢一件事情,速度快的每過一段時間就停下來等等速度慢的

訊號量是一種特殊的變數。表現形式是乙個整型

s和乙個佇列,依據控制物件的不同被賦予不同的值。分為下面兩類:

1,公用訊號量。實現程序間的相互排斥,初值為

1或資源的數目,

2,私用訊號量。實現程序間的同步,初值為

0或某個正整數。

s的物理意義:

s>=0

表示某資源的可用數。若

s<0

,則其絕對值表示堵塞佇列中等待該資源的程序數。

p

操作:也稱為

down()

、wait()

操作,使

s=s-1

。若s<0,

程序暫停執行。放入訊號量的等待佇列。表示申請乙個資源。

v

操作:也稱為

up()

、signal()

操作。使

s=s+1,

若s<=0,

喚醒等待佇列中的乙個程序。表示釋放乙個資源。

利用

pv操作實現程序的相互排斥

令訊號量

s的初值為

1,當進入臨界區時執行

p操作,退出臨界區時執行

v操作。這樣,利用

pv操作實現程序相互排斥的**例如以下:

p(s)

臨界區v(s)

利用

pv操作實現程序的同步

令訊號量

s的初值為

0。程序

a在程序b到達

l2曾經。不應前進到超過點l1。

程序a                       程序b

…                           …

l1:p(s)                       l2: v(s)

…                            …

當程序a

先執行到

l1時,執行完

p操作後,訊號量

s=s-1<0,

停止執行。直到程序

b執行到

l2時,訊號量

s=s+1=1

。喚醒程序

a繼續執行。

達到了同步的目的。

最後通過乙個例項分析來鞏固一下

比如。某倉庫有一名保管員。該倉庫可存放

n箱零件。

現有m名工人。僅僅要倉庫空暇。工人就可以將生產好的零件放入倉庫。並由保管員登記入庫數量。另外有

k名銷售員,僅僅要倉庫的零件數滿足顧客要求,便可提貨並由保管員登記出庫數量。

規定:工人和銷售員不能同一時候進入倉庫,可是工人和工人,銷售員和銷售員能夠同一時候進入倉庫。設定訊號量

s1,初值為

n,表示倉庫空暇位置數;訊號量

s2。初值為

0,表示倉庫中零件箱數;訊號量

s3,初值為

1,用於實現對保管員的相互排斥訪問。

則其管理系統流程圖例如以下:

對於工人程序,首先執行

p(s1)

申請資源。看倉庫中是否有空暇位置。

若有,則將零件送入倉庫。然後執行v(s2)

表明倉庫中已經有一箱零件,喚醒銷售員程序,告知銷售員能夠提貨了。然後執行p(

s3)申請資源,看是否有保管員空暇,若有。則登記入庫數,然後執行v(

s3)釋放保管員資源,使保管員處於空暇狀態。

對銷售員程序,首先執行

p(s2)

申請資源,看倉庫是否有貨物,若有,進入倉庫提貨,然後執行

v(s1)

釋放資源。使倉庫空暇出乙個位置。告知工人程序能夠放置貨物了,然後執行

p(s3)

申請資源,看是否有保管員空暇,若有,則登記出庫數,然後執行v(

s3)釋放保管員資源,使保管員處於空暇狀態。

通過上述例項可知,在現實生活中相互排斥和同步都是同一時候存在的,兩者相輔相成。

關於pv

操作,相對來講在軟考的複習內容中是比較生疏的一部分,了解了它是什麼,為什麼使用它,它有什麼長處以後,剩下的就是通過多多的實踐練習來加深對理論的理解和吸收了。



軟考學習 PV操作二 PV應用

pv原語的應用 pv原語可以解決程序管理當中的互斥問題,以及同步問題,還有通訊問題.我覺得我只要明白互斥和同步問題就好了,通訊就 1 用pv原語實現程序互斥 把臨界區置於p sem 和v sem 之間。ps 訊號量的英文是semaphore 當乙個程序想要進入臨界區時,它必須先執行p操作以將訊號量s...

測試unix linux系統PV操作的效能示例

使用此程式可以粗略的測試linux系統下pv操作的效能。system v 訊號燈 如下 include include include include include include include include include include define key t double union ...

效能測試綜述

一 了解效能測試 效能測試是不斷的通過不同場景的系統表現去 系統設計與資源消耗之間的平衡。我們可以認為效能測試是 通過在測試環境下對系統或構件的效能進行探測,用以驗證在生產環境下系統效能是否達到預估的效能需求,發現系統可能存在的效能瓶頸,進而改善優化並系統的效能,提高系統的可擴充套件性 穩定性。從上...