1 三大基础状态

进程是程序的执行过程,有自己的生命周期 分为如下三个状态

  • 就绪态(Ready)
    • 当进程创建完成之后,便进入"就绪态" 处于就绪态的进程表明其已经具备了运行条件,但由于没有空闲的CPU ,暂时不能上CPU运行

    • 准备工作已经做好了,等待CPU空闲,就可以执行啦

    • 系统中可以有多个进程处于就绪态

  • 运行态(Running)
    • 当CPU空闲时,操作系统就会调度一个就绪态进程,让其上CPU运行 此处处于运行态

    • 如果一个进程此时在CPU上运行 那么这个进程处于运行态

    • CPU正在执行进程的指令

    • 单CPU同一物理时刻只能有一个进程处于运行态

  • 阻塞态(Blocking/waiting)
    • 进程等待外部事件:IO读写、资源等待、sleep、等待信号,在这个事件发生之前,进程无法继续往下执行,此时操作系统会让进程下CPU 这个进程进入阻塞态

    • 主动让出CPU ,等待的事件完成后回到就绪态,不能直接进入运行态

2 进程状态切换

  • 就绪队列:ready queue

    • 所有处于 ready 状态的进程 都在一个就绪队列

    • 通常会把高优先级的进程放在队头

  • 调度程序:

    • 负责下一个进入 running状态的进程

    • 当两个或多个进程处于Ready 状态时 CPU通过调用程序选择下一个上CPU运行的进程 ,通过调度算法(eg:时间片轮转、顺序调度、优先级调用)调度

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