Linux操作系统进程的状态和转换(五态模型)

2023-11-06

1、进程的状态和装换

1.1进程的三态模型

按进程在执行过程中的不同情况至少要定义三种状态:

  • 运行(running)态:进程占有处理器正在运行的状态。进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态; 在多处理机系统中,则有多个进程处于执行状态。

  • 就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行的状态。当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。

  • 等待(wait)态:又称阻塞态或睡眠态,指进程不具备运行条件,正在等待某个时间完成的状态。也称为等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。

引起进程状态转换的具体原因如下:

  • 运行态→等待态:等待使用资源;

  • 如等待外设传输;等待人工干预。

  • 等待态→就绪态:资源得到满足;

  • 如外设传输结束;人工干预完成。

  • 运行态→就绪态:运行时间片到;

出现有更高优先权进程。就绪态—→运行态:CPU 空闲时选择一个就绪进程。

1.2 进程的五态模型

五态模型在三态模型的基础上增加了新建态(new)和终止态(exit):

  • 新建态:对应于进程被创建时的状态,尚未进入就绪队列。创建一个进程需要通过两个步骤:1.为新进程分配所需要的资源和建立必要的管理信息。2.设置该进程为就绪态,并等待被调度执行。

  • 终止态:指进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止时所处的状态。处于终止态的进程不再被调度执行,下一步将被系统撤销,最终从系统中消失。终止一个进程需要两个步骤:1.先对操作系统或相关的进程进行善后处理(如抽取信息)。2.然后回收占用的资源并被系统删除。

引起进程状态转换的具体原因如下:

  • NULL→新建态:执行一个程序,创建一个子进程。

  • 新建态→就绪态:当操作系统完成了进程创建的必要操作,并且当前系统的性能和虚拟内存的容量均允许。

  • 运行态→终止态:当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结。

  • 运行态→就绪态:运行时间片到;出现有更高优先权进程。

  • 运行态→等待态:等待使用资源;如等待外设传输;等待人工干预。

  • 就绪态→终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。

  • 等待态→终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。

  • 终止态→NULL:完成善后操作。

资料直通车最新Linux内核源码资料文档+视频资料

内核学习地址:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

1.3 进程的七态模型

三态模型和五态模型都是假设所有进程都在内存中的事实上有序不断的创建进程,当系统资源尤其是内存资源已经不能满足进程运行的要求时,必须把某些进程挂起(suspend),对换到磁盘对换区中,释放它占有的某些资源,暂时不参与低级调度。起到平滑系统操作负荷的目的。

引起进程挂起的原因是多样的,主要有:
1.终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂停使自己的程序静止下来。亦即,使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我们把这种静止状态成为“挂起状态”。 2.父进程的请求。有时父进程希望挂起自己的某个子进程,以便考察和修改子进程,或者协调各子进程间的活动。 3.负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。 4.操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。 5.对换的需要。为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存上。

七态模型在五态模型的基础上增加了挂起就绪态(ready suspend)和挂起等待态(blocked suspend)。

  • 挂起就绪态:进程具备运行条件,但目前在外存中,只有它被对换到内存才能被调度执行。

  • 挂起等待态:表明进程正在等待某一个事件发生且在外存中。

引起进程状态转换的具体原因如下:

等待态→挂起等待态:操作系统根据当前资源状况和性能要求,可以决定把等待态进程对换出去成为挂起等待态。

挂起等待态→挂起就绪态:引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态挂起就绪态→就绪态:当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把挂起就绪态进程转换成就绪态。

就绪态→挂起就绪态:操作系统根据当前资源状况和性能要求,也可以决定把就绪态进程对换出去成为挂起就绪态。

挂起等待态→等待态:当一个进程等待一个事件时,原则上不需要把它调入内存。但是在下面一种情况下,这一状态变化是可能的。当一个进程退出后,主存已经有了一大块自由空间,而某个挂起等待态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,此时便发生了这一状态变化。

运行态→挂起就绪态:当一个具有较高优先级的挂起等待态进程的等待事件结束后,它需要抢占 CPU,而此时主存空间不够,从而可能导致正在运行的进程转化为挂起就绪态。另外处于运行态的进程也可以自己挂起自己。

新建态→挂起就绪态:考虑到系统当前资源状况和性能要求,可以决定新建的进程将被对换出去成为挂起就绪态。

挂起进程等同于不在内存中的进程,因此挂起进程将不参与低级调度直到它们被调换进内存。

