计算机操作系统辅导之三PV操作-Read.DOC

计算机操作系统辅导之三PV操作-Read

第五讲 进程管理之经典的同步问题 上一讲我们学习了进程同步和信号量,知道了进程同步的愿意和意义。做了一些例子和习题。现在了解几个经典的问题 【例1】生产者-消费者问题 我们把进程同步问题一般化,可以得到一个抽象的一般模型,也就是生产者-消费者问题。生产者-消费者问题是一种同步问题的抽象描述描述一组生产者向一组消费者提供消息,它们共享一个有界缓冲池,生产者向其中有界缓冲池投放消息,消费者从中取得消息。empty——表示缓冲区是否为空,初值为1。也就是生产者可用缓冲区(空缓冲区)的数量,初值是1,说明有一个空缓冲区 消费者进程的私有信号量full——表示缓冲区中是否为满,初值为0。也就是消费者可用缓冲区(满缓冲区)的数量,初值是0,说明满缓冲区为0个 生产者进程 while(TRUE){ 生产一个产品; P(empty); 产品送往Buffer; V(full); } (2)一个生产者,一个消费者,公用n个环形缓冲区。 定义两个同步信号量: empty——表示缓冲区是否为空,初值为n。 full——表示缓冲区中是否为满,初值为0。 设缓冲区的编号为1~n(1,定义两个指针in和out,分别是生产者进程和消费者进程使用的指针,指向下一个可用的缓冲区。 生产者进程 while(TRUE){ 生产一个产品; P(empty);

文档评论(0)

1亿VIP精品文档

相关文档