理解死锁的概念,掌握死锁预防方法。 死锁是进程并发执行过程中可能出现的现象,哲学家就餐问题是描述死锁的经典例子。假设有几位哲学家围坐在一张餐桌旁,桌上有吃不尽的食品,每两位哲学家之间摆放着一根筷子,筷子的个数与哲学家的数量相等,每一位哲学家要么思考,要么等待,要么拿起左右两根筷子进餐。本设计假设有五个哲学家和五根筷子,它们的编号都是从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
哲学家就餐问题.docx
2021-05-26 09:00:45 12KB 操作系统
1
基于ucos的哲学家就餐问题源代码,程序,已经运行,点击运行程序即可运行。
2021-04-28 21:59:31 470KB ucos,哲学家就餐,嵌入式
1
设有五个哲学家,共用一张放有五把椅子的餐桌,每人坐在一把椅子上,桌子上有五个碗和五只筷子,每人两边各放一只筷子。哲学家们是交替思考和进餐,饥饿时便试图取其左右最靠近他的筷子。条件: (1) 只有拿到两只筷子时,哲学家才能吃饭。 (2) 如果筷子已被别人拿走,则必须等别人吃完之后才能拿到筷子。 (3) 任意一个哲学家在自己未拿到两只筷子吃饭前,不会放下手中拿到的筷子。
2021-04-13 14:03:54 48KB 课程设计 哲学家 问题
1
用JAVA实现哲学家就餐问题,本源码中采用的是奇数号哲学家先拿左手后拿右手,而偶数号哲学家采用先拿右手后拿左手的策略来预防死锁。
2020-05-16 20:48:53 5KB JAVA 哲学家就餐
1
哲学家进餐问题是一个多线程运用的经典例子,涉及到线程同步/互斥,临界区访问问题以及一个避免死锁的解决方法。。。。
2020-05-16 20:46:16 6KB java
1
文档为实验报告,运行环境是ubantu,文档包含哲学家就餐问题的代码,使用三种方法解决哲学家就餐问题,顺序资源法,加房间法和P_sim法,希望对大家有帮助
2020-05-05 16:43:42 191KB P_sim
1
C语言解决哲学家就餐问题
2020-03-29 03:06:08 2KB C语言 哲学家就餐
1