华中科技大学电信系操作系统实验报告

上传人:公**** 文档编号:549286461 上传时间:2023-10-11 格式:DOC 页数:2 大小:37.50KB
返回 下载 相关 举报
华中科技大学电信系操作系统实验报告_第1页
第1页 / 共2页
华中科技大学电信系操作系统实验报告_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《华中科技大学电信系操作系统实验报告》由会员分享,可在线阅读,更多相关《华中科技大学电信系操作系统实验报告(2页珍藏版)》请在金锄头文库上搜索。

1、实验一:哲学家就餐问题通信0701张开越U200713562一、 实验目的:1. 熟练使用VC+6.0编译环境,调试并正确运行程序。2. 理解哲学家就餐问题中出现的问题,进而掌握死锁的必要条件。3. 理解源程序中产生和防止死锁的算法,及相关窗口操作。4. (选做)为哲学家就餐问题提供解决方案,并用C语言实现。二、 实验原理:1. 问题描述:有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子每个哲学家的行为是思考,感到饥饿,然后吃通心粉.为了吃通心粉,每个哲学家必须拿到两只筷子,并且每个人只能直接从自己的左边或右边去取筷子。2. 防止死锁发生的分配方式:仅

2、当一个哲学家左右两边的筷子都可用时,才允许他拿筷子。这样要么一次占有两只筷子(所有线程需要的资源)进行下一步的吃通心粉,然后释放所有的资源;要么不占用资源,这样就不可能产生死锁了。3. 产生死锁的分配方式:当筷子(资源)可用时,先分配左边的筷子,等待一会后再分配右边的筷子,由于这个过程中,左边的筷子一直没有释放,就有可能产生死锁了。4. 程序运行说明:程序运行过程中会弹出一个MessageBox提示操作者操作:1第一个对话框用于选择运行模式a选择yes 表示采用的是运行的防止死锁的方式,这样的话整个程序可以一直运行下去,不会产生死锁。b选择no 表示运行产生死锁的方式会弹出第二个对话框。2第二

3、个对话框用于选择运行时,线程运行的时间a. 选择 res 线程时间比较短,很快就可以死锁b选择no 线程时间跟选择yes 时候的时间差不多,产生死锁的时间稍微长一点。三、 实验过程及分析1. 伪码代码:1) 不发生死锁的方式(要么一下占用两支筷子,要么不占用 )var mutexleftchopstick,mutexrightchopstick;beging: resting; waiting; p(mutexleftchopstick); /先改变左手筷子信号量 p(mutexrightchopstick); /马上改变右手筷子信号量 GetResource(leftchopstick,ri

4、ghtchopstick); eating; v(mutexleftchopstick); v(mutexrightchopstick);end2) 发生死锁的方式(一旦可以占用筷子,就马上占用)var mutexleftchopstick,mutexrightchopstick;beging: resting; waiting; p(mutexleftchopstick); /改变左手筷子信号量 GetResource(leftchopstick); /获取左手筷子 p(mutexrightchopstick); /改变右手筷子信号量 GetResource(rightchopstick);

5、 /获取右手筷子 eating; v(mutexleftchopstick); v(mutexrightchopstick);end2. 代码分析:1) 不发生死锁的方式:先确定两只筷子均没被占用才获取筷子,这样就打破了死锁的必要条件。2) 发生死锁的方式:有筷子即占用,看似效率很高,但因为资源有限,且不可抢占,很容易发生死锁。3. (选做)另种死锁解决方案:规定其中一名哲学家先改变右手筷子的信号量,先获取右手筷子。这样,这名哲学家左手的筷子就有可能空闲出来,成为左边科学家的空闲右手筷子,此一环永远不会发生死锁。四、 实验总结:本实验很考验对C语言程序的阅读能力,尽管事先知道程序的算法原理,但真正从大量代码中找出核心算法还是需要花些功夫。体会到了程序员编写程序的时候注释的重要性。 也考虑到解决死锁的办法绝不止源程序中的和上面列举的这两种方法,在不加任何附加条件的情况下,甚至可以列链表,从链表中挑选哲学家占用筷子。但考虑到程序的存储效率和运行效率,源程序所给的代码已经是一个很好的解决办法了。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号