MST
星途 面试题库

面试题:进程管理之多核处理器下进程与线程的资源分配

多核处理器中,如何有效地为进程和线程分配资源以避免资源竞争和死锁?请详细说明资源分配算法的设计思路,并举例说明可能出现死锁的场景及对应的预防方法。
47.1万 热度难度
操作系统进程管理

知识考点

AI 面试

面试题答案

一键面试

资源分配算法设计思路

  1. 资源分配图算法
    • 维持一个资源分配图,节点表示进程和资源,边表示进程对资源的请求或分配关系。
    • 通过算法(如银行家算法)检测图中是否存在环,若存在环则可能产生死锁,此时不进行资源分配。
  2. 按序分配资源
    • 为所有资源类型分配一个唯一编号。
    • 要求每个进程按照编号递增的顺序请求资源。这样可避免形成环,因为若进程按序请求,就不会出现资源请求的循环依赖。
  3. 资源分配的层次化管理
    • 将资源划分为不同层次,高层次资源依赖低层次资源。
    • 进程先获取低层次资源,再获取高层次资源,释放时反之。这有助于减少资源竞争的复杂性,降低死锁风险。

可能出现死锁的场景及预防方法

  1. 场景
    • 假设有两个进程 P1 和 P2,有资源 R1 和 R2。P1 已经占用了 R1 并请求 R2,P2 已经占用了 R2 并请求 R1,此时两个进程相互等待对方释放资源,形成死锁。
  2. 预防方法
    • 使用资源分配图算法:若采用银行家算法,在 P1 请求 R2 时,系统检查分配后是否安全,发现不安全则拒绝分配,避免死锁。
    • 按序分配资源:若 R1 编号小于 R2,P2 不能先请求 R2 再请求 R1,只能按序先请求 R1,从而避免死锁。