MST

星途 面试题库

面试题:进程管理之高级难度:并发进程执行模型与资源分配

在多进程并发执行的环境中,假设存在进程A、B、C,它们分别需要资源R1、R2、R3来完成任务。进程A持有资源R1并请求R2,进程B持有资源R2并请求R3,进程C持有资源R3并请求R1,此时会出现什么问题?如何避免这种问题?请详细说明解决方法背后的原理。
17.4万 热度难度
操作系统进程管理

知识考点

AI 面试

面试题答案

一键面试

出现的问题

此时会出现死锁问题。因为每个进程都持有一个资源并等待获取另一个进程所持有的资源,形成了一个循环等待的局面,导致所有进程都无法继续执行。

避免该问题的方法及原理

  1. 破坏死锁的四个必要条件
    • 互斥条件:一般资源本身的特性决定了互斥条件难以破坏,但在某些场景下,若资源可以共享使用,可破坏此条件。例如,一些只读文件资源,多个进程可同时读取,这样就不存在因互斥使用而导致死锁的可能。原理是通过改变资源使用方式,使进程无需独占资源,从而打破死锁形成的基础。
    • 占有并等待条件:可以要求进程一次性申请所需的所有资源。比如在进程启动前,系统检查其所有资源需求并一次性分配给它,在进程运行过程中不再申请新资源。这样就不会出现进程持有部分资源又等待其他资源的情况。原理是避免进程在持有资源的情况下等待其他资源,从而打破死锁形成的条件。
    • 不可剥夺条件:允许系统从占有资源的进程中剥夺资源分配给其他进程。例如,当一个高优先级进程需要某个资源时,系统可以剥夺低优先级进程持有的该资源分配给高优先级进程。原理是通过打破资源一旦分配就不可剥夺的限制,使得资源能够在进程间动态调整,避免死锁。
    • 循环等待条件:对资源进行编号,规定进程只能按照编号递增(或递减)的顺序申请资源。比如R1编号为1,R2编号为2,R3编号为3,进程只能先申请R1,再申请R2,最后申请R3 。这样就不会形成循环等待的情况。原理是通过强制进程按特定顺序申请资源,打破死锁所需的循环等待关系。
  2. 资源分配图算法:如银行家算法。系统通过模拟资源分配过程,在每次分配资源前检查此次分配是否会导致系统进入不安全状态(可能产生死锁的状态)。若会进入不安全状态,则不进行此次分配;若不会,则进行分配。原理是通过对资源分配进行预检查,确保系统始终处于安全状态,避免死锁的发生。