进程的同步与互斥-哲学家问题
2014-09-02 23:55
309 查看
哲学家问题 |
转自http://www.eygle.com/unix/OS.Process.Lock.Latch.Semaphores.htm#1-1 问题描述: 一个房间内有5个哲学家,他们的生活就是思考和进食。房间里有一张圆桌,中间放着一盘通心粉(假定通心粉无限多)。桌子周围放有五把椅子,分别属于五位哲学家每两位哲学家之间有一把叉子,哲学家进食时必须同时使用左右两把叉子。 解答: 进程:philosopher - 哲学家 共有的数据结构&过程: state: array [0..4] of (think,hungry,eat); ph: array [0..4] of semaphore; — 每个哲学家有一个信号量,初值为0 mutex: semaphore; — mutex保护临界区,初值=1 procedure test(i:0..4); { if ((state[i]=hungry) and (state[(i+1)mod 5]<>eating) and (state[(i-1)mod 5]<>eating)) { state[i]=eating; V(ph[i]); } } philosopher(i:0..4): { while (true) { think(); p(mutex); state[i]=hungry; test(i); v(mutex); p(ph[i]); eat(); p(mutex); state[i]=think; test((i-1) mod 5); test((i+1) mod 5); v(mutex); } } |
相关文章推荐
- 进程(线程)间同步互斥经典问题(二)哲学家问题
- 进程同步互斥——不死锁的哲学家问题
- 信号量---解决进程间的同步与互斥问题之1
- 进程的同步,互斥和经典进程同步问题
- linux网络编程之System V 信号量(二):用信号量实现进程互斥示例和解决哲学家就餐问题
- 操作系统清华大学版笔记(十) 信号量、管程、条件互斥、经典同步问题(读者写者、哲学家问题)
- 用PV操作解决进程之间的同步互斥问题
- 操作系统进程同步三大问题:生产者消费者,哲学家进餐,读者写者问题
- 进程(线程)间同步互斥问题(三) 熟睡的理发师问题
- Linux下信号量实现进程同步、互斥(生产者消费者问题)
- 单车道问题 - 进程同步互斥与死锁问题的解决
- 进程(线程)间同步互斥问题(四) 三个烟鬼问题
- 进程同步与互斥之经典问题二
- 操作系统经典同步互斥问题——哲学家就餐
- [经典进程同步问题]哲学家思考
- 进程同步互斥——读者写者问题
- 操作系统经典同步互斥问题——哲学家就餐
- 三个同步与互斥问题之哲学家就餐
- 操作系统进程同步互斥经典问题之读者写者问题
- 操作系统:经典进程同步问题(2)哲学家进餐问题