MST

星途 面试题库

面试题:进程管理:执行过程中进程状态转换及调度算法的影响

在进程执行过程中,会经历多种状态转换。请描述这些状态以及状态转换的条件。此外,不同的调度算法(如先来先服务、最短作业优先、时间片轮转等)如何影响进程在这些状态之间的转换以及系统整体性能?
29.8万 热度难度
操作系统进程管理

知识考点

AI 面试

面试题答案

一键面试

进程的状态及转换条件

  1. 就绪(Ready)状态
    • 定义:进程已获得除 CPU 以外的所有必要资源,一旦获得 CPU 就可以立即执行。
    • 转换条件
      • 创建:当一个新进程被创建后,它首先进入就绪状态,等待系统分配 CPU 资源。
      • 阻塞解除:处于阻塞状态的进程,当导致其阻塞的事件完成(如 I/O 操作结束),进程进入就绪状态。
      • 时间片用完:在时间片轮转调度算法中,当进程的时间片用完,它从运行状态转换到就绪状态。
  2. 运行(Running)状态
    • 定义:进程正在占用 CPU 执行其程序代码。
    • 转换条件
      • 调度选择:当调度程序从就绪队列中选择一个进程,该进程从就绪状态转换到运行状态。
      • 时间片用完:在时间片轮转调度算法中,进程运行完分配的时间片后,从运行状态转换到就绪状态。
      • 阻塞:当进程需要等待某一事件发生(如 I/O 请求、信号量获取等)时,从运行状态转换到阻塞状态。
      • 抢占:在抢占式调度算法(如优先级调度且新进程优先级更高等情况)下,运行进程被剥夺 CPU,转换到就绪状态。
  3. 阻塞(Blocked)状态
    • 定义:进程因等待某一事件(如 I/O 操作完成、信号量等)而暂时无法执行,此时进程放弃 CPU。
    • 转换条件
      • 等待事件:当进程发起 I/O 请求、等待信号量等操作时,从运行状态转换到阻塞状态。
      • 事件完成:当进程等待的事件发生(如 I/O 操作完成、获得信号量等),进程从阻塞状态转换到就绪状态。

不同调度算法对进程状态转换及系统性能的影响

  1. 先来先服务(FCFS, First - Come - First - Served)调度算法
    • 对进程状态转换的影响:按照进程到达就绪队列的先后顺序进行调度。一旦一个进程开始运行,它会一直运行直到完成或者因阻塞而放弃 CPU。因此,新到达的进程只能在就绪队列末尾等待,直到当前运行进程结束或阻塞。
    • 对系统性能的影响:这种算法实现简单,但对于长作业有利,对短作业不利。因为短作业可能需要等待很长时间才能被调度执行,导致平均周转时间和平均等待时间较长,系统的吞吐量相对较低。
  2. 最短作业优先(SJF, Shortest Job First)调度算法
    • 对进程状态转换的影响:调度程序总是选择就绪队列中预计运行时间最短的进程投入运行。这可能导致长作业长时间等待,而短作业能快速得到执行。新的短作业到达就绪队列时,如果其预计运行时间比当前运行进程剩余时间短,在抢占式 SJF 中,当前进程会被抢占回到就绪队列,新短作业进入运行状态。
    • 对系统性能的影响:SJF 可以获得比较短的平均周转时间和平均等待时间,提高系统吞吐量。但它需要预先知道每个作业的运行时间,这在实际中往往难以做到,并且可能导致长作业饥饿。
  3. 时间片轮转(RR, Round - Robin)调度算法
    • 对进程状态转换的影响:系统将 CPU 时间划分成固定大小的时间片,就绪队列中的进程轮流获得一个时间片的 CPU 使用权。当时间片用完,即使进程未执行完毕,也会从运行状态转换到就绪状态,回到就绪队列末尾等待下一次调度。
    • 对系统性能的影响:RR 调度算法能保证每个进程都能在一定时间内得到 CPU 执行机会,响应时间较好,适合交互式系统。但由于频繁的进程上下文切换,会增加系统开销,如果时间片设置过小,会导致上下文切换过于频繁,降低系统效率;时间片设置过大,则会退化为 FCFS 算法,失去公平性。