实验一 哲学家就餐问题
更新时间:2023-11-11 21:05:01 阅读量: 教育文库 文档下载
- 实验一小推荐度:
- 相关推荐
实验一 哲学家就餐问题
一、 实验目的
1. 2. 3. 4.
熟练使用VC++6.0编译环境,调试并正确运行程序。 熟悉哲学家就餐问题流程。
理解哲学家就餐问题中出现的问题,进而掌握死锁的必要条件。 熟悉源程序中产生和防止死锁的算法,及其相关窗口操作。
二、 实验原理
1. 问题描述:
有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子,每个哲学家的行为时思考,饥饿,然后吃通心粉,每个哲学家必须拿到两只筷子,并且每个人只能直接从自己的左边或右边取筷子。 2. 防止死锁发生的分配方式:
仅当一个哲学家左右两边的筷子都可用时,才允许他拿筷子。这样要么一次占有两只筷子(所有线程需要的资源)进行下一步吃通心粉,然后释放所有的资源;要么不占用资源,这样就不可能产生死锁了。 3. 产生死锁的分配方式:
当筷子(资源)可用时,先分配左边的筷子,等待一会后再分配右边的筷子,由于这个过程中,左边的筷子一直没有释放,就可能产生死锁了。 4. 程序运行说明:
程序运行过程中会弹出一个MessageBox提示操作者操作: 1) 第一个对话框用于选择运行模式
a. 选择yes表示采用的是运行的防止死锁的方式,这样的话整个程序可以一
直运行下去,不会产生死锁。
b. 选择no表示运行产生死锁的方式会弹出第二个对话框。 2) 第二个对话框用于选择运行时,线程运行的时间
a. 选择yes线程时间比较短,很快就可以死锁。 b. 选择no线程时间跟选择yes时的时间差不多,产生死锁的时间稍微长一点。
三、 实验过程及分析
1. PhilosopherThread(LPVOID pVoid)函数伪代码 1) 不死锁方式
Var mutexleftchopstick,mutexrightchopstick; Beging: Resting; Waiting;
P{mutexleftchopstick}; P{mutexrightchopstick};
GetResource{leftchopstick,rightchopstick}; Eating;
V{mutexleftchopstick};
V{mutexrightchopstick};
End
2)发生死锁方式
Var mutexleftchopstick,mutexrightchopstick; Beging: Resting; Waiting;
P{mutexleftchopstick};
GetResource{leftchopstick}; P{mutexrightchopstick};
GetResource{rightchopstick}; Eating;
V{mutexleftchopstick};
V{mutexrightchopstick}; End
2. 代码分析
1) 不发生死锁时,哲学家迅速同时抢占两个筷子的资源,而若是不能同时抢占两
只筷子则继续等待,知道有两只筷子空闲则抢占,这样就打破了死锁的必要条件。
2) 发生死锁时,因哲学家有左边的筷子空闲就抢占,再等待抢占右边的筷子,这
样就有可能发生所有哲学家同时发现自己左边的筷子都空闲,都占用了左边的筷子而等待右边的筷子,此时右边的筷子又都被别的哲学家占用,这样就进入永远等待状态,即发生了死锁。
四、 思考题
其他解决死锁方法:
1. 引入一个对各个进程的调度者,当哲学家饥饿时向该调度者申请用餐,而调度
者根据哲学家面前是否同时有两只筷子空闲来判断哲学家此时能否就餐,能则占用这两只筷子并且让哲学家就餐,不能则让哲学家继续等待。引入一个调度者能很有效地管理进程资源的分配。
2. 可以让哲学家按一定顺序就餐,也可以避免死锁,但这样效率不高。
五、 实验小结
通过这次上机实验,我对哲学家就餐问题有了更深入的了解,也学习到了具体C语言代码是如何实现这个问题的演示的。同时更重要的是对资源的调度分配有了更深的思考,如何有效合理地分配资源,如何避免死锁,这都是我们再编写某些进程代码时需要考虑到的问题,而这次实验使我掌握了几种避免死锁的资源分配方法,对此我感到受益匪浅。
正在阅读:
实验一 哲学家就餐问题11-11
铝合金钓鱼椅项目融资商业计划书(包括可行性研究报告+资金方案规04-06
初一上语文教案合集04-15
川农17春秋《市场营销学(本科)》17年3月作业考核01-29
多媒体实验报告 - 图文07-11
幼儿园科学教案(精选多篇)09-26
手机多米音乐如何设置音效02-10
锦州市中考满分作文-梅花开在最寒时03-25
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 就餐
- 哲学家
- 实验
- 问题
- 中国农贸市场现状
- 关于甘肃省运营车辆二级维护额20120328
- 人事制度考试试题
- 山东建筑大学统计学整理
- 2012课标版高考历史复习方案配套月考试题5A
- 教育科研微型课题申请评审书(含方案)(理科组) - 图文
- 记事阅读
- 大数据所能做到的三大错误假设
- 组织培养实验一1
- 飞机空调车操作维护维修手册 - 图文
- 武汉大学博士学位论文撰写格式
- 统计学案例
- 财经应用文写作试题及答案3
- 人教版高一历史必修一 第九课 资本主义政治制度在欧洲大陆的扩展 说课稿
- 小学英语课堂教学模式实施方案
- 2018-2024年中国整体橱柜行业市场调查及投资前景预测报告
- 各县、市、区互检互查通报
- 函数的周期性历年经典习题
- 中国园林艺术史作业题
- 电子技术练习册 - 图文