死锁
概念:多个进程在运行过程中,因争夺资源而造成的一种循环等待的僵局
产生死锁的必要条件
- 互斥条件:某资源在一段时间内只能由一个进程占有
- 不可抢占条件:进程已获得的资源,在未使用完之前,不能被抢占,只能在使用完时自己释放
- 占用且申请条件:进程至少占有一个资源,但又申请新的资源
- 循环等待:存在一个进程之间互相等待的循环
死锁预防
- 打破互斥条件:即允许多个进程同时访问某些资源。但有些资源是不允许同时被访问的,如打印机等等,这是由资源本身的属性所决定的。所以,这种办法并无实用价值。
- 打破不可抢占条件:即允许进程强行从占有者那里抢占某些资源。就是说,当一个进程已占有了某些资源,它又申请新的资源,但不能立即被满足时,它必须释放所占有的全部资源,以后再重新申请。但这种方法实现起来比较困难,会减低系统性能
- 打破占有且申请条件:实施资源预先分配策略。即进程在运行前一次性的向系统申请它所需要的全部资源,如果全部资源得不到满足,则不分配任何资源,此进程暂不运行。缺点:1.进程运行所需的全部资源是不好预测的。2.资源的利用率低。3.降低了进程的并发性,进程延迟运行
- 打破循环条件:实施资源有序分配策略。即把所有资源进行线性排队,并赋予不同的序号,所有进程对资源的请求必须严格按照资源序列号递增的次序提出。缺点:1.给所有资源进行编号,增加了系统的开销。2.为了遵循按序号申请的次序,要提前申请暂不使用的资源,增加了进程对资源的占用时间。