操作系统实验报告(哲学家问题)
更新时间:2023-10-16 09:30:01 阅读量: 综合文库 文档下载
- 操作系统推荐度:
- 相关推荐
操作系统实验报告: 哲学家问题 管理系 2001级工程管理 朱毅 0701013
操作系统实验报告
实验者:朱毅 学号:0701013
实验题目:哲学家问题
设有5个哲学家,共享一张放有5把椅子的桌子,每人分得一把椅子。但是,桌子上总共只有5支筷子,在每人两边分开各放一支。哲学家们在肚子饥饿时才试图分两次从两边拾起筷子就餐。
条件:
(1) 只有拿到两支筷子时,哲学家才能吃饭。
(2) 如果筷子已在他人手上,则哲学家必须等他人吃完之后才能拿到筷子。 (3) 任一哲学家在自己未拿到两支筷子吃饭之前,决不放下自己手中的筷子。 试:
(1) 描述一个保证不会出现两个邻座同时要求吃饭的通信算法。
(2) 描述一个既没有两邻座同时吃饭,又没有人饿死(永远拿不到筷子)的算法。 (3) 在什么情况下,5个哲学家全部吃不上饭?
开发环境:Microsoft Visual Foxpro 6.0 算法描述:
数据环境:
表 KUAIZI 相应字段:
筷子号 状态(逻辑型) 使用者桌号 表 ZHEXUEJIA 相应字段:
哲学家名 所属状态 拥有左筷子(逻辑型) 拥有右筷子(逻辑型) 桌号 表 FANGAN 相应字段 方案
表的具体内容请参见 DAIMA.DOC 文件
本程序解决死锁的关键:
从苏格拉底开始往黑格尔依次处理,对每人的处理一次进行到底,从而肯定必然有一人完全占有资源,避免了死锁,其实质就是按照5个哲学家的座位号作为绝对的优先级进行资源的先后分配。
初始状态:选择算法 (以下两算法不同之处用黑体标识) 算法一:
(1) 保证不会出现两个邻座同时要求吃饭的通信算法。
1、 由操作人员按“有人饿了”按钮,控制是否有哲学家肚子饿了。
2、 出现复选框和“确定”按钮,挑选哲学家后,按“确定”后确认选择。当做出
一个选择后,该哲学家左右两边的哲学家则不能被选中(通过对复选框的ENABLED属性控制),若取消选中,则该哲学家左右两边的哲学家 (在该哲学家的另一邻居也未被选中为前提) 还原为可选状态。 3、 “确认”后执行以下步骤:
第 1 页 共 3 页
操作系统实验报告: 哲学家问题 管理系 2001级工程管理 朱毅 0701013
① 从苏格拉底到黑格尔依次检验其是否是此次被选中 ②若是此次被选中,进行以下步骤:
a 改变 表KUAIZI 和 表ZHEXUEJIA 中相应的字段: ZHEXUEJIA:
所属状态由F(Full)改为H(Hungry)
b执行PROG1,分配给这些饥饿的哲学家筷子,若左边有筷子,取之,并标识“拥有左筷子”;若右边有筷子,取之,并标识“拥有右筷子”。 改变表KUAIZI中筷子的状态为.T.(使用中),并标志相应的使用者桌号。
c若哲学家已分配两支筷子,改变桌面筷子的可视化(通过VISIBLE属性控制)
d 在3个时钟控件TIMER中挑选一个未用的,用于控制哲学家吃饭时间倒计时。
4、 时钟控件:
①若时间已经用完(TIMETEMP=0)则进行以下步骤
a修改表ZHEXUEJIA和表KUAIZI,置“拥有左筷子”、“拥有右筷子”为.F.,并改“所属状态”为F(Full),改变相应的筷子状态为.F.(闲) b取消复选框的选中状态,并置为可选 c改变桌面筷子的可视状态
d检验左邻座的左邻座状态是否为‘F’(Full),若为F,则取消左邻居的不可被选中的状态,用同样的方法处理右邻座。
②若时间未用完,继续消耗时间 TIMETEMP=TIMETEMP-1
算法二:
(2) 既没有两邻座同时吃饭,又没有人饿死(永远拿不到筷子)的算法。
1、 由操作人员按“有人饿了”按钮,控制是否有哲学家肚子饿了。
2、 出现复选框和“确定”按钮,挑选哲学家后,按“确定”后确认选择。 3、 “确认”后执行以下步骤:
① 从苏格拉底到黑格尔依次检验其是否是此次被选中 ②若是此次被选中,进行以下步骤:
a 改变 表KUAIZI 和 表ZHEXUEJIA 中相应的字段: ZHEXUEJIA:
所属状态由F(Full)改为H(Hungry)
b执行PROG1,分配给这些饥饿的哲学家筷子,若左边有筷子,取之,并标识“拥有左筷子”;若右边有筷子,取之,并标识“拥有右筷子”。 改变表KUAIZI中筷子的状态为.T.(使用中),并标志相应的使用者桌号。
c若哲学家已分配两支筷子,改变桌面筷子的可视化(通过VISIBLE属性控制)
d 在3个时钟控件TIMER中挑选一个未用的,用于控制哲学家吃饭时间倒计时。
4、 时钟控件:
①若时间已经用完(TIMETEMP=0)则进行以下步骤
a修改表ZHEXUEJIA和表KUAIZI,置“拥有左筷子”、“拥有右筷子”为.F.,并改“所属状态”为F(Full),改变相应的筷子状态为.F.(闲) b取消复选框的选中状态,并置为可选
第 2 页 共 3 页
操作系统实验报告: 哲学家问题 管理系 2001级工程管理 朱毅 0701013
c改变桌面筷子的可视状态
d检验左邻座的左邻座状态是否为‘F’(Full),若不为F,说明左邻在等待,把筷子分配给他,用同样的方法处理右邻座。
e分配筷子后,判断该邻座是否拥有2支筷子,若拥有,改变表KUAIZI 和表ZHEXUEJIA 的相应字段,改变筷子的可视化,并激活一个未用的时钟用于控制该邻座的倒计时。
②若时间未用完,继续消耗时间 TIMETEMP=TIMETEMP-1
(3) 5个哲学家全部吃不上饭的情况:
当有4个或5个哲学家各自占有有一支筷子的时候会出现该情况。
实验小结:
本次实验按照题设要求完成相应的预定目标。通过本次实验中,我在以下方面的认识得以进一步的加强:
1、 通过本程序的编写加深了对死锁问题的认识,并体间接地验了解决的方法。
2、 加深了对程序中全局变量和局部变量区别的认识。 3、 对变量命名还比较凌乱,有待于进一步系统化。
管理科学与工程系 2001级 工程管理 朱毅 0701013 2003年12月12日
第 3 页 共 3 页
正在阅读:
操作系统实验报告(哲学家问题)10-16
夏夜里的音乐会作文400字07-02
材料练习参考答案(全)11-30
美丽的田园作文450字06-28
2010年宁夏中考数学试题及答案08-20
上海世博会对中国的影响03-03
打造童装品牌策划书(三)03-19
大学生择业更应该注重个人兴趣 一辩辩词09-26
基坑支护资料目录09-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 哲学家
- 操作系统
- 实验
- 报告
- 问题