面试题答案
一键面试在操作系统哲学家问题的改进算法中,通常采用以下机制来避免死锁:
- 资源分配图算法: 原理:通过检测资源分配图中是否存在环来判断是否可能发生死锁。若存在环且环中每个资源类型只有一个实例时,死锁必定发生;若存在环但环中有多个同类资源实例,不一定发生死锁。通过算法对资源分配图进行化简,当图中所有进程都能化简完成时,系统处于安全状态,否则可能发生死锁。
- 银行家算法: 原理:把操作系统视为银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统在进行资源分配前,先判断此次分配是否会使系统进入不安全状态。若会进入不安全状态则拒绝分配,只有在分配后系统仍处于安全状态时才进行分配。安全状态是指系统能按照某种顺序为每个进程分配其所需资源,直到每个进程都能运行完成。
- 破坏死锁的必要条件:
- 破坏互斥条件:原理:允许资源共享,使进程不必互斥地使用资源。但这只适用于某些可共享资源,如只读文件,对于打印机等不可共享资源不适用。
- 破坏占有并等待条件:原理:进程在请求新资源前,必须先释放已占有的所有资源。这样可避免进程在占有部分资源的情况下又等待其他资源,从而打破死锁的条件。
- 破坏不可剥夺条件:原理:当一个进程占有了某些资源并请求新资源得不到满足时,可剥夺该进程已占有的资源分配给其他进程。但实现时要考虑对进程运行的影响及恢复进程运行的代价等。
- 破坏循环等待条件:原理:对资源类型进行线性排序,规定进程只能按照资源序号递增的顺序请求资源,这样可避免形成资源请求环路,从而防止死锁。