Linux 进程状态标识 Process State Definition
From : http://www.linfo.org/process_state.html
译者:李秋豪
进程状态标识是指在进程描述符中状态位的值。
进程,也可被称为任务,是指一个程序运行的实例。
一个进程描述符是一个task_struct类型的数据结构,这个数据结构内保存了一个进程的所有相关信息。其中的进程状态区域描述了当前正在发生什么。
数据结构是一种结构化存储以期更有效利用数据的方法。task_struct是一种被设计用来为内核提供进程所有信息的数据结构,在32位机器上它大概有1.7KB大小。
进程描述符中进程状态区域描述了当前该进程在发生些什么。这个区域的值是下列5个标志之一:
TASK_RUNNING:这个进程是可运行的——要么它正在运行,要么在runqueue中等待运行。对于用户空间 (指内存 上用户进程运行的空间) 正在运行的进程来说,它只可能是可运行的。对于 内核空间 (内存上内核运行并提供服务的空间)正在运行的进程来说,可运行状态也是可能的。
可运行进程 (译者注:这篇文章我已经翻译了)就是指该进程的进程状态为TASK_RUNNING。
一个runqueue(运行队列)是 scheduler(调度器)里面的基本数据结构,它保存了可运行进程的列表,这些列表中的进程随后会被CPU执行。scheduler (调度器)也被称为process scheduler (进程调度器),是内核的一部分,它会为不同的可运行进程分配CPU时间。
TASK_INTERRUPTIBLE: 这个进程正在睡眠(例如被锁了),它在等待某个条件的满足或者某个信号的到达。当条件满足或者某一个信号来的时候,内核就会把这个进程的状态位设置为TASK_RUNNING。
信号是一种在进程中或者进程组中传递的短小消息,每一个信号对应一个整数(译者注:1~30左右)。 用户模式 下的进程可以通过它进行交互,内核亦可以通过信号告知进程发生的事件(用户模式下的进程是被禁止访问内存中内核和其他程序的空间的)。除了通知的功能,信号还可以强制进程执行它内部的信号处理函数。
TASK_UNINTERRUPTIBLE: 在进程接收到信号时,不会被唤醒变成可运行的。除了这一点,该标志和TASK_INTERRUPTIBLE其他部分完全一样。这个状态通常用于进程必须不间断等待或者事件发生的频率很快。该标志并没有TASK_INTERRUPTIBLE常用,毕竟它不能对信号做出反应。
TASK_ZOMBIE: 该进程已经终止了,但是他的父进程(fork出该进程的进程)并没有调用wait4() (译者注:wait3, wait4 - wait for process to change state, BSD style)。进程结束后,进程要保证它的父进程还可以获得它的进程描述符以便知晓它为什么终止和终止的状态。如果父进程调用wait4() ,子进程在内存中的进程描述符就会被回收。
系统调用是通过软件中断实现的,活动进程通过这种方法要求内核提供相关服务。wait4()系统调用告诉操作系统挂起当前进程知道某一个子进程终止。
中断是指向内核发送一个信号,告知某一个事件的发生,这通常会导致CPU内的指令执行顺序发生改变。软件中断,或者称为异常,是产自于软件的中断,通常指用户模式下的程序。
(译者注:关于僵尸进程、孤儿进程的详细信息可以参见我的另一篇文章Linux 进程与信号的概念和操作 linux process and signals中的僵尸进程部分)
TASK_STOPPED: 表示该进程已经停止执行,并且不具有再次执行的条件。通常情况下,(译者注:进程没有对一些可以捕捉的信号进行捕捉或者忽略),当进程接收到SIGSTOP, SIGTSTP, SIGTTIN or SIGTTOU这些默认动作是停止进程的信号时,进程就会进入该状态;或者,当进程正在被debugged的时候接受到任何信号,也会立即进入该状态。
Linux 进程状态标识 Process State Definition的更多相关文章
- Linux 进程状态 概念 Process State Definition
From : http://www.linfo.org/process_state.html 进程状态是指在进程描述符中状态位的值. 进程,也可被称为任务,是指一个程序运行的实例. 一个进程描述符是一 ...
- Linux进程状态 ( Linux Process State Codes)
进程状态代码及说明: STATE代码 说明 D 不可中断的睡眠. 通常是处于I/O之中. R 运行中/可运行. 正处于运行队列中. S 可中断的睡眠. 等待某事件发生. T 已停止. 可能是因为she ...
- Linux 进程状态【转】
转自:http://www.cnblogs.com/itech/p/3208261.html 来自: http://blog.csdn.net/tianlesoftware/article/detai ...
- linux进程状态详解(转)
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. 在下文将对进程的 R.S.D.T.Z.X 六种状态做个说明. PROCESS ...
- Linux进程状态解析
引言 Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. 在下文将对进程的R.S.D.T.Z.X 六种状态做个说明. PROCE ...
- ORA-00020: No more process state objects available故障一例
今天公司一大早收到通知,昨天数据库数据未生成.当时查看跑批的日志,发现平常只需运行半个小时的过程,今天整整运行了7个小时(明显存在问题),导致后续数据正常时间读取失败.为了了解起因,查看了oracle ...
- Linux进程状态查询
进程状态详细说明 Linux进程状态详细解析 ps 的参数说明 ps 提供了很多的选项参数,常用的有以下几个: l 长格式输出: u 按用户名和启动时间的顺序来显示进程: ...
- [进程管理]Linux进程状态解析之T、Z、X
Linux进程状态:T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态. 向进程发送一个SIGSTOP信号,它就会因响应该信号而进入 ...
- [进程管理]Linux进程状态解析之R、S、D
Linux是一个分时操作系统,能够在一个cpu上运行多个程序,每个被运行的程序实例对应一个或多个进程,这里介绍一下Linux进程状态. Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个 ...
随机推荐
- css布局,面试时经常问的布局
左侧宽固定200,高度自适应,右侧的框宽度都自适应<style> * { margin: 0; padding: 0; } html { height: auto; } body { ma ...
- Linux 上安装 weblogic12C (静默安装) (一)
最近负责在linux上安装weblogic,客户说要安装最新的版本,版本号为 12.1.X(12.1.2,12.1.3).开始以为和旧版安装一样,使用控制台的方式,下载bin文件,然后一步步在cons ...
- unity3d发布到安卓平台
1.首先你得装上JDK并且配置好环境(就像学java配置环境一样) 百度jdk把下载安装成功 找到安装jdk目录的bin目录,复制路径,例如 C:\Program Files (x86)\Java\j ...
- Java学习第二十三天
1:多线程(理解) (1)多线程:一个应用程序有多条执行路径 进程:正在执行的应用程序 线程:进程的执行单元,执行路径 单线程:一个应用程序只有一条执行路径 多线程:一个应用程序有多条执行路径 多进程 ...
- Java线程中断的本质深入理解
Java的中断是一种协作机制.也就是说调用线程对象的interrupt方法并不一定就中断了正在运行的线程,它只是要求线程自己在合适的时机中断自己. 一.Java中断的现象 首先,看看Thread类里的 ...
- ie8点击焦点有虚线框兼容问题
a标签的: 方法一:在IE下是使用html属性:hideFoucs,在HTML标签中加上hidefocus=”true” 属性即可,但这个属性是IE私有的,Firefox是不认的. <a hre ...
- node.js压缩和解压缩
推荐一个极其简单.及其好用的node.js的压缩和解压缩类库 compressing 支持格式: tar.gzip.tgz.zip 以zip为例,tar,tgz和gzip与zip相同. 压缩文件: ...
- Zookeeper之集群搭建(Linux)
Zookeeper集群搭建(Linux环境) 条件准备:准备三台Linux服务器 vt-serv1.vt-serv2.vt-serv3(虚拟机/物理机均可,服务器数量一定要是单数,不要问我为什么,据说 ...
- Spring课程 Spring入门篇 5-3 配置切入点 pointcut
1 解析 1.1 xml常见的配置切入点写法 2 代码演练 2.1 xml配置切入点 1 解析 1.1 xml常见的配置切入点写法 2 代码演练 2.1 xml配置切入点 xml配置: <? ...
- 用于模式匹配的String方法和RegExp方法
上一节总结了创建正则表达式的语法,这一篇笔者总结了用于模式匹配的String四个方法:search().replace().match().split()以及用于模式匹配的RegExp两个方法exec ...