ImageVerifierCode 换一换
格式:DOC , 页数:2 ,大小:21.51KB ,
资源ID:11661506      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-11661506.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(华中科技大学电信系操作系统实验报告.doc)为本站会员(HR专家)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

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

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语言程序的阅读能力,尽管事先知道程序的算法原理,但真正从大量代码中找出核心算法还是需要花些功夫。体会到了程序员编写程序的时候注释的重要性。 也考虑到解决死锁的办法绝不止源程序中的和上面列举的这两种方法,在不加任何附加条件的情况下,甚至可以列链表,从链表中挑选哲学家占用筷子。但考虑到程序的存储效率和运行效率,源程序所给的代码已经是一个很好的解决办法了。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报