进程的几种状态

2023-05-16

进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位

进程状态:一个进程的生命周期可以划分为一组状态,这些状态刻画了整个进程。进程状态即体现一个进程的生命状态。

进程状态:

一般来说,进程有三个状态,即就绪状态,运行状态,阻塞状态。

运行态:进程占用CPU,并在CPU上运行;
      
 就绪态:进程已经具备运行条件,但是CPU还没有分配过来;
      
 阻塞态:进程因等待某件事发生而暂时不能运行;

下面是3种状态转换图



当然理论上上述三种状态之间转换分为六种情况;

       运行——>就绪:1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态。

       就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU

      运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求

      阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列

 

      以下两种状态是不可能发生的:

        阻塞——>运行:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取

       就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态。

 

在一些系统中,又增加了一些新状态,如挂起状态,可运行状态,深度睡眠状态,浅度睡眠状态,暂停状态,僵死状态。

可运行状态:运行状态和就绪状态的合并,表示进程正在运行或准备运行,Linux 中使用TASK_RUNNING 宏表示可运行状态。

      浅度睡眠状态:进程正在睡眠(被阻塞),等待资源的到来是唤醒,也可以通过其他进程信号或时钟中断唤醒,进入运行队列。Linux 中使用TASK_INTERRUPTIBLE 宏表示此状态。

      深度睡眠状态:其和浅度睡眠基本类似,但不可被其他进程信号或时钟中断唤醒。Linux 中使用TASK_UNINTERRUPTIBLE 宏表示此状态。

      暂停状态:进程暂停执行接受某种处理。Linux 使用TASK_STOPPED 宏表示此状态。

      僵死状态:进程已经结束但未释放进程控制块(PCB),Linux 使用TASK_ZOMBIE 宏表示此状态。

挂起状态:在执行状态的进程通过挂起即可进入就绪状态,如图所示,就绪状态和阻塞状态都分为活动态和静止态。由活动态向静止态转换就是通过挂起实现的。

引入挂起状态的原因有:

(1) 终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来。亦即,使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我们把这种静止状态称为挂起状态。 

(2) 父进程请求。有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。

(3) 负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。

(4) 操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。

具有挂起状态的进程状态转换图为:



有关参考文章有:http://www.2cto.com/os/201412/358908.html  

                               http://blog.chinaunix.net/uid-26126915-id-2948970.html



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

