问题
问答题
著名的“哲学家就餐问题”是指:五位哲学家围圆桌就座,桌上每二人之间放一根筷子,任一位哲学家修学中饿了便可且只能拿起左右两边的筷子吃饭,餐后将两根筷子各放回原处,自己也继续做学问,如此往复,即对哲学家Pi(i=0,1,2,3,4)有循环进程Si:
Pi做学问;
Pi取左手的i号筷子和右手的(i+1)rood 5号筷子;
Pi就餐;
Pi将两根筷子分放回原处;
哲学家就餐问题是这样5个进程组成的系统。
请分别用死锁预防、死锁避免、死锁检测与恢复改造系统。
答案
参考答案:死锁预防破坏四个必要条件(其中互斥条件无法破坏),首先破坏占有等待条件:每位拿筷子时必须左右筷子同时申请(资源预分配法),若缺一则不可获得资源分配。破坏非剥夺条件:第i位拿筷子时,若左右邻居中有等待者,则可强行抢夺资源。破坏循环等待:对5根筷子顺序编号,即1、2、3、4、5,每位只能按由小到大的顺序申请(资源顺序分配法)。
死锁避免:每位申请时,先看分配后是否会发生死锁,若不会则分配,否则拒绝分配。如最易发生死锁的情况:已有四位拿到左手的筷子,此时第五位申请左手的筷子,不可分配。
死锁检测与恢复:允许发生死锁,定期检测,若已发生死锁,则剥夺其中一位的资源分配给其他人。