先,介绍一个由于共享资源而产生死锁的例子:
设系统有一台打印机(R1),一台读卡机(R2),两进程共享这两台设备。
用信号量S1表示R1是否可用,初值为1;
用信号量S2表示R2是否可用,初值为1;
这两个进程在并发执行过程中,可能会发生 死锁。大家可以思考一下,如何修改A、B进程 才不会发生死锁。
|
| ||||||||||||||||
|
| |||||||||||||||||||||||
资源,释放则相反(破坏环路等待条件)
预防死锁的几种策略,会严重地损害系统性能。因此在避免死锁时,要施加较弱的限制,从而获得 由于在避免死锁的策略中,允许进程动态地申请资源。因而,系统在进行资源分配之前预先计算 资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,进程等 待。其中最具有代表性的避免死锁算法是银行家算法。
当发现有进程死锁后,便应立即把它从死锁状态中解脱出来,常采用的方法有:
消除为止;所谓代价是指优先级、运行代价、进程的重要性和价值等。 |
|
死锁:指多个进程因竞争共享资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再 | |
安全状态与不安全状态:安全状态指系统能按某种进程顺序来为每个进程分配其所需资源,直 |