作業系統 PV操作 獨木橋問題

2021-10-24 21:56:55 字數 1633 閱讀 9689

改造題型

總結在作業系統中,使用pv操作實現程序的同步和互斥是程序管理的重要內容。pv操作不僅是本科學習階段的重難點,也是研究生入學考試的乙個重點考察知識。今天跟大家帶來乙個常見的pv操作題,題目描述如下:

東西向汽車過獨木橋,為了保證安全,只要橋上無車,則允許一方的汽車過橋,待一方的車全部過完後, 另一方的車才允許過橋。請用訊號量和 p、v操作寫出過獨木橋問題的同步演算法。

這是一道讀者寫者問題的變種問題,和我們讀者寫者問題中的讀者程序的思路是一致的。我們先整理一下思路:東側第乙個人先看一下橋對面有沒有人上橋,假如說對面橋上已經有人了,則他就等待;如果沒有人,則他就上橋,此時占領橋,讓東側對面的人不要再上,但和他同側的人可以源源不斷地上橋下橋,等到最後乙個下橋,則由最後乙個人釋放橋。西側完全相同。

很明顯,東西兩側的人都是平等的,是有兩個相同的「讀者程序」構成。

設定乙個互斥訊號量,實現對橋的互斥訪問。

設定兩個int值,分別記錄東西兩側的橋上人數,來判斷是否是第乙個個人,和最後乙個人。

設定兩個互斥量,來實現對人數的互斥訪問。

//獨木橋問題1

semaphore brigde =

1; // 互斥訊號量,表示獨木橋的互斥訪問

int eastcount =0;

// 東側車輛在獨木橋上的數量

semaphore eastmutex =1;

// 東側車輛的互斥訊號量,保證eastcount操作的完整執行

int westcount =0;

// 西側車輛在獨木橋上的數量

semaphore westmutex =1;

// 西側車輛的互斥訊號量,保證westcount操作的完整執行

process 東:

while(1)

process 西:

while(1)

如上所述,加入說東側的第乙個人上橋,占領橋之後,還未下橋,那東側可以有無數個車輛上橋。如果說為了安全起見,我們不允許無數輛汽車上橋,只允許k輛汽車同時在橋上。該問題的完整描述如下:

東西向汽車過獨木橋,為了保證安全,只要橋上無車,則允許一方的汽車過橋,待一方的車全部過完後, 另一方的車才允許過橋。為了安全起見,最多允許k(k>=1)輛汽車在橋上。請用訊號量和 p、v操作寫出過獨木橋問題的同步演算法。

我們對思路做簡單調整,只需要增加乙個記錄型訊號量,用來記錄同時在橋上的車輛即可。

//獨木橋問題2,最多有k輛汽車

semaphore brigde =

1; // 互斥訊號量,表示獨木橋的互斥訪問

int eastcount =0;

// 東側車輛在獨木橋上的數量

semaphore eastmutex =1;

// 東側車輛的互斥訊號量,保證count1操作的完整執行

int westcount =0;

// 西側車輛在獨木橋上的數量

semaphore westmutex =1;

// 西側車輛的互斥訊號量,保證count2操作的完整執行

semaphore count=k //橋上最多有k輛汽車

process 東:

while(1)

process 西:

while(1)

OS PV操作 4 過獨木橋問題

某條河只有一座獨木橋 東西向 以便行人過河。現在河的兩邊都有人要過橋,按照下面規則過橋,為了保證過橋安全,請用p v操作分別實現正確的管理。規則 同一方向的可連續過橋,但可連續過橋人數最多為10人。某方向有人過橋時另一方向的人要等待 我對這個題目的理解 乙個方向的人開始過橋時,橋上最多過10個,如果...

作業系統 PV操作

1.pv原語的含義 p操作和v操作是不可中斷的程式段,稱為原語。pv原語及訊號量的概念都是由荷蘭科學家e.w.dijkstra提出的,其基本思路是用一種新的變數型別 semaphore 來記錄當前可用資源的數量。訊號量sem是一整數,sem大於等於零時代表可供併發程序使用的資源實體數,但sem小於零...

作業系統 PV操作

分析 進入書店p sn 與離開書店v sn 操作對應題目中的 該書店最多允許n個購書者進入 因為假如進入書店的人數超過了最大的限制,p操作會被阻塞,知道v操作執行後釋放空間。接下來分析購書與收費的流程,現實生活中購書付款是顧客提出繳費的要求後,收銀員才能進行收費。所以收銀員預設是處於待機狀態即阻塞狀...