面试题答案
一键面试常见权衡策略
- 资源分配图算法:使用资源分配图算法(如银行家算法),在分配资源前检查系统是否处于安全状态。虽然这能有效避免死锁,但每次资源请求都需进行复杂计算,可能降低资源分配速度,影响利用率。权衡在于在保证安全(避免死锁)前提下,优化算法性能以减少对资源利用率的影响。
- 资源预分配:进程启动时就分配其所需的全部资源。这样可保证进程不会因资源不足而死锁,但会导致资源长时间被占用,其他进程无法使用,严重降低资源利用率。权衡是针对资源需求可预测且相对稳定的进程使用该策略,对需求变化大的进程不采用,以此平衡死锁避免和资源利用率。
- 死锁检测与恢复:不进行实时死锁避免,而是定期检测死锁,发现死锁后采取回滚进程、剥夺资源等方式恢复。此方法可提高资源利用率,因为资源能更灵活分配,但死锁发生后处理成本高。权衡在于合理设置检测周期,周期短检测频繁影响性能,周期长死锁存在时间久,对系统影响大。
设计系统时的平衡方法
- 资源分配策略调整
- 动态分配与静态分配结合:对于短期使用且需求明确的资源采用动态分配,提高利用率;对长期使用且需求稳定的资源采用静态分配,避免死锁。
- 分级分配:将资源按重要性和使用频率分级,优先保证重要资源的分配,对不重要资源可采用更灵活的分配策略,在避免死锁同时提高整体资源利用率。
- 进程调度策略调整
- 优先级调度:给重要进程、资源需求少的进程更高优先级。重要进程优先获得资源,避免因等待资源长时间阻塞影响系统功能;资源需求少的进程快速执行完毕释放资源,提高资源周转率,从而在一定程度上平衡死锁避免与资源利用率。
- 公平调度:确保每个进程都有机会获得资源,避免某些进程因资源长期被占用而饿死,降低死锁风险,同时维持系统资源的公平使用,保障整体资源利用率。