挂起进程具有如下特征:

  • 该进程不能立即被执行

  • 挂起进程可能会等待一个事件,但所等待的事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。 (等待事件结束后进程变为挂起就绪态)

  • 进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。

  • 结束进程挂起状态的命令只能通过操作系统或父进程发出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux操作系统进程的状态和转换(五态模型) 的相关文章

  • 博世BMI160六轴传感器I2C通信配置

    博世BMI160简介 Bosch Sensortec公司推出的最新BMI160惯性测量单元将最顶尖的16位3轴重力加速度计和超低功耗3轴陀螺仪集成于单一封装 采用14管脚LGA封装 尺寸为2 5 3 0 0 8mm3 当加速度计和陀螺仪在全
  • 发布的qt程序出现libQt5Core.so.5 版本问题

    原因 发布版本跟别的机器qt环境不一样导致 解决方法 把 1 在客户机 去掉 bashrc 关于qt的环境变量 2 同样的方式去掉 etc profile的环境变量 或者吧qt的环境变量修改正确 因为你发布的软件首先回去系统路径中链接相关库
  • 28 openEuler管理网络-配置主机名

    文章目录 28 openEuler管理网络 配置主机名 28 1 简介 28 2 使用hostnamectl配置主机名 28 2 1 查看所有主机名 28 2 2 设定所有主机名 28 2 3 设定特定主机名 28 2 4 清除特定主机名
  • 【得物技术】自动化生成代码几种方案的演变

    今天我们聊一聊自动化生成代码的问题 试想一下 假如有一天机器替代你编写代码 你是应该感到开心还是难过 方案 目前代码生成技术主要有以下几类 1 基于模版编排生成代码 首先说下基于模版生成代码的方式 这种属于最原始最简单也是目前应用最广泛的一
  • egg.js和nest.js的对比

    egg js和nest js的对比 前几天突然看到一个群在说现在用egg的人已经很少了 说用nest的人比较多 然后我就做了一个简单的调查和对比 egg和nest都是比较优秀的框架 但是两个框架有比较大的区别 我主要分为六个方面来分析egg
  • web socket

    package com web import java io IOException import java util concurrent CopyOnWriteArraySet import javax websocket import
  • Mysql增加传输数据量或连接时间,防止mysql server has gone away报错

    首先登录进mysql mysql u root p 这个需要修改数据库配置的权限 修改数据传输量 默认是1M的数据量 数据量过大时会不够用 因此增加阈值 如下代码为100M show variables like max allowed p
  • 相机与激光雷达联合标定(二)

    前言 LiDAR Camera Calibration LCC 系列 主要介绍激光雷达相机外参标定相关内容 本文主要介绍相关的开源代码和软件 主要包括target based和targetless两类方法 每个方法对应标题后说明了方法的提出
  • [C/C++基础知识] main函数的参数argc和argv

    该篇文章主要是关于C C语言最基础的main函数的参数知识 是学习C 或C语言都必备的知识点 不知道你是否知道该知识 希望对大家有所帮助 一 main 函数参数通常我们在写主函数时都是void main 或int main return 0
  • CPU的工作原理

    一 CPU的基本概念 CPU 中央处理器 是一块超大规模的集成电路 是一台计算机的运算核心和控制核心 主要功能是解释计算机指令和处理计算机软件中的数据 二 CPU的组成部分 1 运算器 运算器是对数据加工和处理的中心 由算术逻辑单元 状态寄
  • TLS回调函数的两种写法

    include

