系统进程STAT代码
S: 睡眠。通常是在等待某个事件的发生,如一个信号或有输入可用
R:运行。严格来说,应是“可运行”,即在运行队列中,处于正在执行或即将运行状态
D:不可中断的睡眠(等待)。通常是在等待输入或输出完成
T:停止。通常是被Shell作业控制所停止
Z:死进程或将是进程
N:低优先级任务,nice
W:分页(不使用于2.6版本开始的linux内核)
s:进程是会话期首进程
+:进程属于前台进程组
l:进程是多线程的
<:高优先级任务
一般而言,每个进程都是由另一个我们称为父进程的进程启动的,被附近成启动的进程交子进程。Linux系统启动时, 它将运行一个名为init的进程,该进程是系统运行的第一个进程,进程号为1.init进程是操作系统的进程管理器,是所有其它进程的祖先进程。
在一台单处理器的计算机上,同一时间只能有一个进程可以运行,其它进程处于等待运行状态,每个进程的时间片是相当短暂的
Linux内核用进程调度器来决定下一个时间片应该分配给哪个进程,判断的依据是进程的优先级。优先级高的运行得更频繁。在LInux中,进程的运行时间不可能超过分配给他们的时间片。他们采用的是抢先式多任务处理,所以进程的瓜起和继续运行无需彼此之间的协作。但早一些的系统如Windows3.x,通常需要明确地退出时间片,然后其他进程才能继续运行。
多个程序可能会竞争使用同一个资源,执行短期的突发性工作并暂停运行来等待输入的程序,要比持续占用处理器来进行计算或不断轮询系统来查看是否有新的输入到达的程序要好。表现良好的程序成为nice程序。程序的nice值可以量化,操作系统根据nice值来决定它的优先级,一个进程的nice默认为0,并根据程序的表现不断变化。长期不间断运行的程序优先级一般会比较低。而暂停来等待输入的程序会得到奖励。浙科院帮助与用户进行交互的程序保持及时的响应性。
可以通过nice命令设置进程的nice值,使用renice命令调整它的值。nice命令是将进程的值增加10,从而降低改进程的优先级
启动新进程
可以在一个程序的内部启动另一个程序从而创建一个新进程。这个工作通过库函数system来完成
#include <stdlib.h>
int system(const char* string);
system函数的作用是,运行以字符串参数形式传递给它的命令,并等待改名令的完成。命令的执行情况就等同于在shell中执行如下的命令:
sh -c string
返回值:无法启动shell,返回127;其他错误 -1,否则返回该命令的退出码。