首页 > 试题广场 >

设有一缓冲池 P , P 中含有 20 个可用缓冲区,一个输

[问答题]

设有一缓冲池 P P 中含有 20 个可用缓冲区,一个输入进程将外部数据读入 P ,另有一个输出进程将 P 中数据取出并输出。若讲程每次操作均以一个缓冲区为单位,试用记录型信号量写出两个进程的同步算法 , 要求写出信号量的初值。


解:

semaphore mutex=1;

semaphore empty=20;

semaphore full=0;

int in,out = 0;

item p [20];

void Producer(){

while(ture){

producer an item in nextp;

wait(empty);

wait(mutex);

p[in] := nextp;

in := (in+1) mod 20;

signal(mutex);

signal(full);

}

}

void Consumer(){

while(ture){

wait(full);

wait(mutex);

nextc := p[out];

out := (out+1) mod 20;

signal(mutex);

signal(empty);

}

}

发表于 2017-05-14 22:05:35 回复(0)