利用信号量解决生产者消费者问题 第6页


利用信号量解决生产者消费者问题 第6页

6.使用说明书

6.1本次设计是在Visual C++里做的,具体使用过程按运行时候的提示进行操作。

进入运行界面,如下面图所示:若图片无法显示请联系QQ3249114

6.1.4生产产品和消费产品

 

7.总结

通过这次课程设计,不但加深了对操作系统这们课程的认识,而且还了解了操作系统中使用AND信号量解决生产者消费者问题算法的实现。比如:用AND信号量解决生产者消费者问题时,可以通过一个有界缓冲区(用数组来实现,类似循环队列)把生产者和消费者联系起来。假定生产者和消费者的优先级是相同的,只要缓冲区未满,生产者就可以生产产品并将产品送入缓冲区。类似地,只要缓冲区未空,消费者就可以从缓冲区中去走产品并消费它。为了解决生产者/消费者问题,应该设置两个资源信号量,其中一个表示空缓冲区的数目,用g_hFullSemaphore表示,其初始值为有界缓冲区的大小SIZE_OF_BUFFER;另一个表示缓冲区中产品的数目,用g_hEmptySemaphore表示,其初始值为0。另外,由于有界缓冲区是一个临界资源,必须互斥使用,所以还需要再设置一个互斥信号量g_hMutex,起初值为1。在生产者/消费者问题中,信号量实现两种功能。首先,它是生产产品和消费产品的计数器,计数器的初始值是可利用的资源数目(有界缓冲区的长度)。其次,它是确保产品的生产者和消费者之间动作同步的同步器。
   
生产者要生产一个产品时,首先对资源信号量g_hFullSemaphore和互斥信号量g_hMutex进行P操作,申请资源。如果可以通过的话,就生产一个产品,并把产品送入缓冲区。然后对互斥信号量g_hMutex和资源信号量g_hEmptySemaphore进行V操作,释放资源。消费者要消费一个产品时,首先对资源信号量g_hEmptySemaphore和互斥信号量g_hMutex进行P操作,申请资源。如果可以通过的话,就从缓冲区取出一个产品并消费掉。然后对互斥信号量g_hMutex和资源信号量g_hFullSemaphore进行V操作,释放资源。

另外,使我体会最深的是:任何一门知识的掌握,仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能达到功效。短短的课程设计就要结束了,不但对专业知识有了更深的理解,更使自己认识到实践的重要性,理论、实践相结合才能达到很好的学习效果,特别是程序语言的学习。

参考文献

[1] 张尧学等编著.计算机操作系统教程.清华大学出版社,2002.02

[2] 汤子瀛等编著.计算机操作系统.西安电子科技出版社,1996.12

[3] 陈向群编著.操作系统教程.北京大学出版社,2001.07

[4] 郑莉,傅仕星编著.C++语言设计. 北京: 清华大学版社.2000

[5] 严蔚敏,吴伟民编著.数据结构.  北京: 清华大学版社.2002

上一页  [1] [2] [3] [4] [5] [6] 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有