一、基本概念
1:了解进程,我们得先了解程序是什么,程序就是一个存储在电脑磁盘上的文件,而进程就是一个正在运行的程序,就好比是打开的qq。一个程序也可能是包含了多个进程,就是同时执行一些不同的任务。
2:进程的分类
分为交互进程,批处理进程,守护进程。
3:进程的状态
可以通过终端的指令来查看进程 ps -aux 其中进程信息表中的STAT就是进程的状态
O:就绪态,一切准备工作都已经做好 ,等待被调用。
R:运行态,Linux系统下没有O状态,所以说O也就是R。
S:可以唤醒的睡眠态,系统调用,获取到资源或者是收到消息都可以被唤醒
D:不可被唤醒的睡眠态,必须等到他的事件来临。
T:暂停态,收到了SIGSTP信号,直到收到SIGCONT信号才会继续运行
X:死亡态,已经结束的进程,通过另一个终端可以看到它的最后的状态
Z: 僵尸态,子进程结束后没有被父进程及时回收,子进程就会变成僵尸进程。
<: 高优先级,此进程会优先于其他进程先执行。
N: 低优先级,可以理解为此进程重要性不高,可以被后执行。
L: 多线程进程
s: 有子进程的进程。
+: 后台进程组
4:父子进程组
如果进程B是由进程A开启的,那么A就是B的父进程,B就是A的子进程。
当子进程结束时会向父进程发送信号SIGCHLD,父进程收到后会回收子进程。
当子进程结束时,父进程没有及时回收,那么这个子进程就会变成僵尸进程。
当子进程结束时,父进程先于它结束,那么该子进程就会变成孤儿进程,最终被init这个进程回收。
5:进程标识符
也就是进程号,可以通过getpid函数获取到这个无符号整数。
这个编号时循环使用的,当进程结束后,这个编号就和这个进程没有了关系,会被延时重用。
,