使用者訊號量及其PV操作處理實際問題

2022-06-05 01:15:12 字數 2329 閱讀 1522

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 p3(){

while(true){        while(true){        while(true){

p(橘子精);        p(糖);             p(水);

取走橘子精;       取走糖;           取走水;

v(empty);        v(empty);            v(empty);

coend

2.ipo問題:有多個輸入程序、多個處理程序和多個輸出程序。輸入程序把資料逐步輸入到乙個有m個單位緩衝區b1上,經處理程序處理之後放到有n個單位的緩衝區b2上,由輸出程序進行輸出。

a.這個問題有哪些程序?程序之間有什麼樣的制約關係?

b.用訊號量及pv操作寫出這些程序之間的同步演算法

解:a:有輸入程序、處理程序、輸出程序,程序之間有同步關係。

b:     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

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 p3(){

while(true){        while(true){        while(true){

p(橘子精);        p(糖);             p(水);

取走橘子精;       取走糖;           取走水;

v(empty);        v(empty);            v(empty);

coend

2.ipo問題:有多個輸入程序、多個處理程序和多個輸出程序。輸入程序把資料逐步輸入到乙個有m個單位緩衝區b1上,經處理程序處理之後放到有n個單位的緩衝區b2上,由輸出程序進行輸出。

a.這個問題有哪些程序?程序之間有什麼樣的制約關係?

b.用訊號量及pv操作寫出這些程序之間的同步演算法

解:a:有輸入程序、處理程序、輸出程序,程序之間有同步關係。

b:     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操作處理實際問題

43 現有3個生產者p1 p2 p3,他們都要生產橘子汁,每個生產者都已分別購得兩種不同的原料,待購齊第三種原料後就可配製成橘子汁裝瓶 有一 商能源源不斷的 糖 水 橘子精,但每次只拿出一種原料放入容器中 給生產者。當容器中有原料時,需要這種原料的生產者可以取走,當容器空時 商又可放入一種原料。假定...