操作系统课程设计说明书--基于Linux的进程之间通信
-
资源ID:1449693
资源大小:586.50KB
全文页数:19页
- 资源格式: DOC
下载积分:100金币
快捷下载

账号登录下载
三方登录下载:
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
|
操作系统课程设计说明书--基于Linux的进程之间通信
1、 操作系统操作系统课程课程设计设计 说说 明明 书书 学学 院 、 系院 、 系 : 软件学院 专专 业业: 软件工程 学学 生生 姓姓 名:名: 学学 号:号: 设设 计计 题题 目目: 基于 Linux 的进程之间通信 实现信号量通信机制(哲学家进餐) 起起 迄迄 日日 期期: 2015 年 12 月 28 日- 2016 年 1 月 8 日 指指 导导 教教 师师: 2015 年 12 月 25 日 1 1 需求分析需求分析 1.11.1 小组的拿到的任务是:小组的拿到的任务是: 设计内容: (1) 实现管道通信,要求见 P183 习题(3) 。 (2)(2) 实现信号量通信机制,要求见
2、实现信号量通信机制,要求见 P191P191 习题(习题(3 3) 。) 。 (3) 实现消息缓冲通信机制,要求见 P197 习题。 (4) 实现共享内存区通信机制,要求见 P201 习题(2) 。 要求: (1) 用 Linux 中进程控制系统调用函数来创建进程(线程) 。 (2) 输出进程通信时同步的说明信息。 1.21.2 小组分工小组分工我拿到的题目是:我拿到的题目是:(2) 实现信号量通信机制,要求见 P191 习题(3) 。 1.31.3 题目的要求如下:题目的要求如下: 1.3.1.3.1.1.哲学家进餐问题描述:哲学家进餐问题描述: 设有 5 个哲学家,共享一张放有 5 把椅子
3、和 5 把叉子的圆桌,每人分得一把椅子。哲学 家们在肚子饥饿时才试图分两次从两边捡起两把叉子就餐。 条件: 1.每个人只有拿到两把叉子时,哲学家才能吃饭 2.如果叉子已在他人手上,则哲学家必须等到他人吃完后才能拿起叉子 3.任性的哲学家在自己未拿到两把叉子吃饭之前,绝不放下自己手中的叉子 1.3.21.3.2 问题:问题: 1.1.什么情况下什么情况下 5 5 个哲学家全部都吃不上饭?个哲学家全部都吃不上饭? 答:当 5 个哲学家每人手中都拿到了 1 把叉子(共 5 把) ,即不肯放下自己手中的叉子又想 要得到左右邻居的叉子时, 每个哲学家永远拿不到两把叉子, 所有哲学家都在等待另一把叉 子,
4、就会导致这 5 个哲学家谁都吃不上饭。也就是产生死锁后的情况。 2.2.编程实现没有人饿死(永编程实现没有人饿死(永远拿不到两个叉子)的算法。远拿不到两个叉子)的算法。 答:程序请看代码实现。 分析:没有人饿死,就是不允许出现死锁的情况(5 个哲学家每人 1 把叉子) 2 1.3.31.3.3 解决死锁的方法有三种:解决死锁的方法有三种: 1.至多允许四位哲学家同时去拿左边的叉子, 最终保证至少有一位哲学家能够进餐, 并 且在用毕时能释放出他用过的两只叉子,从而使更多哲学家能够进餐; 2.规定当哲学家的左右两只叉子均可用时,才允许他拿起叉子进餐; 3.规定奇数号的哲学家先拿他左边的叉子, 然后再去拿他右边的叉子, 而偶数号哲学家 则相反。五位哲学家都先竞争奇数号叉子,获得后再竞争偶数号叉子,最终总有一位哲学家 会因为获得两只叉子而进餐。 1.3.41.3.4 我采用的我采用的解决死锁问题的解决死锁问题的方法方法 我采用的解决死锁的方法是第二种,即在哲学家拿起叉子前先判断他左右邻居的情况, 只要左右邻居中有一位正在进餐 (叉子已经被邻居拿到, 邻