43、現有3個生產者p1、p2、p3,他們都要生產橘子汁,每個生產者都已分別購得兩種不同的原料,待購齊第三種原料後就可配製成橘子汁裝瓶**。有一**商能源源不斷的**糖、水、橘子精,但每次只拿出一種原料放入容器中**給生產者。當容器中有原料時,需要這種原料的生產者可以取走,當容器空時**商又可放入一種原料。假定:生產者p1已購得糖和水;生產者p2已購得水和橘子精; 生產者p3已購得糖和橘子精; 試用: (1)管程(2)訊號量和p、v操作寫出**商和3個生產者之間能正確同步的程式。
semaphore empty;
semaphore full;
semaphore 糖、水、橘子精;
cobegin
process produce()
else if(物品是糖)
else
v(full);
coend
cobegin
process p1(){
p(full);
生產橘子汁;
v(empty);
coend
cobegin
process p2(){
p(full);
生產橘子汁;
v(empty);
coend
cobegin
process p3(){
p(full);
生產橘子汁;
v(empty);
coend
2.ipo問題:有多個輸入程序、多個處理程序和多個輸出程序。輸入程序把資料逐步輸入到乙個有m個單位緩衝區b1上,經處理程序處理之後放到有n個單位的緩衝區b2上,由輸出程序進行輸出。
(1).這個問題有哪些程序?程序之間有什麼樣的制約關係?
這個問題有輸入程序,處理程序,輸出程序;輸入程序把資料輸入之後存到緩衝區b1後,再經過處理程序處理之後放到b2緩衝區之後才能由輸出程序輸出。
(2).用訊號量及pv操作寫出這些程序之間的同步演算法。
1.輸入程序、處理程序、輸出程序,輸入程序把資料輸入之後存到緩衝區b1後,再經過處理程序處理之後放到b2緩衝區之後才能由輸出程序輸出。
semaphore b1;b1=m; /*b1可用的空快取區*/
semaphore b2;b2=n; /*b2可用的空快取區*/
semaphore mutex;mutex=1; /*同步訊號*/
cobegin
process input(){
while(true){
p(mutex);
輸入;b1--;
v(mutex);
process chuli(){
while(true){
p(mutex);
處理;b1++;
b2--;
v(mutex);
process output(){
while(true){
p(mutex);
輸出;b2++;
v(mutex);
coend
用訊號量及其PV操作處理實際問題
將生產者和消費者問題深入理解 融會貫通。1.書上課後練習p187 43 semaphore sugar,water,orange,s sugar 0 water 0 orange 0 s 1 process produce while true p s 放入原料 if 放入糖 than v suga...
用訊號量及其PV操作處理實際問題
將生產者和消費者問題深入理解 融會貫通。1.書上課後練習p187 43 int b semaphore empty 可用的緩衝區數 semaphore full 緩衝區內可用的產品數 empty 1 緩衝區內允許放入一件產品 full 0 緩衝區內沒有產品 semaphore 糖,水,橘子精 cob...
使用者訊號量及其PV操作處理實際問題
p187 43 cemaphore empty 1 橘子精 0 糖 0 水 0 process product while true p empty 產生乙個隨機數s if s 0 v 橘子精 if s 1 v 水 if s 2 v 糖 process p1 process p2 process p...