进程的几种状态 的相关文章

  • 七 Gazebo学习总结之传感器的添加

    本文展示的是使用者怎么直接通过Gazebo其他模型来创建复杂的模型 xff0c 以及使用 lt include gt 和 lt joint gt 标签来连接一个复杂模型的不同部分 1 增加一个激光器 a 进入先前教程的模型目录中 cd ga
  • STM32、FreeRTOS—— SVC 和 PendSV

    问 I went through the xTaskStartSechudler function which ends up triggering the SVC instruction and i came to know that i
  • MYNTEYE-SDK-ROS-Kinetic-VINS-Mono环境搭建到运行(Ubuntu 16.04)非常详细

    一 首先安装ROS环境 1 确保系统软件处于最新版 xff1a sudo apt get update 2 打开终端 xff0c 输入命令 wget https raw githubusercontent com oroca oroca r
  • win7关机一直卡在正在关机

    win7关机一直卡在正在关机 尝试用win7系统准备工具 xff08 sysprep xff09 来恢复到系统的初始状态 步骤 xff1a 1 win 43 R打开运行窗口 xff1b 2 在窗口中输入 xff1a sysprep xff0
  • Jetson TX2学习笔记(一):软硬件基础环境配置

    拿到了Jetson TX2套件 xff0c 在给套件安装开发环境时踩了很多坑 上网查阅的资料也都没能解决问题 xff0c 这里把成功安装步骤一一记录下来 xff0c 同时将所遇到且网上未提及的问题也进行一下分析 先说一下 xff0c Jet
  • 启动Docker,出现“Got permission denied while trying to connect to the Docker daemon socket“的情况

    启动docker时 xff0c 出现 Got permission denied while trying to connect to the Docker daemon socket 的情况 解决方法 xff1a docker守护进程启动
  • 【matlab调用m文件方法】

    matlab如何调用m文件 matlab调用m文件方法
  • kubernetes(k8s)介绍安装和部署实战

    kubernetes 基本介绍 kubernetes xff0c 简称 K8s xff0c 是用 8 代替 8 个字符 ubernete 而成的缩写 是一个开源 的 xff0c 用于管理云平台中多个主机上的容器化的应用 xff0c Kube
  • latex与mathtype的对应

    在latex中一些特殊的字体在用mathtype实现的时候需要找到相应的字体 xff0c 就是说latex实现的所有特殊的字体 xff0c 实现 xff0c 在mathtype中都能找到相应的对应 例如下面的文本对应 R E u
  • 深度学习 优化算法

    深度学习优化算法 优化算法概念动量框架 SGDMomentumNAGAdaGradRMSProp AdaDeltaAdamNdam参考 优化算法 概念 优化算法的功能是通过改善训练方式来最大化或者最小化损失函数 模型内部有些参数 xff0c
  • AVStream AVCodecContext AVCodec

    AVStream 表示成一个流媒体 xff0c 每个AVStream对应一个AVCodecContext xff0c 存储该音视频流使用解码器的相关数据 xff0c 每个AVCodecContext中对应一个AVCodec 包含该音视频的解
  • 2022 年 GIS 就业状况

    2022 年 GIS 就业状况 我们生活在数字时代 xff0c 通过进行在线研究选择我们的道路 xff0c 比如选择假期 选择大学或追求职业 如果您正在考虑进入 GIS 领域或在 GIS 领域进一步发展 xff0c 那么这份报告一定会有所帮
  • Eigen使用方法

    看了这边博客之后总结一下https blog csdn net augusdi article details 12907341 xff0c 感谢原作 xff01 看了之后学到了好多 xff01 1 矩阵定义 不管是向量还是矩阵 xff0c
  • Linux C 书籍推荐

    建议学习路径 xff1a 首先先学学编辑器 xff0c vim emacs什么的都行 然后学make file文件 xff0c 只要知道一点就行 xff0c 这样就可以准备编程序了 然后看看 C程序设计语言 K amp R xff0c 这样
  • Lidar与imu外参标定

    目录 网上资料 方案1 方案2 Lidar与IMU的相对旋转 实现 总结 附录 xff1a 最近由于工作需要 xff0c 花了几天时间了解激光与imu的标定方法 xff1b 因为项目需要 xff0c 且这里是个人认识的一个整理 xff0c
  • ROS的tf包中坐标变换的方法

    1 setRotation函数的参数 在坐标变换的时候常有这样的写法 xff1a tfTutorialsAdding a frame C 43 43 transform setOrigin tf Vector3 0 0 2 0 0 0 tr
  • 转载-自定义ros消息 vector

    原创 xff1a https blog csdn net m zhangjingdong article details 79617966 1 我在ros程序包中新建一个msg文件夹 xff0c 用于存储msg消息相关定义 xff0c 之后

