




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告实验名称:哲学家就餐问题班级:信卓1201班姓名:钟远维学号:U日期:2014年10月30日一、 实验目的1、熟练使用VC6.0编译环境,调试并正确运行程序。2、理解哲学家就餐问题中出现的问题,进而掌握死锁的必要条件。3、理解源程序中产生和防止死锁的算法,及相关窗口操作。4、熟悉哲学家就餐问题流程并写出其伪代码二、 实验内容有五个哲学家围坐在一圆桌旁(如图1),桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子。每个哲学家的行为是思考,感到饥饿,然后吃通心粉。为了吃通心粉,每个哲学家必须拿到两只筷子,并且每个人只能直接从自己的左边或右边去取筷子。 图1 图2三、 实
2、验要求1、 程序需有防止死锁发生采取的措施;2、 程序要有产生死锁的分配方式;四、 实验算法实现1、 不发生死锁的方式由源码 gChopstickStateiLeftChopstick = iPhilosopher; gChopstickStateiRightChopstick = iPhilosopher;知基本思路是要么一下子占用两支筷子要么不占用,先确定两只筷子均没被占用才获取筷子,这样就打破了死锁的必要条件。伪代码如下; var mutexleftchopstick,mutexrightchopstick; beging: resting; waiting; p(mutexleftch
3、opstick); /先改变左手筷子信号量 p(mutexrightchopstick); /马上改变右手筷子信号量 GetResource(leftchopstick,rightchopstick); /同时占用左右手筷子 eating; v(mutexleftchopstick); /释放资源 v(mutexrightchopstick); end2、 发生死锁的方式基本思路是有筷子即占用,看似效率很高,但因为资源有限,且不可抢占,很容易发生死锁。源码理解: gDinerStateiPhilosopher = WAITING;/wants chopsticks result = WaitF
4、orSingleObject(gchopStickiLeftChopstick, INFINITE); gChopstickStateiLeftChopstick = iPhilosopher; /得到左手筷子 Sleep(P_DELAY/4); /休眠状态 gDinerStateiPhilosopher = WAITING; /继续等待另一只手筷子 result = WaitForSingleObject(gchopStickiRightChopstick, INFINITE); gChopstickStateiRightChopstick = iPhilosopher; /直到等到右手筷子
5、伪码书写:var mutexleftchopstick,mutexrightchopstick; beging: resting; waiting; p(mutexleftchopstick); /改变左手筷子信号量 GetResource(leftchopstick); /获取左手筷子 p(mutexrightchopstick); /改变右手筷子信号量 GetResource(rightchopstick); /获取右手筷子 eating; v(mutexleftchopstick); v(mutexrightchopstick); end五、 实验运行结果 程序界面说明:通过位图句柄画演
6、示的界面1先画桌子,再画筷子,再画盘子,2再画哲学家:哲学家用圆表示,根据哲学家的状态选择画笔(为resting 状态时为绿色圆圈,为等待或者,就餐时为红色圆圈)3最后画哲学家的手:判断的依据是若筷子的编号和哲学家的编号一直致,那么认为这根筷子属于这个哲学家(筷子资源空闲)那么可以画手表示哲学家获得了这个筷子。(获得资源)六、 实验总结通过本次实验,程序设计的时候应该有适当的避免死锁的产生的算法程序。当避免死锁产生算法不完美时,有锁死产生的时候的死锁分配方式。这些都是在程序设计的时候应该先想好的。通过实践总结,有以下三种方法可以避免一类死锁。一是至多允许4位哲学家同时吃通心面;二是奇数号哲学家先取左边叉子,再取右边叉子;偶数号哲学家先取右边叉子,再取左边叉子;三是每位哲学家取到手边的两把叉子才开始吃通心面,否则一把叉子也不取。本次实验在已给源码的基础上我们主要是理解C语言程序并提高伪代码书写能力;所以第一步是要弄懂这个哲学家就餐问题的算法思路,然后结合课堂上老师对伪代码算法的讲解,我们将思路用伪码总结出来。从这次实验中,我们的另一个收获是对同一个问题的多方向思考。从代码中可以看出不同的分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年通信接入设备项目提案报告
- 2025年血液制剂项目立项申请报告范文
- 2025贵州毕节医学高等专科学校第一批次“人才强市”暨高层次急需紧缺人才引进模拟试卷附答案详解(典型题)
- 合作项目质量与责任承诺书5篇
- 2025年嘉兴海宁市中心医院公开招聘高层次急需卫技人员4人考前自测高频考点模拟试题及参考答案详解
- 行业信誉铸就承诺书9篇
- 2025昆仑数智科技有限责任公司春季高校毕业生招聘15人考前自测高频考点模拟试题及答案详解(易错题)
- 2025年绍兴新昌县卫健系统第一次公开招聘编外人员6人模拟试卷及一套完整答案详解
- 作业保护设计印刷合同7篇
- 经济项目合作协议承诺书(7篇)
- 河南省多校2025-2026学年高三二模语文试题(含答案)(解析版)
- DB15T 4203-2025草原生态环境损害司法鉴定技术规范
- 2025年行政执法人员考试试题库及参考答案
- 2024年公路水运工程试验检测师交通工程真题及答案
- 务人员职业暴露事件处置的法律法规与规范
- 2025-2030固态储氢技术材料突破与商业化应用路径分析
- 2025年辽宁省鞍山市事业单位工勤技能考试题库及答案
- 2025年普通高中学业水平等级性考试(湖北卷)历史试题(含答案)
- 少先队建队日2025全文课件
- 2025年公安部交管局三力测试题库及答案
- 2025低空经济发展及关键技术概况报告
评论
0/150
提交评论