什么是AND信号量?请利用AND信号量写出生产者一消费者问题的解法。

admin2017-11-14  25

问题 什么是AND信号量?请利用AND信号量写出生产者一消费者问题的解法。

选项

答案此题主要考查进程与死锁的相关转换内容。 (1)为解决并行所带来的死锁问题,在wait操作中引入AND条件,其基本思想是将进程在整个运行过程中所需要的所有临界资源一次性地全部分配给进程,用完后一次性释放。 (2)解决生产者一消费者问题可描述如下: var mutex,empty,full:semaphore:=1,n,0; buffer:array[0..n—1]of item; in,out:integer:=0,0; begin parbegin producer:begin repeat produce an item in nextp; wait(empty); wait(s1,s2,s3,…,sn); //s1,s2,s3,…,sn为执行生产者进程除empty外其余的条件 wait(mutex); buffer(in)::nextp; in:=(in+1)mod n; signal(mutex); signal(full); signal(s1,s2,s3,…,sn); until false; end consumer:begin repeat wait(full); wait(k1,k2,k3,…,kn); //k1,k2,k3,…,kn为执行生产者进程除full外其余的条件 wait(mutex); nextc:=buffer(out); out:=(out+1)mod n; signal(mutex); signal(empty); signal(k1,k2,k3,…,kn): consume the item in nextc; until false; end parend end

解析
转载请注明原文地址:https://kaotiyun.com/show/oCRi777K
0

最新回复(0)