- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程同步与互斥_哲学家进餐问题
网络教育学院
《操作系统》课 程 设 计
题 目: 进程同步与互斥 哲学家进餐问题
学习中心:
层 次:
专 业:
年 级: 年 秋 季
学 号:
学 生:
辅导教师:
完成日期: 目录
1.题目要求与开发环境 1
1.1 题目目的与要求 1
1.2 题目开发环境 1
1.3开发原型图 1
1.4设计界面截图 2
2. 总体设计思想以及相关知识 2
2.1总体设计思想 2
2.2 本程序涉及到的概念 3
2.2.1简介 3
2.2.2临界资源 3
2.2.3进程同步 3
2.2.4进程互斥 4
2.2.5实现临界区互斥的基本方法 4
硬件实现方法 4
信号量实现方式 5
3.流程和效果图 5
3.1程序流程图及简介 5
3.2流程图各阶段程序界面的变化 7
4.程序源代码 9
5.设计总结 14
1.题目要求与开发环境
1.1 题目目的与要求
题目的目的:通过实现哲学家进餐问题的同步深入了解和掌握进程同步和互斥的原理。
题目要求:简单描述哲学家进餐问题。可设计五个哲学家,每人都需要一双筷子。哲学家有两种活动:吃饭和思考,需要成功设计让每个哲学家能够顺利吃饭。
1.2 题目开发环境
系统平台:Windows 7 旗舰版
实现语言:C#
开发工具:Microsoft Visual Studio 2010
1.3开发原型图
设计界面截图
只是为了体现算法,关键我不会美工,所以界面比较简单
2. 总体设计思想以及相关知识
2.1总体设计思想
哲学家的生活就是思考和吃饭,即思考,饿了就吃,吃饱了再思考,循环往复。要求是:每一个哲学家只有在拿到位于他左右两侧的筷子后,才能够就餐;哲学家不能拿着一只筷子不放手,也不能从其他哲学家手中抢夺筷子;哲学家每次吃饱后必须放下他手中的两只筷子恢复思考,不能强抓住筷子不放。
设计一个程序,能够显示当前各哲学家的状态和桌上筷子的使用情况,并能无死锁的推算出下一状态各哲学家的状态和桌上筷子的使用情况。即设计一个能安排哲学家正常生活的程序。
开始本来是准备用C++设计的,但是最近开始自学C#,发现微软封装了很多基类,调用十分方便。可以很简单的设计出程序,正好练习一下,所以就用C#设计程序了,同时在百度查找了很多资料。
2.2 本程序涉及到的概念
2.2.1简介
??? 进程同步是一个操作系统级别的概念,是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步。
临界资源
??? 在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源)。但对于某些资源来说,其在同一时间只能被一个进程所占用。这些一次只能被一个进程所占用的资源就是所谓的临界资源。典型的临界资源比如物理上的打印机,或是存在硬盘或内存中被多个进程所共享的一些变量和数据等(如果这类资源不被看成临界资源加以保护,那么很有可能造成丢数据的问题)。
??? 对于临界资源的访问,必须是互诉进行。也就是当临界资源被占用时,另一个申请临界资源的进程会被阻塞,直到其所申请的临界资源被释放。而进程内访问临界资源的代码被成为临界区。
??? 对于临界区的访问过程分为四个部分:
??? 1.进入区:查看临界区是否可访问,如果可以访问,则转到步骤二,否则进程会被阻塞
??? 2.临界区:在临界区做操作
??? 3.退出区:清除临界区被占用的标志
??? 4.剩余区:进程与临界区不相关部分的代码
进程同步
进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。
比如说进程A需要从缓冲区读取进程B产生的信息,当缓冲区为空时,进程B因为读取不到信息而被阻塞。而当进程A产生信息放入缓冲区时,进程B才会被唤醒。概念如下图所示。
2.2.4进程互斥
进程互斥是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临
文档评论(0)