随机推荐

  • 泛型+通配符(数学角度)

    打破常规 换个角度重新认识泛型和通配符 跳转提示 如果已经熟悉泛型基础知识的小伙伴可以直接跳过引入泛型这一部分 因为这一部分是关于泛型的基础知识的讲解 文章篇幅较长 想看换个角度认识泛型的部分 可以直接跳过引入泛型这部分 直接看从数学函数角
  • windows安裝mysql步骤

    1 mysql安装分为两种 一种是msi格式的 一种是zip格式的 zip格式相当于绿色版 不需要安装 只需解压缩之后就可以使用了 但是要进行配置 msi格式是安装版 2 mysql官网下载 https www mysql com 3 安装
  • 金融行业知识汇总

    文章目录 一 名词解释 1 一级市场 二级市场 2 投行 PE VC 1 投行 Investment Bank IB 2 VC PE 风险投资 Venture Capital VC 私募股权投资 Private Equity PE 3 买方
  • Apache2.4.23--解析漏洞

    复现环境 Apache文件解析漏洞与用户的配置有密切关系 严格来说属于用户配置问题 Apache文件解析漏洞涉及到一个解析文件的特性 Apache默认 个文件可以有多个以点分隔的后缀 当右边的后缀无法识别 则继续向左识别 发现后缀是 php
  • 强大的JTAG边界扫描(4):STM32边界扫描应用

    文章目录 1 获取芯片的BSDL文件 2 硬件连接 3 边界扫描测试 4 总结 试想这样一个场景 我们新设计了一款集成了很多芯片的板卡 包括BGA封装的微控制器 如FPGA MCU 还有LED 按键 串口 传感器 ADC等基本外设 我们需要
  • Unity 导出的EXE文件关闭时卡死崩溃

    Unity 导出的EXE文件关闭时崩溃 前言 项目分析情况 解决方法一 结论 前言 这个问题出现在Unity导出的可执行文件发生在需要关闭应用程序时无法正常关闭 只能从任务管理器中直接杀死进程 虽然这一步的目的是关闭程序但无法走正常途径就很
  • kettle中时间转换日期格式

    为什么80 的码农都做不了架构师 gt gt gt 经常会用到获取今天日期 但是在kettle中没有日期格式 只有时间格式 我们只有把时间格式转换成日期格式 第一步获取系统信息 第二步选择 改名值 第三步打印输出即可 转载于 https m
  • 【Java入门】统计字符串中“ a ~ z “各个字符出现的次数

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 知识点 二 代码 三 运行截图 前言 入门版统计字符串中 a z 各个字符出现的次数 如果需要查询某个字符出现的次数可以写成一个方法 一 知识点 Scan
  • 微信小程序实现文字长按复制、一键复制功能

    一 不引入外部组件的实现方式
  • 将mysql服务启动类型设置为手动或自动提示拒绝访问

    可能被360或者火绒禁止了 直接去火绒 安全工具 启动项管理 服务项 显示禁用的启动项 找到Mysql56允许启动 这里说一下打开Mysql服务的命令 net start mysql56 卸载mysql服务还在 需要删除mysql服务 sc
  • 一张图看懂数据结构-——图

    最小生成树 Prim算法 图解 一些说明 min weight数组表示该集合到达剩余顶点的最小值 adjvex表示这个最小权值是由哪个顶点引入 每次选取最小的权值顶点加入后 需要更新min weight的数值 选取值变为0 全部都为0时表示
  • 时间序列分析-ARIMA模型

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 时间序列分析 ARIMA模型 概述 一 时间序列平稳性 1 严平稳 2 弱平稳 二 建模步骤 1 平稳性检验 2 人工p 和 q 阶数的确定 3 模型拟合AIC和BIC确定最
  • BUUCTF zip伪加密(发现伪加密的惊天大秘密)

    title BUUCTF zip伪加密 date 2021年8月18日 20点03分 tags BUUCTF Misc categories BUUCTF Misc 这道题我为何要单独拿出来写呢 因为我在解题的途中 发现了zip伪加密的惊天
  • 2017年河北秦皇岛天气数据的R语言分析报告

    1 背景 AQI就是各项污染物空气质量分指数中的最大值 当AQI大于50时 IAQI最大的污染物为首要污染物 若IAQI最大的污染物为两项或两项以上时 并列为首要污染物 空气质量指数 综合表示空气污染程度或空气质量等级的无量纲的相对数值 数
  • JEECG online表单代码生成菜单授权后,提示“没有权限,请联系管理员授权”

    JEECG online表单代码生成菜单授权后 提示 没有权限 请联系管理员授权 参考官方文档 http doc jeecg com 2044037 一 不添加按钮 权限 找到生成代码路径中的controller中的java文件进行队jav
  • pandas数据分组与聚合

    目录 1 数据分组 1 1 按列名分组 1 2按列表或元组分组 1 3 按字典分组 1 4按函数分组
  • Linux多线程编程知识汇总!

    大家好 我杂烩君 什么是多线程编程 1 线程和进程的区别 进程是指正在运行的程序 它拥有独立的内存空间和系统资源 不同进程之间的数据不共享 线程是进程内的执行单元 它与同一进程内的其他线程共享进程的内存空间和系统资源 2 多线程的优势和应用
  • 计算机网络-应用层协议5(P2P)

    本文介绍两种特别适合P2P设计的应用 第一种是文件分发 从单个源向大量对等方分发一个文件 特殊例子BitTorrent 第二种P2P应用是分布在大型对等社区中的数据库 重点讨论分布式散列表 DHT 的概念 1 P2P文件分发 首先介绍文件分
  • Windows中卷(Volume)操作,获取卷GUID、磁盘类型、磁盘大小等API

    Windows中卷 Volume 操作 1 阅读msdn整理卷相关的知识点 https docs microsoft com zh cn windows win32 fileio volume management 2 重点讲解几个常用的A
  • Linux操作系统进程的状态和转换(五态模型)

    1 进程的状态和装换 1 1进程的三态模型 按进程在执行过程中的不同情况至少要定义三种状态 运行 running 态 进程占有处理器正在运行的状态 进程已获得CPU 其程序正在执行 在单处理机系统中 只有一个进程处于执行状态 在多处理机系统