进程:这是一个在内存中运行的任务实例
-
Linux下进程属性:
-
进程拥有自己独立的PID(身份证号)
-
0 ~ 65535 PID是有限的
-
当你一台Linux有了超过65535个进程,第65536个进程 无法启动!
-
-
独立的内存空间,独立的地址。
-
PID:
-
0:这个进程是真正的调度进程(idle进程),是系统初始化的第一个进程,是所有其他进程的祖先!
-
1:这个进程是Init进程,后续的系统启动,由0进程创建,第一个子进程,完成剩余的系统引导工作。
-
2:线程/进程 管理进程
-
-
PCB控制块 process control block
-
进程PCB是用来管理进程,维护进程属性的一个数据块
-
记录进程中的属性特征,进程的运行状态
-
没有合法PCB的进程,不会被操作系统所识别管理
-
-
PCB进程控制块中主要有以下:
-
进程标识符 PID。
-
调度信息:进程优先级
-
进程状态:挂起,就绪,执行,中断,僵尸。
-
进程使用的内存空间:文件,套接字(socket),网卡,硬件设备。
-
处理器信息:计数器,寄存器,指针。
-
-
-
进程的状态:
-
R:就绪/运行 READY RUNNING
-
实际在CPU上运行的进程,可以被称作运行状态
-
接下来要执行的进程,处于就绪状态,那么也会被称作R
-
-
S:可中断睡眠状态
-
进程去等待资源,等待别人链接,等待读取文件内容,等待打开硬件设备,CPU资源不够用
-
等待的进程,有专门的任务队列维护,通过一定的事件可以重新激活这些进程进入运行状态R
-
-
D:不可中断睡眠状态
-
一般是一些内核进程,Kill -9无法直接杀死,并且无法直接唤醒
-
这样的进程也处于睡眠状态
-
这种睡眠状态是为了保护一些硬件资源,保护一些设备。
-
-
T:暂停状态
-
调试程序,打断点
-
-
X:停止状态
-
Z:进程在退出时,必须要经过僵尸状态。
-
每个进程在退出的时候,都会释放掉内存,但是如果父进程并没有对他做PCB释放,
-
这个PCB进程控制块就会保留下来,会一致占用PID
-
-
-
僵尸进程:
-
父进程创建子进程,但是并没有及时回收工作完毕的子进程
-
没有被释放资源的子进程就会被称作僵尸进程
-
在于PCB进程控制块无法及时得到释放,所以会导致无法创建新的进程,占用了PID资源。
-
注意:开发者要注意回收僵尸进程,没人会帮你释放僵尸进程。
-
-
孤儿进程:
-
父进程先结束了
-
还在执行的子进程没人管了。
-
孤儿进程就由此诞生了
-
孤儿进程会被INIT进程接管,然后完成之后,INIT进程帮你回收。
-
-
进程状态下一级别:
-
s:进程的会话负责人
-
<:进程有高优先级
-
N:进程有低优先级
-
l:具备多线程的进程
-
+:位于后台的进程
-
-
Nice值:Linux进程优先级 整数
-
权限:-20 - +19
-
数字越小,优先级越高
-
只有超级用户可有把进程优先级设置为负数
-
-
VSZ:进程占用的虚拟内存大小
-
RSS:这个进程占用的固定内存大小
-
PRI/NI:进程优先级
-
TTY:打开的虚拟终端
-
PPID:当前进程的父进程ID
-
COMMAND:开启这个进程的命令
-
USER:开启进程的用户(表示了当前进程有什么样的权利)
-
F:进程旗标(process flag)
-
进程的权限
-
4:ROOT权限
-