三分钟理解进程的基本状态

423 阅读2分钟

进程的三种基本状态

进程在生命周期内可能有多种状态,不过一般而言,每一个进程都至少有三种基本状态

就绪(Ready)状态 进程已处于准备运行的状态,获得除CPU以外所有必要的资源。如果获得CPU,则立即执行 执行(Running)状态 进程获得CPU,正在执行的状态 阻塞(Block)状态 正在执行的进程,由于等待某个事件(如I/O申请,申请缓冲区失败,访问临界资源等)的发生而暂时无法继续执行时的状态

三种状态的转换

进程的三种状态及转换

进程在运行期会经常发生这三个状态间转换

就绪→执行 处于就绪状态的进程,在进程调度程序为之分配下获得CPU,进程由就绪状态转变成执行状态。

执行→就绪 处于执行状态的进程在其执行过程中,分配给进程的时间片已用完而让出CPU,进程从执行状态变成就绪状态。

执行→阻塞 处于执行状态的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。阻塞是进程的主动行为 某些事件一般指:

  • 向系统请求资源(内存,临界资源等)失败(eg.向系统申请更多的内存时,系统中的内存不能达到进程的需求,进程将会进入阻塞状态)
  • 等待某事件的完成(eg.进程申请I/O设备,I/O设备启动后进程便自动进入阻塞状态去等待,等I/O操作完成后,进程将会被唤醒)
  • 新数据尚未到达(eg.有俩个进程,进程A用于数据的输入,进程B进行数据的加工,在进程A数据输入完成之前,进程B都是处于阻塞状态)
  • 等待新任务的到达(eg.例如网络环境中的发送进程,主要任务是发送数据包。若已有的数据包已发送完毕,则自动进入阻塞状态;仅当有新的数据包到达时,进程才会唤醒) 由此也可见进程阻塞是主动行为

阻塞→就绪 处于阻塞状态的进程,若其等待的事件已经发生,进程由阻塞状态变为就绪状态。