操作系统课程设计说明指导书基于Linu 的进程之间通信中北大学操作系统课程设计说 明 书 学 院 、 系 :软件学院专 业 :软件工程学 生 姓 名:学 号:设 计 题 目 :基于 Linux 的进程之间通信 实现信号量通信机制(哲学家进餐) 起 迄 日 期 :2025 年 12 月 28 日- 2025 年 1 月 8 日指 导 教 师 :何志英 2025 年 12 月 25 日1 需求分析:设计内容:(1) 实现管道通信,要求见 P183 习题(3)
(2) 实现信号量通信机制,要求见 P191习题(3)
(3) 实现消息缓冲通信机制,要求见P197 习题
(4) 实现共享内存区通信机制,要求见P201 习题(2)
要求:(1) 用 Linux 中进程控制系统调用函数来创建进程(线程)
(2) 输出进程通信时同步的说明信息
:(2) 实现信号量通信机制,要求见 P191 习题(3)
::设有 5 个哲学家,共享一张放有 5 把椅子和 5 把叉子的圆桌,每人分得一把椅子
哲学家们在肚子饥饿时才试图分两次从两边捡起两把叉子就餐
条件:,哲学家才能吃饭,则哲学家必须等到他人吃完后才能拿起叉子,绝不放下自己手中的叉子:
答:当 5 个哲学家每人手中都拿到了 1 把叉子(共 5 把),即不肯放下自己手中的叉子又想要得到左右邻居的叉子时,每个哲学家永远拿不到两把叉子,所有哲学家都在等待另一把叉子,就会导致这 5 个哲学家谁都吃不上饭
也就是产生死锁后的情况
(永远拿不到两个叉子)的算法
答:程序请看代码实现
分析:没有人饿死,就是不允许出现死锁的情况(5 个哲学家每人 1 把叉子):,最终保证至少有一位哲学家能够进餐,并且在用毕时能释放出他用过的两只叉子,从而使更多哲学家能够进餐;,才允许他拿起叉子进餐;,然后再去拿他右边的叉子,而偶数号哲学家则相反
五位哲学家都先竞争奇数号叉子,