网站大量收购闲置独家精品文档,联系QQ:2885784924

大工19秋《操作系统》大作业题目及要求-题目三答案.doc

大工19秋《操作系统》大作业题目及要求-题目三答案.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

大连理工大学远程与继续教育学院《操作系统》课程设计

学习中心:

专业:计算机科学与技术

年级:年春/秋季

学号:

学生:

题目:进程同步与互斥生产者-消费者问题

1.谈谈你对本课程学习过程中的心得体会与建议?

通过对操作系统这门课的学习,我了解到了计算机操作系统是铺设在计算机硬件上的多层系统软件,不仅增强了系统的功能,而且还隐藏了对硬件操作的细节,由它实现了对计算机硬件操作的多层次的抽象。

回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。

此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

2.《操作系统》课程设计,从以下5个题目中任选其一作答。

《操作系统》课程设计

题目三:进程同步与互斥生产者-消费者问题

一、设计要求

一组生产者向一组消费者提供消息,它们共享一个有界缓冲区n,生产者向其中投放消息,消费者从中取得消息。

二、设计思路

对于生产者进程:产生一个数据,当要送入缓冲区时,要检查缓冲区是否已满,若未满,则可将数据送入缓冲区,并通知消费者进程;否则,等待;

对于消费者进程:当它去取数据时,要看缓冲区中是否有数据可取,若有则取走一个数据,并通知生产者进程,否则,等待。

缓冲区是个临界资源,因此,诸进程对缓冲区的操作程序是一个共享临界区,所以,还有个互斥的问题。

三、流程(原理)图

四、源代码

#includewindows.h

#includeiostream

constunsignedshortSIZE_OF_BUFFER=20;//有界缓冲区长度

intg_buffer[SIZE_OF_BUFFER];//开辟缓冲区,用数组表示,可以看成是一个循环队列

unsignedshortProductID=0;//新生产出来的产品的产品号

unsignedshortConsumeID=0;//被消耗的产品的产品号

unsignedshortin=0;//产品进缓冲区时的缓冲区下标,用于记录生产者的指针位置

unsignedshortout=0;//产品出缓冲区时的缓冲区下标,用于记录消费者的指针位置

boolg_continue=1;//控制程序运行:1表示继续运行,0表示停止运行

HANDLEg_hMutex;//线程间的互斥信号量

HANDLEg_hEmptySemaphore;//资源信号量:缓冲区空

HANDLEg_hFullSemaphore;//资源信号量:缓冲区满

DWORDWINAPIConsumer(LPVOID);//消费者线程

DWORDWINAPIProducer(LPVOID);//生产者线程

constunsignedshortPRODUCERS_COUNT=4;//生产者的个数

constunsignedshortCONSUMERS_COUNT=3;//消费者的个数

constunsignedshortTHREADS_COUNT=PRODUCERS_COUNT+CONSUMERS_COUNT;//总线程数

DWORDproducerID[CONSUMERS_COUNT];//生产者线程的标识符

HANDLEhThreads[PRODUCERS_COUNT];//各线程的handle

DWORDconsumerID[THREADS_COUNT];//消费者线程的标识符

/*----------------------------生产一个产品开始------------------------------*/

//生产一个产品,输出其ID号

voidProduce()

{

std::coutstd::endl;

std::ce

文档评论(0)

lhmibtf + 关注
实名认证
内容提供者

专注成人学历教育服务10余年。

1亿VIP精品文档

相关文档