随机推荐

  • 学神的“诞生”-2014清华大学本科生特等奖学金答辩观后感

    清华的特奖与交大的竢实扬华 偶然间在学堂在线上留意到有这样的一场现场答辩 xff0c 很想知道最高学府的最高荣誉花落谁家 xff0c 得此殊荣的又是些怎样的 学神 xff0c 几点感受记录之 1 经历 gt gt 证书 清华的学生更注重大学
  • qt中 美化 问题列表

    1 QTabWidget 中tab xff0c tab bar xff0c pane属性分布 2 使用qss美化时 xff0c tab标签上和pane中都能美化成功 xff0c 但tab最右侧的tab bar却始终没有成功 设置控件的背景
  • AttributeError: module 'cv2.cv2' has no attribute 'createLBPHFaceRecognizer'

    AttributeError module cv2 cv2 has no attribute createLBPHFaceRecognizer 在某一次做人脸识别的小demo的过程中遇到了这个问题 下面直接上产生问题的源代码 span cl
  • CAN总线ACK响应问题

    CAN总线的应答位 xff08 ACK xff09 用来表示节点已经收到有效的帧 任何节点如果准确无误地接收到帧 xff0c 则要向总线上发送显性位 xff0c 该显性位将掩盖发送节点输出的隐性位 xff0c 使总线上表现为显性 如果发送节
  • 嵌入式书籍推荐

    嵌入式书籍推荐 Linux基础 1 Linux与Unix Shell 编程指南 C语言基础 1 C Primer Plus xff0c 5th Edition 美 Stephen Prata着 2 The C Programming Lan
  • 调试中关于__FILE__, __LINE__ 及 __FUNCTION__ 用法

    在C语言中 FILE xff1a 打印相应的文件名 LINE xff1a 打印语句在源代码中相应的行 FUNCTION xff1a 打印语句在源代码中相应的函数名
  • 看技术书籍坚持不下来的,看这里,记录增量学习法

    今天 xff0c 在阅读 软技能 代码之外的生存指南 这本书的过程中 xff0c 学习到了番茄工作法 定额工作法 xff0c 受此启发 xff0c 突然脑海里冒出了一个方法论 xff0c 这是我独创的一个学习方法论 xff0c 我把它称作
  • ubuntu16.04安装realsense2环境与SDK(D435)

    关于realsense2环境的安装以及SDK的使用现在的文档还不是很多 xff0c 就分享下我的过程 xff0c 希望对大家有帮助 我安装是从源码构建的 xff0c 以下是我参考的资料链接 第一个链接是官网 xff0c 我是以它为主 xff
  • C++服务器研发精进

    一袭青衫闯帝都 xff0c 回首已然四春秋 壮志未酬心未老 xff0c 抚膺身衰发已疏 转眼间已经工作四年有余 xff0c 回想刚毕业的懵懂无知 xff0c 仿佛就在昨日 xff0c 成长乎 xff1f 徒增岁月矣 理想中的职业生涯应该是目
  • [kernel 启动流程] (第二章)第一阶段之——设置SVC、关闭中断

    1 kernel启动流程第一阶段简单说明 arch arm kernel head S kernel入口地址对应stext ENTRY stext 1 第一阶段要做的事情 xff0c 也就是stext的实现内容 设置为SVC模式 xff0c
  • opencv 2.4.9编译踩坑笔记

    为了跑GSLAM xff0c 一直遇到opencv版本的问题 xff0c 本机之前是4 1 0 xff0c 作者回答用的版本是opencv2 4 9 xff0c 没办法 xff0c 再装一个 最终我的CMAKE指令 xff1a cmake
  • 如何使用APM固件飞控来使能外部位置控制

    在三维激光雷达平台上我们飞控采用pixhawk2的飞控 官方给我说这个支持APM和PX4的固件 xff0c 但是对APM固件的支持性比较好 xff0c 因此就选用了APM的飞控 在一开始装好飞机后 xff0c 第一次飞还好好的 xff0c
  • CentOS 8中安装docker时报错的解决

    CentOS 8中安装docker时报错的解决 Problem package podman span class token operator span 3 span class token punctuation span 2 span
  • 四旋翼飞行器(QuadCopter--Parrot mini drone)—— 基于模型设计(Model Based Design)

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 最近一段时间 xff0c 朋友圈被MATLAB禁止哈工大 哈工程等科研院校使用刷屏了 xff0c 顿时各种声
  • VFH & VFH+ & VFH*—— Path Planning

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 最近在学习VFH算法 xff0c 感觉蛮神奇 xff0c 特意从维基百科扒来了资料 xff0c 供学习研究
  • VFH 2D —— Path Planning

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 进行路径规划的前提是 xff0c 无人机或机器人自身已经对当前环境有一个清晰的认知 xff08 环境感知 x
  • PX4——rcs源码分析

    注 xff1a 本文转载自 博主 xff1a 虾米一代 博客 xff1a pixhawk原生码rcS分析 代码执行流程 1 编译时将cmake configs nuttx px4fmu v2 default cmake文件中配置的模块全部编
  • ArduPilot——AP_NavEKF3针对AP_NavEKF2做了哪些改进/变动?

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 本篇博文主要针对Paul Riseborough大神为ArduPilot做的导航EKF3算法 xff0c 相
  • QuadPlane (VTOL)——ArduPilot——流程梳理

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接
  • 进程的几种状态

    进程 xff1a 进程 xff08 Process xff09 是计算机中的程序关于某数据集合上的一次运行活动 xff0c 是系统进行资源分配和调度的基本单位 进程状态 xff1a 一个进程的生命周期可以划分为一组状态 xff0c 这些状态