MST
星途 面试题库

面试题:进程管理之进程状态转换原理

请详细描述进程在运行态、就绪态和阻塞态之间转换的条件和过程,并举例说明在哪些实际场景下会发生这些状态转换。
33.5万 热度难度
操作系统进程管理

知识考点

AI 面试

面试题答案

一键面试

运行态、就绪态和阻塞态转换条件及过程

  1. 运行态 -> 就绪态
    • 条件:时间片用完或有更高优先级的进程进入就绪队列。
    • 过程:当进程的时间片用完,调度器会暂停当前进程的执行,将其状态从运行态变为就绪态,并把它放入就绪队列。若有更高优先级进程进入就绪队列,调度器可能会抢占当前运行进程的CPU,将其置为就绪态。
  2. 运行态 -> 阻塞态
    • 条件:进程等待某种事件(如I/O操作完成、信号量获取等)发生。
    • 过程:当进程发起I/O请求(如读取文件),由于I/O操作速度慢,进程不能继续执行,于是操作系统将该进程状态改为阻塞态,并把它放入阻塞队列,此时进程让出CPU。
  3. 阻塞态 -> 就绪态
    • 条件:所等待的事件发生(如I/O操作完成、信号量可用等)。
    • 过程:当阻塞进程等待的事件完成,比如I/O操作结束,操作系统会将该进程从阻塞队列移到就绪队列,其状态变为就绪态,等待CPU调度执行。
  4. 就绪态 -> 运行态
    • 条件:调度器选中该就绪态进程。
    • 过程:调度器从就绪队列中选择一个进程,为其分配CPU资源,该进程状态变为运行态,开始在CPU上执行。

实际场景举例

  1. 运行态 -> 就绪态
    • 场景:在分时操作系统中,多个用户进程共享CPU。如系统中有三个进程A、B、C,进程A正在运行,时间片到后,调度器暂停A的执行,将其放入就绪队列,此时A从运行态变为就绪态,调度器可能接着调度B进入运行态。
  2. 运行态 -> 阻塞态
    • 场景:一个网络爬虫进程正在运行,当它发起下载网页的请求时,需要等待网络响应。此时进程进入阻塞态,让出CPU,操作系统可调度其他就绪态进程运行。
  3. 阻塞态 -> 就绪态
    • 场景:上述网络爬虫进程等待下载网页,当网络数据到达,下载完成,该进程所等待的事件发生,操作系统将其从阻塞队列移到就绪队列,变为就绪态等待CPU调度继续处理下载的数据。
  4. 就绪态 -> 运行态
    • 场景:系统启动后,多个后台服务进程处于就绪态等待调度。当调度器根据调度算法(如先来先服务)选中其中一个进程,该进程就从就绪态变为运行态,开始执行服务任务。