面试题答案
一键面试资源分配和回收机制
- 资源分配图算法:通过构建资源分配图,检查是否存在环路来检测死锁。如果存在环路,意味着可能出现死锁。可以使用深度优先搜索(DFS)等算法遍历资源分配图来查找环路。
- 剥夺资源:从死锁进程中剥夺某些资源,分配给其他进程以打破死锁。选择剥夺资源的进程时,通常要考虑进程优先级、已占用资源数量、进程执行进度等因素。例如,优先剥夺优先级低且占用资源少的进程的资源。
- 撤销进程:直接撤销处于死锁状态的进程,释放其占用的所有资源。可以按照一定策略选择撤销进程,比如撤销执行时间短且未完成重要任务的进程,或者按照进程优先级顺序撤销。
银行家算法辅助死锁恢复
- 检测死锁:银行家算法本身可用于检测系统是否处于安全状态。若系统处于不安全状态,则可能存在死锁风险。在死锁恢复中,通过不断检查系统状态是否安全,确定死锁是否依然存在。
- 指导资源分配:当需要剥夺资源或撤销进程来恢复死锁时,银行家算法可以帮助确定剥夺哪些资源以及分配给哪些进程。算法会计算每个进程请求资源后系统是否仍能保持安全状态。优先选择那些请求资源后能使系统恢复到安全状态的资源分配方案,从而辅助打破死锁。