码迷,mamicode.com
首页 > 系统相关 > 详细

进程管理

时间:2019-08-25 14:12:15      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:暂停   没有   priority   src   quit   ESS   交换   rest   -o   

进程管理

进程的基本状态

创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完
成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
执行状态:进程处于就绪状态被调度后,进程进入执行状态
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时
无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

技术图片

 技术图片

 

 

NICE值取值范围是--20----19,一共40个级别,这个值越小表示优先级越高值越大优先级越低。
nice值越高抢占资源的能力就越差,nice值越低的抢占资源的能力就越强。

 nice命令只能调试100-139即(-20-19)优先级
 nice  -n 10  bash 将nice值设置为10
 renice 修改调整进程优先级  renice -n 10  66908(pid)
 进程优先级
 系统2优先级:数字越小,优先级越高
 0-139:各有140个运行队列和过期队列
 实时优先级: 99-0 值最大优先级最高
 nice值:-20到19,对应系统优先级100-139
 Big O:时间复杂度,用时和规模的关系
 O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)

进程状态

Linux内核:抢占式多任务
进程类型:
    守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
    前台进程:跟终端相关,通过终端启动的进程
    注意:两者可相互转化?
进程状态:
    运行态:running
    就绪态:ready
睡眠态:
    可中断:interruptable
    不可中断:uninterruptable
    停止态:stopped,暂停于内存,但不会被调度,除非手动启动
    僵死态:zombie,结束进程,父进程结束前,子进程不关闭

进程查看命令

支持三种选项:

ps命令

 UNIX选项 如-A -e
 BSD选项 如a
 GNU选项 如--help

常用选项:默认显示当前终端中的进程

 a 选项包括所有终端中的进程
 x 选项包括不链接终端的进程
 u 选项显示进程所有者的信息
 f 选项显示进程树,相当于 --forest
 k|--sort 属性 对属性排序,属性前加- 表示倒序
 o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
 L 显示支持的属性列表
-C cmdlist 指定命令,多个命令用,分隔
-L 显示线程
-e 显示所有进程,相当于-A 
-f 显示完整格式程序信息
-F 显示更完整格式的进程信息
-H 以进程层级格式显示进程相关信息
-u userlist 指定有效的用户ID或名称
-U userlist 指定真正的用户ID或名称
-g gid或groupname 指定有效的gid或组名称
-G gid或groupname 指定真正的gid或组名称
-p pid 显示指pid的进程
--ppid pid 显示属于pid的子进程
-t ttylist 指定tty,相当于 t 
-M 显示SELinux信息,相当于Z

状态
技术图片
Head标头:
USER 用户名
UID 用户ID(User ID)
PID 进程ID(Process ID)
PPID 父进程的进程ID(Parent Process id)
SID 会话ID(Session id)
%CPU 进程的cpu占用率
%MEM 进程的内存占用率
VSZ 进程所使用的虚存的大小(Virtual Size)
RSS 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。
TTY 与进程关联的终端(tty)
STAT 进程的状态:进程状态使用字符表示的(STAT的状态码)
R 运行 Runnable (on run queue) 正在运行或在运行队列中等待。
S 睡眠 Sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号。
I 空闲 Idle
Z 僵死 Zombie(a defunct process) 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
D 不可中断 Uninterruptible sleep (ususally IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
T 终止 Terminate 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
P 等待交换页
W 无驻留页 has no resident pages 没有足够的记忆体分页可分配。
X 死掉的进程
< 高优先级进程 高优先序的进程
N 低优先 级进程 低优先序的进程
L 内存锁页 Lock 有记忆体分页分配并缩在记忆体内
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组 
START 进程启动时间和日期
TIME 进程使用的总cpu时间
COMMAND 正在执行的命令行命令
NI 优先级(Nice)
PRI 进程优先级编号(Priority)
WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
FLAGS 与进程相关的数字标识
自定义选项查看ps axo %cpu,pid,%mem,cmd k %cpu

top命令

操作选项:

1  可以监控每个逻辑cpu的状况
b  打开高亮显示功能,同时高亮显示top命令
h 显示帮助画面,给出一些简短的命令总结说明
k 终止一个进程。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s
f 或者F 从当前显示中添加或者删除项目
o或者O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中

top状态查看

技术图片
PID 进程id
USER 进程所有者
PR 进程优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb
RES 进程使用的、未被换出的物理内存大小,单位kb
SHR 共享内存大小,单位kb
START 进程状态 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU 当前CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 进程名称

free内存状态查看

技术图片

 

选项:

free [OPTION] 
-b 以字节为单位
-m 以MB为单位
-g 以GB为单位
-h 易读格式
-o 不显示-/+buffers/cache行 
-t 显示RAM + swap的总和
-s n 刷新间隔为n秒
-c n 刷新n次后即退出


total:表示物理内存总量
used:表示总计分配给缓存(包含buffers与cach)使用的数量,但其中可能有部分缓存并未实际使用。buffers:即块设备的读写缓冲区   cache:用来给文件做缓冲。
free:未被分配的内存
shared:共享内存
bufers:系统已分配但未被使用的buffers数量
cached:系统已分配但未被使用的cache数量
vmstat命令:虚拟内存信息

kill命令:向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写

显示当前系统可用信号: kill –l 或者 trap -l 常用信号查看man手册:man 7 signal 杀死进程kill (信号) 进程编号

1    SIGHUP 无须关闭进程而让其重读配置文件
2    SIGINT 中止正在运行的进程;相当于Ctrl+c
3    SIGQUIT 相当于ctrl+9    SIGKILL 强制杀死正在运行的进程
15   SIGTERM 终止正在运行的进程
18   SIGCONT 继续运行
19   SIGSTOP 后台休眠

进程管理

标签:暂停   没有   priority   src   quit   ESS   交换   rest   -o   

原文地址:https://www.cnblogs.com/seeet/p/11407593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!