所示。
2
f操作系统课程设计
32详细流程图
图311主程序
3
f操作系统课程设计
图312生产者
图313消费者
通过分析,我们已经了解到了可以采用信号量来解决
个进程的临界区问题,这
个进程共享一个信号量mutexmutualexclusio
,并初始化为1。每个进程Pi的组织结构如下图。
4
f操作系统课程设计
由于本系统我们研究的是有限缓冲区(Bou
dedBuffer)的生产者消费者问题。而且根据初始条件可知,该缓冲区内有20个缓冲项,每个缓冲项存储一个整形数。信号量mutex提供了对缓冲池访问的互斥要求,并初始化为1。信号量empty和full分别用来表示空缓冲项和满缓冲项的数量。信号量empty初始化为20,而信号量full初始化为0;生产者进程和消费者进程的代码如图。注意生产者和消费者之间的对称性可以这样来理解代码:生产者为消费者生产满缓冲项,或消费者为生产者生产空缓冲项。
5
f操作系统课程设计
33程序清单和详细注释i
cludetcharhi
cludestdlibhi
cludestdiohi
cludewi
dowshi
cludeprocesshi
cludedoshi
cludeco
iohi
cludefstreami
cludetimehusi
g
amespacestdco
sti
tArraySize100co
sti
tBuffer_Number10HANDLEemptyfullmutexcharproduce10