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是一个多用户,多任务的系统,可以同时运行多个用户的多个 ...
随机推荐
- Tor网络介绍
Tor网络介绍 1.Tor的全称是“The Onion Router”,“An anonymous Internet communicaton system:通过Tor访问一个地址时,所经过的节点在T ...
- 九度oj题目1511:从尾到头打印链表
题目1511:从尾到头打印链表 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:6010 解决:1805 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包 ...
- Java入门系列-08-选择结构
这篇文章为你搞懂2个问题 if-else选择结构的使用? switch 的使用? 前面我们学习的代码都是直上直下的执行,还不会"拐弯",这篇文章带大家来看一下会"拐弯&q ...
- 【Linux相识相知】文件查找(locate/find)
在用linux操作系统的时候,当我们忘记之前某个文件存储的位置,但是知道其文件名或者模糊的知道其文件名,我们都可以通过文件查找工具来查找,linux提供两种常用的查找工具,locate和find,在日 ...
- 分布式环境Tomcat多节点集群下共享目录配置,tomcat虚拟目录+nfs
我们可能有这种场景: 集群环境下,多个web容器需要请求一个共享目录下的文件,比如保存图片或者录音文件,任意一个节点保存后其他节点需要及时获取,此时就需要目录进行同步了,否则Nginx负载到任意一个节 ...
- Python爬虫《爬取get请求的页面数据》
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- Web前端面试指导(十二):::before 和:before有什么区别?
题目点评 这个问题看来很简单,但如果之前没有琢磨这个问题,给人感觉也是门头一垂,听到这个题目就懵逼了,因为原来从来没有注意过这个问题,即便有注意这个问题也不能很好的回答清楚.回答的技巧就是从相同点和不 ...
- .NET开源工作流RoadFlow-表单设计-按钮
在表单中添加一个按钮: 宽度,高度:按钮的宽度和高度. 文本:按钮显示的文本. 事件:点击按钮执行的操作.
- SpannableString与SpannableStringBuilder使用
转自:http://blog.it985.com/14433.html1.SpannableString.SpannableStringBuilder与String的关系 首先SpannableStr ...
- App更新(Android)
App更新(Android) 前言:现在一般的Android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会提示你有新版本需要更新.该项目实现的就是这个功能.并且有强制更新和更 ...