作業系統PV程式設計題目總結一

2022-08-21 12:24:13 字數 1572 閱讀 1079

這是讀者-寫者問題變形,檔案f在a與b之間要進行互斥,設訊號量fmutex用來兩組間互斥,顯然每組的讀者要進行計數,來說明有木有某組在讀檔案,需要2個計數變數c1和c2,再設訊號量asem和bsem分別對2個計數變數c1和c2進行互斥訪問。

這個問題是讀者-寫著問題的變形,路口要在水平和垂直方向上進行互斥,但在p1和p3方向上不需要互斥;同樣p2和p4方向上也不需要互斥。因此可以設p1和p3為一組,p2和p4為一組。設訊號量mutex用來兩組間互斥。每組上來車要進行計數,需要2個計數變數c1和c2,再設訊號量sem13和sem24分別對2個計數變數c1和c2進行互斥訪問。

semaphore mutex=1,sem13=1,sem24=1;

int c1=2=0;

cobegin

p1()

p2()

p3()

p4()

coend

父親和母親先放水果,兒子女兒再取水果;父親與女兒,母親與兒子是乙個同步關係,父親與母親要競爭空盤子,但空盤子容量為2.

設訊號量m1表示盤子空位,訊號量m2表示兒子是否能取蘋果,m3表示女兒能否取桔子。

int m1=2,m2=0,m3=0;

cobegin

p1()

}p2()

}p3()

}p4()

}coend

解法一:

semaphore chopstick[5],5;

chopstick[0].value=chopstick[1].value=1;

chopstick[2].value=chopstick[3].value=1;

chopstick[4].value=1;

s.value=4;//最多允許4個哲學家同時拿筷子

process pi()(i=0,1,2,3,4)

}parbegin//程序併發執行

p0();

p1();

p2();

p3();

p4();

parend

解法二:奇數號哲學家先拿左邊筷子,然後再拿右邊筷子;偶數號哲學家先拿右邊筷子,然後再拿左邊筷子。

semaphore chopstick[5];

chopstick[0].value=chopstick[1].value=1;

chopstick[2].value=chopstick[3].value=1;

chopstick[4].value=1;

parbegin

process pi()(i=0,2,4)

}process pi()(i=1,2)

}parend

作業系統 PV操作

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

作業系統 PV操作

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

作業系統PV程式設計例題講解

題目 工廠有兩個生產車間和乙個裝配車間,兩個車間分別生產a b兩種零件,裝配車間的任務是把a b兩種零件組裝成產品。兩個生產車間每生產乙個零件都要分別把它們送到裝配車間的貨架f1和f2上,f1存放a,f2存放b,f1和f2均只能容納乙個零件。每當能從貨架上取到乙個a和乙個b後就可以組裝成一件產品。整...