vivion34 发表于 2019-2-18 08:28:13

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]
查看完整版本: Linux 进程管理