• 进程的状态与转换以及组织方式


    1.进程的状态

    三种基本状态:运行态,就绪态,阻塞态。

    1.运行状态

    如果一个进程此时在CPU上运行,那么这个进程处于“运行态”。
    CPU会执行该进程对应的程序(执行指令序列)

    2.就绪状态

    当进程创建完成后,便进入“就绪态”,
    处于就绪态的进程已经具备运行条件(其他所需资源),
    但由于没有空闲CPU,就暂时不能运行.

    3.阻塞状态(又称等待态)

    在进程运行的过程中,可能会请求等待某个事件的发生(如等待某种系统资源的分配,或者等待其他进程的响应)。

    在这个事件发生之前,进程无法继续往下执行,
    此时操作系统会让这个进程下CPU,并让它进入“阻塞态
    当CPU空闲时,又会选择另一个“就绪态”进程上CPU运行.

    4.创建状态(又称新建态)

    进程正在被创建时,它的状态是“创建态”,
    在这个阶段操作系统会为进程分配资源、初始化PCB.

    5.终止状态(又称结束态)

    一个进程可以执行exit系统调用,请求操作系统终止该进程。

    此时该进程会进入“终止态”,操作系统会让该进程下CPU, 并回收内存空间等资源,最后还要回收该进程的PCB。
    当终止进程的工作完成之后,这个进程就彻底消失了。

    2. 状态之间的转换

    在这里插入图片描述

    1.就绪态—>运行态

    进程被调度。

    2.运行态—>就绪态

    时间片到,或处理机被抢占。

    3.运行态—>阻塞态

    进程使用“系统调用”的方式申请某种系统资源,或者请求等待某个事件发生。(主动行为)

    4.阻塞态—>就绪态

    申请的资源被分配,或者等待的事件发生。(不是进程自身能控制的,是一种被动行为)(被动行为)

    注意:不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态(因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求)

    3.进程的组织方式

    (各个进程PCB的组织方式)

    进程PCB中,会有一个变量state来表示进程的当前状态。
    如:1表示创建态、2表示就绪态、3表示运行态.
    为了对同一个状态下的各个进程进行统一的管理,操作系统会将各个进程的PCB组织起来。

    1.链式方式
    1. 按照进程状态将PCB分为多个队列
    2. 操作系统持有指向各个队列的指针
      在这里插入图片描述
    • 执行指针:指向当前处于运行态(执行态)的进程。单CPU计算机中,同一时刻只会,有一个进程处于运行态
    • 就绪队列指针:指向当前处于就绪态的进程。通常会把优先级高的进程放在队头
    • 阻塞队列指针:指向当前处于阻塞态的进程。很多操作系统还会根据阻塞原因不同,再分为多个阻塞队列
    2.索引方式
    1. 根据进程状态的不同,建立几张索引表
    2. 操作系统持有指向各个索引表的指针

    在这里插入图片描述
    大多数的操作系统基本都采用的链式方式。

  • 相关阅读:
    C语言有哪些冷知识?
    STC4054锂电池充电IC
    unity 位移贴图正弦波面
    Mybatis 数据源 池化和非池化的实现
    程序环境、预处理和宏
    15 万奖金!开放原子开源大赛OpenAnolis 赛题@你报名
    SqlServe存储过程中运用事务
    计算机毕业设计Java高校教师教学业绩考核系统2021(源码+系统+mysql数据库+lw文档)
    LeetCode HOT 100 —— 48.旋转图像
    Redis安装与配置、centos虚拟机上配置自启动redis服务
  • 原文地址:https://blog.csdn.net/qq_61888137/article/details/133467394