进程状态转换
三态模型:就绪态、运行态、阻塞态
五态模型:新建态、就绪态、运行态、阻塞态、终止态
进程的状态
查看进程 man ps
- ps aux / ajx (PPID 父进程的IP、 PID 进程的ID、PGID 进程组的ID、SID 绘话)
- a:显示终端上的所有进程, 包括其他用户的进程
- u: 显示进程的详细信息
- x: 显示没有控制终端的进程
- j: 列出与作业控制相关的信息
进程状态转换
STAT 参数意义:
D 不可中断 Uninterruptible(usually IO)
R 正在运行, 或在队列中的进程
S (大写) 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换 (从内核2.6开始无效)
X 杀掉的进程
< 高优先级
N 底优先级
s 包含子进程
+ 位于前台的进程组
实时显示进程状态
top
可以在使用 top 命令时加上 -d 来指定显示信息更新的时间间隔,在top命令执行后,可以按下按键对显示的结果排序
按 键
- M 根据内存使用量排序
- P 根据 CPU 占有率排序
- T 根据进程运行时间长短
- U 根据用户名来筛选进程
- K 输入指定的 PID 杀死进程
杀死进程
- kill [-signal] pid
- kill -l 列出所有信号
- kill -SIGKILL 进程ID
- kill -9 进程ID // -l 信号 SIGKILL / -9 强制杀死
- Killall name 根据进程名杀死进程
进程杀死测试
终端 测试 运行代码
1 | /************************************************************************* |
后台运行
./a.out &
进程号和相关函数
pid 进程ID
ppid 父进程的ID
pgpid 用组的ID
进程创建 - man 2 fork
系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成讲程树结构模型
1 | /************************************************************************* |
fork 执行流程
修改子进程后就会开辟一个新地址