进程相关基础:
Linux中的每个进程都是由其父进程创建的.init是内核启动后第一个运行的进程.之后从init创 建出各种进程.
通过pstree命令可以查看当前进程情况
CoW机制:当父进程创建了一个子进程的时候开始 两个进程指向的内存空间是一样的.子进程需 要修改数据时. 会把父进程的数据复制一份到别的内存空间中修改
进程有优先级的概念 等级从0到139
1-99 | 实时优先级 数字越大 优先级越高 |
100-139 | 静态优先级 数字越小 优先级越高 |
优先级有有NICE值的概念. 可以通过nice值调整进程的优先级
NICE值的范围是从-20到+19 -20对应100 +19 对应139
大家应该知道CPU时分时工作模式.在CPU中的某个时刻 CPU只能处理一个进程.并且为了防止进 程死锁和一个进程占用太长时间的CPU导致后面的任务无法执行.所以CPU采用分时机制.每个进 程占用CPU一段时间后就推出进程 由下一个进程再占用CPU一段时间执行任务
此时不知道有没有人会和我当初一样有这种疑问.如果没处理完的数据接着按照优先级排队的话会 不会有优先级低的进程等不到处理.我觉得可能是为了解决这个问题:
进程有两个队列:
运行队列:等运行队列中的进程都运行过一遍之后 过期队列变为运行队列
过期队列:在同一个运行队列中已经运行调度过的进程在这里排队
进程内存:内核知道每个进程需要多少内存运行.内核会把自身占据内存之外的其余部分分为页框 (page frame) 一个页框4kb. 并且把页框分给进程 页框不一定是连续的. 但是在进程眼里自己 使用的内存空间是连续的
常驻内存集: 不能被交换 只能存在于物理空间的
虚拟内存集: 可以被交换的
进程的状态有:
运行态: running
就绪态: ready
睡眠态:
可中断: interruptable 随时可中断
不可中断:uninterruptable 不可随时中断. 如正在进行的IO
停止态: 暂停于内存中,但不会被调度 除非手动启动
僵死态: 父进程挂了 子进程还没挂的状态
进程分为:
CPU-Bound : DUI cpu占用大 IO不怎么占用的
IO-Bound : 对IO占用大 对CPU不大的 交互式进程大多属于这一类
在I/O执行过程中.进程要访问的数据不再内存中时,要从磁盘读入步骤为
1.装载至内核内存
2.从内核内存装载至进程内存
一些经常用来查看进程的命令
ps命令 把当前执行的命令显示出来
ps [options]
选项风格:
(1) 必须带-
(2) 不能带-
(3) 必须--
选项:
a:显示所有与终端相关的进程
x:显示所有与终端无关的进程
组合: ax 显示所有进程
u:以用户为中心 排序显示
在查询结果中
STAT:当前进程的运行状态有
R | RUNNING |
S | 可中断睡眠 |
D | 不可中断睡眠 |
T | stopped |
Z | zombie |
+ | 前台线程 |
l | 多线程进程 |
N | 低优先级进程 |
< | 高优先级进程 |
s | 会话主导者 |
-e : 显示所有进程
-f : 显示完整格式的进程信息
-F : 显示完整格式的进程信息
-H : 以层级结构显示进程的相关信息
常用组合: -eFH
o: 自定义要显示的字段 以逗号分隔各字段
ps axo pid,command
常用字段 : pid,ni,pri,psr,pcpu,stat,comm,tty,ppid,rtprio
ni : 表示nice值
priority : priority 优先级
rtprio : real time priority 时时优先级
top: 类似于Windows中的进程管理器
默认按占用CPU百分比显示
实时更新 按q退出
top [option]
P: 默认 以占据CPU百分比的排序
M: 以占据内存百分比排序
T: 累计占用CPU时间进行排序
-d # : 指定刷新时间间隔
-b : 以批次方式显示 刷屏方式
-n # : 显示多少批次 显示完后
-u : -u username 显示指定用户的进程信息
在首部信息中 load average : 之后的三组数字表示过去1,5,15分钟的平均负载数
子命令:
tacks,cpu : t命令关闭/开启
内存: m 关闭/开启
退出命令: q
默认刷新时间 :3 秒 s 命令之后输入秒数
k命令 输入PID 关闭指定进程
1 开启/关闭CPU 多核显示
d # : 指定刷新时间间隔
htop : 界面更好看 进化版的top 支持鼠标点击
-d # : 指定刷新时间间隔
-u Username : 进现实指定用户的进程;
-s COLUME : 以指定字段进行排序
子命令
可以鼠标点击每个进程
l 跟踪一个进程所打开的文件
s 跟踪一个进程发起的系统调用
t 以树状格式显示各进程
a 将选定的进程绑定至某CPU
按F2可进入设置 可以调整显示方式
dstat 强大的实时监控工具 需要自行安装
界面不是动态刷新 而是以滚动刷屏方式显示
dstat [-afv] [options..][delay[count]]
常用选项:
-c --cpu 显示cpu相关信息
-C #,#...total 分别显示每颗CPU total 显示总的
-d --disk 显示磁盘的相关信息
-D sda,sdb,...tobal 显示指定磁盘 total 显示总的
-g 显示page相关的速率数据
-m Memory的相关统计数据
-n Interface的相关统计数据
-p 显示process的相关统计数据
-r 显示io请求的相关统计数据
-s 显示swapped的相关统计数据
--tcp
--udp
--raw
--socket
--ipc
--top-cpu : 显示最占用cpu的进程
--top-io : 最占用io的进程
--top-mem : 最占用内存的进程
--top-lantency : 延迟最大的进程