MST

星途 面试题库

面试题:进程管理:简述进程三种基本状态及其转换机制

请详细阐述进程的就绪态、运行态和阻塞态,说明它们之间是如何相互转换的,并举例说明在哪些情况下会发生这些转换。
35.4万 热度难度
操作系统进程管理

知识考点

AI 面试

面试题答案

一键面试

进程的三种状态

  1. 就绪态(Ready): 进程已获得除处理机以外的所需资源,具备了运行的条件,等待系统分配处理机资源,一旦获得处理机就可以立即执行。例如,在一个多任务操作系统中,多个程序都准备好运行,它们都处于就绪态,等待CPU调度。
  2. 运行态(Running): 进程获得处理机资源,正在处理机上运行。在单处理机系统中,处于运行态的进程只有一个。例如,当系统调度程序将CPU分配给某个处于就绪态的进程后,该进程进入运行态,开始执行其程序代码。
  3. 阻塞态(Blocked): 进程因等待某种事件的发生(如I/O操作完成、等待信号等)而暂时无法运行,放弃处理机资源,处于暂停状态。例如,当一个进程发起文件读取操作时,由于需要等待磁盘I/O完成数据传输,该进程进入阻塞态,直到I/O操作完成。

状态转换

  1. 就绪态 -> 运行态
    • 转换原因:当系统的调度程序从就绪队列中选择一个进程,并将处理机分配给它时,该进程就从就绪态转换为运行态。这通常发生在当前运行的进程时间片用完、主动放弃CPU(如调用了系统函数yield() 等)、或有更高优先级的进程进入就绪队列等情况。
    • 举例:在分时操作系统中,每个进程被分配一个时间片。当一个进程的时间片用完,调度程序会从就绪队列中选择另一个进程,这个被选中的进程就从就绪态转换为运行态。
  2. 运行态 -> 就绪态
    • 转换原因:运行态的进程由于时间片用完,或者有更高优先级的进程进入就绪队列,当前进程被抢占处理机,就会转换为就绪态。另外,当进程主动放弃处理机(如调用系统函数主动让出CPU)时也会进入就绪态。
    • 举例:在一个实时操作系统中,有一个高优先级的实时任务进入就绪队列,当前正在运行的低优先级进程会被抢占CPU,从而从运行态转换为就绪态。
  3. 运行态 -> 阻塞态
    • 转换原因:当进程需要等待某些事件发生(如I/O操作、等待信号等)时,它会主动放弃处理机并进入阻塞态。
    • 举例:一个进程执行文件写入操作,由于磁盘I/O速度相对较慢,进程需要等待写入操作完成,此时进程从运行态转换为阻塞态。
  4. 阻塞态 -> 就绪态
    • 转换原因:当进程所等待的事件发生(如I/O操作完成、等待的信号到达等),该进程就从阻塞态转换为就绪态,进入就绪队列等待系统调度。
    • 举例:之前处于阻塞态等待文件读取操作完成的进程,当文件数据从磁盘读取到内存后,该进程从阻塞态转换为就绪态,等待调度程序再次分配CPU资源继续执行。