哲学家的生活就是思考和吃饭,即思考,饿了就餐,再思考,循环往复。要求是: 每一个哲学家只有在拿到位于他左右的筷子后,才能够就餐;哲学家只能先拿左边的筷子,再去拿右边的筷子,而不能同时去抓他两边的筷子,也不能从其他哲学家手中抢夺筷子;哲学家每次就餐后必须放下他手中的两把筷子后恢复思考,不能强抓住餐具不放。设计一个程序,能够显示当前各哲学家的状态和桌上餐具的使用情况,并能无死锁的推算出下一状态各哲学家的状态和桌上餐具的使用情况。即设计一个能安排哲学家正常生活的程序。 3.2 问题描述 可能出现死锁问题,因为当五个哲学家都饥饿时,都拿着一支筷子,这样就可能五个哲学家都用不上餐。 3.3 解决方案(以下解决方案均可,实现一种) 3.3.1 最多允许4个哲学家同时坐在桌子周围。 3.3.2 给所有哲学家编号,奇数号的哲学家必须首先拿左边的筷子,偶数号的哲学家则反之。 3.3.3 为了避免死锁,把哲学家分为三种状态,思考,饥饿,进食,仅当一个哲学家左右两边的筷子都可用时,才允许他拿筷子,并且一次拿到两只筷子,否则不拿。
2021-06-14 22:05:32 82KB 死锁和饥饿 哲学家就餐
1
该资源为2019年湖南大学708西方哲学史考研真题,资源高清无水印哦!
哲学家进餐问题的课程设计报告,包括课程设计背景,程序流图,源代码,分析,注解,以及课程设计总结。相当完整
2021-06-11 09:50:55 454KB
1
使用Linux C 在Visual C++ 下实现的关于哲学家就餐问题
2021-06-10 15:04:07 4KB Linux 哲学家就餐
1
自己亲手做的操作系统课程设计,题目是哲学家进餐问题,里面有进程线程的设计,报告+源代码都有!
2021-06-06 22:47:09 60KB 操作系统 课程设计 哲学家 进餐
1
操作系统实习文档,5个哲学家进餐问题的源码
2021-06-06 22:42:07 31KB 哲学家进餐
1
哲学与人生第三版第十一课社会理想与个人理想
理解死锁的概念,掌握死锁预防方法。 死锁是进程并发执行过程中可能出现的现象,哲学家就餐问题是描述死锁的经典例子。假设有几位哲学家围坐在一张餐桌旁,桌上有吃不尽的食品,每两位哲学家之间摆放着一根筷子,筷子的个数与哲学家的数量相等,每一位哲学家要么思考,要么等待,要么拿起左右两根筷子进餐。本设计假设有五个哲学家和五根筷子,它们的编号都是从0到4。 如果每位哲学家都拿起左边的筷子,就会发生死锁。 为了防止死锁,可以采用资源预分配法或者资源按序分配法。资源预分配法是指进程在运行前一次性地向系统申请它所需要的全部资源,如果系统当前不能够满足进程的全部资源请求,则不分配资源, 此进程暂不投入运行,如果系统当前能够满足进程的全部资源请求, 则一次性地将所申请的资源全部分配给申请进程。资源按序分配法是指事先将所有资源类全排序, 即赋予每一个资源类一个唯一的整数,规定进程必需按照资源编号由小到大的次序申请资源。 在哲学家就餐问题中,要采用资源预分配法只需让每个哲学家同时申请左右两根筷子。要采用资源按序分配法只需规定每个哲学家先申请左右两根筷子中编号小的筷子,再申请编号大的筷子。
2021-06-05 20:46:56 155KB 哲学家就餐
1
哲学家就餐问题java swing演示版,直观演示哲学家进餐情况。 基于 java 1.6, eclipse kepler书写 直接运行压缩包内:DiningPhilosophers.jar文件,或者把项目导入eclipse运行DiningPhilosophers.java程序
2021-06-01 16:44:17 966KB 哲学家就餐 java swing UI
1
餐饮哲学家GUI Java中GUI的进餐哲学家问题。 使用信号量解决死锁。
2021-05-31 19:04:02 350KB Java
1