进程同步与互斥哲学家进餐问题

进程同步与互斥哲学家进餐问题

ID:42762642

大小:430.09 KB

页数:18页

时间:2019-09-20

进程同步与互斥哲学家进餐问题_第1页
进程同步与互斥哲学家进餐问题_第2页
进程同步与互斥哲学家进餐问题_第3页
进程同步与互斥哲学家进餐问题_第4页
进程同步与互斥哲学家进餐问题_第5页
资源描述:

《进程同步与互斥哲学家进餐问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、丈座建Z犬彥网络教育学院《操作系统》课程设计题目:进程同步与互斥哲学家进餐问题学习中心:层次:专业:年级:年秋季学号:学生:辅导教师:完成日期:目录1.题目要求与开发环境11.1题目目的与要求11.2题目开发环境11・3开发原型图11.4设计界面截图22.总体设计思想以及相关知识22.1总体设计思想22.2本程序涉及到的概念32.2.1简介32.2.2临界资源32.2.3进程同步32.2.4进程互斥42.2.5实现临界区互斥的基本方法4硬件实现方法4信号量实现方式53.流程和效果图53.1程序流程图及简介53.2流程图各阶段程序界面的变化4.程序源代码145・设计总结1

2、.题目要求与开发环境1.1题目目的与要求题目的目的:通过实现哲学家进餐问题的同步深入了解和掌握进程同步和互斥的原理。题目要求:简单描述哲学家进餐问题。可设计五个哲学家,每人都需要一双筷子。哲学家有两种活动:吃饭和思考,需要成功设计让每个哲学家能够顺利吃饭。1-2题目开发环境系统平台:Windows7旗舰版实现语言:C#开发工具:MicrosoftVisuaIStudio20103开发原型图运学家1.4设计界面截图只是为了体现算法,关键我不会美工,所以界面比较简单■!?Forml

3、=

4、

5、回

6、亦开始进辍哲学家]筷子筷子哲学家2哲学家5筷子筷子哲学家3哲学家4筷子2•总体设计

7、思想以及相关知识2.1总体设计思想哲学家的生活就是思考和吃饭,即思考,饿了就吃,吃饱了再思考,循坏往复。要求是:每一个哲学家只有在拿到位于他左右两侧的筷子后,才能够就餐;哲学家不能拿着一只筷子不放手,也不能从其他哲学家手中抢夺筷子;哲学家每次吃饱后必须放下他手中的两只筷子恢复思考,不能强抓住筷子不放。设计一个程序,能够显示当前各哲学家的状态和桌上筷子的使用情况,并能无死锁的推算出下一状态各哲学家的状态和桌上筷子的使用情况。即设计一个能安排哲学家正常生活的程序。开始本来是准备用C++设计的,但是最近开始自学C#,发现微软封装了很多基类,调用十分方便。可以很简单的设计出程序

8、,正好练习一下,所以就用C#设计程序了,同时在百度查找了很多资料。2.2本程序涉及到的概念2.2.1简介进程同步是一个操作系统级别的概念,是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步。2.2.2临界资源在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源)。但对于某些资源来说,其在同一时间只能被一个进程所占用。这些一次只能被一个进程所占用的资源就是所谓的临界资源。典型的临界资源比如物理上的打印机,或是存在硬盘或内存

9、中被多个进程所共享的一些变量和数据等(如果这类资源不被看成临界资源加以保护,那么很有可能造成丢数据的问题)。对于临界资源的访问,必须是互诉进行。也就是当临界资源被占用时,另一个申请临界资源的进程会被阻塞,直到其所申请的临界资源被释放。而进程内访问临界资源的代码被成为临界区。对于临界区的访问过程分为四个部分:1•进入区:查看临界区是否可访问,如果可以访问,则转到步骤二,否则进程会被阻塞2.临界区:在临界区做操作3.退出区:清除临界区被占用的标志4.剩余区:进程与临界区不相关部分的代码2.2.3进程同步进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线

10、程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。比如说进程A需要从缓冲区读取进程B产生的信息,当缓冲区为空时,进程B因为读取不到信息而被阻塞。而当进程A产生信息放入缓冲区时,进程B才会被唤醒。概念如下图所示。2.2.4进程互斥进程互斥是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。比如进程B需要访问打印机,但此时进程A占有了打印机,进程B会被阻塞,直到进程A释放了打印机资源,进程B才可以继续执行。概念

11、如下图所示。进程B2.2.5实现临界区互斥的基本方法硬件实现方法通过硬件实现临界区最简单的办法就是关CPU的中断。从计算机原理我们知道,CPU进行进程切换是需要通过中断来进行。如果屏蔽了中断那么就可以保证当前进程顺利的将临界区代码执行完,从而实现了互斥。这个办法的步骤就是:屏蔽中断-执行临界区••开中断。但这样做并不好,这大大限制了处理器交替执行任务的能力。并且将关中断的权限交给用户代码,那么如果用户代码屏蔽了中断后不再开,那系统岂不是跪了?还有硬件的指令实现方式,这个方式和接下来要说的信号量方式如出一辙。但是通过硬件来实现,这里就不细说

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。