day1
进程控制块管理了上面所有的数据
程序运行起来所有东西都在内存里面。堆和栈每一个里面存放不同类型的东西,进程所需要用到的
这一章的ppt面试中会遇到
一个是存放初始化过的,另一个是放未初始化过的
ps命令是linux的shell下所有的进程, ps -e命令查看 linux下所有进程
表头 | 含义 |
F | 进程标志,说明进程的权限,常见的标志有两个:
|
S | 进程状态。进程状态。常见的状态有以下几种:
|
UID | 运行此进程的用户的 ID; |
PID | 进程的 ID; |
PPID | 父进程的 ID; |
C | 该进程的 CPU 使用率,单位是百分比; |
PRI | 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行; |
NI | 进程的优先级,数值越小,该进程越早被执行; |
ADDR | 该进程在内存的哪个位置; |
SZ | 该进程占用多大内存; |
WCHAN | 该进程是否运行。"-"代表正在运行; |
TTY | 该进程由哪个终端产生; |
TIME | 该进程占用 CPU 的运算时间,注意不是系统时间; |
CMD | 产生此进程的命令名; |
top 查看进程动态信息
shift +> 后翻页
shift +< 前翻页
top -p PID 查看某个进程
改变进程优先级
nice 按用户指定的优先级运行进程
nice [-n NI值] 命令
NI 范围是 -20~19。数值越大优先级越低
普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。
普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。
只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。
renice 改变正在运行进程的优先级
renice [优先级] PID
jobs 查看后台进程
bg 将挂起的进程在后台运行
fg 把后台运行的进程放到前台运行
ctrl+z 把运行的前台进程转为后台并停止。
./test & 把test程序后台运行
一个父进程打印的,一个子进程打印的
这样写是为了区分父进程和子进程,父进程执行判断上面的内容,子进程执行第二个printf,至于最后一个这个printf("after fork\n")不知道是父进程还是子进程执行的。
要点:
1 子进程只执行fork之后的代码
2.父子进程执行顺序是操作系统决定的。
kill -9 19516 杀掉子进程,就是子进程先结束。
没有回收就变成了僵尸进程,如dufuct就是僵尸进程