Linux 进程管理
进程是程序运行的一个副本,存在生命周期,cpu按照时间分配每个进程运行,还未结束的进程将保存在内存存储的固定格式中(task struct),多个任务的task struct组成的链表称task list。我们用指令查看的结果其实就是保存在task list中的数据,进程间的数据通过cow写时复制实现数据独立。[*]进程优先级
[*]实时优先级:0-99,数字越大,优先级越高;实时优不可调,优先级最高。
[*]静态优先级: 100-139,数字越小,优先级越高;非内核程序一般都属于这类,默认120,可以用nice值来调整,nice值范围在 -20-19,为了方便显示,priority默认显示 20,范围在0-39之间,实际是100-139。
进程内存分配,一个4G内存机器,内核会把物理内存用Page Frame形式分配给每个进程,最大3G,所以,每个进程都一位自己是除了内核唯一的进程,进程中的数据分为两大类。
[*]VSZ:虚拟内存集合,包含大量的库引用
[*]RSS:常驻内存,一些重要的指令集
进程状态 :
[*]运行态:running
[*]就绪态:ready
[*]睡眠态:
[*]可中断:interruptable 无须额外数据准备
[*]不可中断:uninterruptable比如io过程中 还未加载完成
[*]停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped
[*]僵死态:zombie
ps
ps有3种显示风格
UNIX风格,选项带一个 -
BSD风格 选项不带 -
GNU 带两个-的长选项
BSD风格:
常用选项
a:所有与终端相关的进程;
x:所有与终端无关的进程;
u:以用户为中心组织进程状态信息显示;
# ps axu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 10.00.3 1937006848 ? Ss 12:28 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
USER
PID
%CPU cputime/realtimecpu使用时间 除 进程累计运行时间
%MEM 占整个内存比率
VSZ 虚拟内存集 虚拟内存集中可能包含很多共享库 单位是kb
RSS 常驻内存集(resident set size, the non-swapped physical memory that a task has used (in kiloBytes).(alias rssize, rsz).)单位是kb
STAT
R:running
S:interruptable sleeping
D:uninterruptable sleeping
T:Stopped
Z:zombie
+:前台进程
l:多线程进程
N:低优先级进程
页:
[1]