缓冲池中空缓冲区及满缓冲区的数量。又假定这些生产者和消费者相互等效,只要缓冲池未满,生产者便可将消息送入缓冲池;只要缓冲池未空,消费者便可从取走一个消息。Р生产者-消费者问题可描述如下:Рvar mutex,empty,full:semaphore:=1,n,0;Р buffer:array[0,…,n-1] of message;Р in,out:0,…,n-1:=0,…,0;РbeginР parbeginР producer:beginР repeatР .Р .Р .Р producer a new message m;Р .Р .Р .Р P(empty);Р P(mutex);Р buffer(in):=m;Р in:=(in+1) mod n;Р V(mutex);Р V(full);Р until falseР endР consumer:beginР repeatР P(full);Р P(mutex);Р m:=buffer(out);Р out:=(out+1) mod n;Р V(mutex);Р V(empty);Р consume message m;Р until falseР endР parendРendР在生产者-消费者问题中应当注意:Р(1)在每个程序中用于实现互斥的P(mutex)和V(mutex)必须成对出现。Р(2)对资源信号量empty和full的P、V操作同样需要成对出现,但它们分别处于不同的程序中,例如,P(empty)在计算进程中,而V(empty)则在打印进程中,计算进程因执行P(empty)而阻塞,则以后将由打印进程将它唤醒。Р(3)在每个程序中的P操作顺序不能颠倒,应先执行对资源信号量的P操作,然后再执行互斥信号量的P操作,否则可能引起进程死锁。Р3、写出可对文件和目录进行的操作。 Р4、虚拟存储页面置换的几种算法。