目的

为了对进程从产生到消亡的整个过程进行跟踪和描述,就需要定义各种进程的各种状态并制定相应的状态转换策略,以此来控制进程的运行。

粗略分类运行态:进程占用CPU,并在CPU上运行;

就绪态:进程已经具备运行条件,但是CPU还没有分配过来;

阻塞态:进程因等待某件事发生而暂时不能运行;

当然理论上上述三种状态之间转换分为六种情况;运行 → 就绪:这是有调度引起的,主要是进程占用CPU的时间已耗尽。

就绪 → 运行:当前运行的进程的时间片用完,调度就从就绪队列中选择合适的进程分配给CPU。

运行 → 阻塞:发生了I/O请求或等待某件事的发生。

阻塞 → 就绪:进程所等待的事件发生,就进入就绪队列。

以上4种情况可以相互正常转换,不是还有两种情况吗?阻塞 → 运行:即使给阻塞进程分配CPU,也无法执行,操作系统进行调度时不会从阻塞队列进行挑选,其调度的选择对象为就绪队列。

就绪 → 阻塞:因为就绪态根本就没有执行,何来进入阻塞态?

详细分类

现在知道了进程的三种基本状态,但是在操作系统具体现实中,设计者可以根据实际情况设置不同的状态,这样以来就出现了以下几种状态:可运行态:运行态和就绪态的合并,表示进程正在运行或准备运行,Linux 中使用 TASK_RUNNING 宏表示此状态。

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

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

暂停状态:进程暂停执行接受某种处理。如正在接受调试的进程处于这种状态,Linux 使用 TASK_STOPPED 宏表示此状态。

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

我们可以来看下以上宏在内核中的定义:#define TASK_RUNNING            0

#define TASK_INTERRUPTIBLE      1

#define TASK_UNINTERRUPTIBLE    2

#define __TASK_STOPPED          4

#define __TASK_TRACED           8

/* in tsk->exit_state */进程的退出状态

#define EXIT_ZOMBIE             16

#define EXIT_DEAD               32

/* in tsk->state again */我理解为进程的唤醒状态

#define TASK_DEAD               64

#define TASK_WAKEKILL           128

#define TASK_WAKING             256

#define TASK_STATE_MAX          512

#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKW"

LINUX进程间状态转换和内核调用图

(SAW:Game Over!)

linux 进程 status,Linux 进程状态详解相关推荐

  1. Linux进程管理工具 Supervisor详解

    介绍 Supervisor安装与配置(linux/unix进程管理工具) Supervisor(http://supervisord.org)是用Python开发的一个client/server服务, ...

  2. Linux进程查找命令pgrep详解

    pgrep是linux中常用的通过程序名字来查询进程的命令. 一般用来查找正在运行进程的PID信息. 常用选项: 默认只显示PID -l 同时显示进程名和PID -o 当匹配多个进程时,显示进程号最小 ...

  3. linux 进程状态 rl,Linux进程状态详解

    Linux进程状态详解 以下部分的代码示例,来自于Linux内核的0.11版本源码 在定义进程的数据结构task_struct时,有一个state字段是用来表示进程状态的,这里总结了下关于state字 ...

  4. LINUX经常使用的命令详解

    LINUX经常使用的命令详解 源地址:http://blog.itpub.net/29065182/viewspace-1189162/ 1.man 对你熟悉或不熟悉的命令提供帮助解释  eg:man ...

  5. linux下top命令参数详解

    linux下top命令参数详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法. 内存信息.内容如下: ...

  6. linux proc目录作用,Linux下的proc目录详解

    Linux下的proc目录详解 [复制链接] 文章结构: 1.什么是proc目录 2. 初识proc目录 3. 从proc窥看系统详情 1.什么是proc目录 proc是Linux系统下一个很重要的目 ...

  7. Linux中的ps指令详解

    [时间]2018.12.16 [题目]Linux中的ps指令详解 转载地址:https://www.cnblogs.com/exe19/p/5511733.html 概述 要对进程进行监测和控制,首先 ...

  8. linux下测试ftp传输,linux下ftp命令使用详解---linux文件传输ftp命令

    linux下ftp命令使用详解---linux文件传输ftp命令 上一篇 / 下一篇  2010-12-18 09:15:35 / 个人分类:Linux ftp(file transfer proto ...

  9. Linux文件系统的目录结构详解(转)

    Linux文件系统的目录结构详解(转) 原文链接https://www.cnblogs.com/cyjaysun/p/4462325.html 一.前 言 文章对Linux下所有目录一一说明,对比较重 ...

最新文章

  1. 服务器功率一般多少_单机柜供电能力提升后,选择1U服务器还是2U服务器?
  2. 大对象简介+大对象的4种类型+lob类型的优点+lob的组成
  3. foreach循环符合就不往下走了_柴油发电机组冷却液循环故障解决方法
  4. 面试中听到这句话是不是代表凉了?
  5. android 补签控件,墨墨背单词怎么补签 看完你就懂了
  6. 库克笑嘻嘻!苹果明年或将迎来继iPhone 6后第二次换机大潮
  7. Linux系统文件夹权限475,linux系统中文件的特殊权限
  8. AutoCad二次开发
  9. 三大通信协议(1)UART
  10. 熬夜总结的2022java面试题
  11. 异步编程举例之闹钟程序
  12. OTU的定义与解读----了解笔记
  13. 你真的了解传统IT的集中式三层架构及主流开发技术选型?!
  14. java srs 推流_srs推流服务器部署
  15. linux 操作excel文件,Linux下输出excel文件
  16. 信息物理系统-Rijndael加密算法的实现
  17. AI将带我们去何方?(中-论述篇)
  18. Xilinx zc706开发板使用
  19. 把经典的书籍都汇总到这里
  20. 大数据Spark超经典视频链接全集

热门文章

  1. 【Object类、常用API】
  2. 洛谷P4956 [COCI2017-2018#6] Davor
  3. CAD中工具选项板的“妙”用
  4. MSM8953 ACC状态上报
  5. python加粗_python 加粗
  6. Java 基础之实例方法,实例变量,类方法,类变量
  7. Ijkplayer、ExoPlayer、VLC播放器综合比较
  8. 为图片绘制带箭头的坐标轴
  9. Java程序员春招三面蚂蚁金服,开源掌机玩java
  10. JAVA 模板字符串替换