操作系统经典进程同步问题之哲學家进餐问题
1.问题描述:有五位哲学家它们的生活方式是交替的进行思考和进餐。哲学家门共用一张圆桌分别坐在周围的五张椅子上。在圆桌上有五只碗和五根筷子平时哲学家进行思考,饥饿的时候视图取其左右的靠他最近的筷子只有当拿到两根筷子时才能进餐。
2.利用记录型信号解决哲学家进餐问题
chopstick:筷子是临界资源所以设置筷子为信号
量又因为有5只筷子所以定义信号量数组,切互斥所以初始值設置为1此外哲学家(进程)对筷子的操作相同。
存在的问题:当哲学家都成功的拿起左边的筷子时都处于“等待”状态进而发生死锁嘚问题。
1)至多只允许四位哲学系同时去拿左边的筷子最终能保证至少有一位哲学家能够进餐,并在用完时释放出他用过的两根筷子
2)当哲学家的左、右两根筷子均可用时,才允许他拿起筷子进餐
3)规定奇数号哲学家先拿起他左边的筷子,然后再去拿他右边的筷子;而偶数號则相反按此规定,总会有一位哲学家能进餐并在使用完后释放筷子。
4.利用AND信号量机制解决哲学家进餐问题