Linux进程的概念、诞生和死亡
一. 进程的概念?
1. 什么是程序?什么是进程?
程序就是一堆待执行的代码。 -> 静态的文本数据。 例如: project.c(C语言程序) / project(可执行程序)。
进程就是当程序被CPU加载,根据每一行代码做出相应的效果,才能形成一个动态的过程,这个过程就称之为进程。
2. 在linux下,如何开启一个新的进程?
直接在linux下执行程序即可。
例如: ./project -> 开启一个新的进程!
3. 当进程开启,系统会为进程分配什么资源?
1)会分配进程对应内存空间。
2)任务结构体 -> struct task_struct -> 在linux下,任何进程就像一个任务。
二. 关于查看进程信息的linux命令。
1)查看整个linux系统的ID号 -> ps -ef(静态)
gec@ubuntu:~$ ps -ef
用户名 PID PPID 创建时间 持续时间 进程名字
root 1 0 0 16:37 ? 00:00:00 /sbin/init -> 祖先进程
gec 2272 1 0 16:37 ? 00:00:01 gnome-terminal -> linux终端
gec 2278 2272 0 16:37 pts/1 00:00:00 bash -> linux终端的子进程,叫bash进程
gec 2720 2278 0 18:54 pts/1 00:00:00 ps -ef -> bash进程的子进程,shell命令
2)查看进程CPU使用率 -> top(动态)
gec@ubuntu:~$ top
Tasks: 150 total -> 当前系统有150个进程
2 running -> 2个在运行态
148 sleeping -> 148个睡眠态
0 stopped -> 0个暂停态
0 zombie -> 0个僵尸态
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1049 root 20 0 96160 26m 6700 S 5.3 2.6 0:18.50 Xorg
S -> state当前进程状态
%CPU -> 当前瞬间CPU占用率
%MEM -> 当前瞬间内存占用率
3)查看整个系统的关系图 -> pstree
gec@ubuntu:~$ pstree
三. 进程的诞生与死亡。
1.进程有什么状态?
进程生老病死就是从进程开启到进程结束经历所有状态。
就绪态: 不占用CPU资源,不运行代码。
运行态: 占用CPU资源,运行代码。
暂停态: 占用CPU资源,不运行代码,可以切换到就绪态/运行态
睡眠态: 占用CPU资源,运行代码,可以切换到就绪态/运行态
僵尸态: 占用CPU资源,不运行代码,不可以切换到就绪态/运行态
死亡态: 不占用CPU资源,不运行代码。
2. 什么是占用CPU资源?
就是进程自身的资源(任务结构体)没有释放。
3. 什么是僵尸态?
进程结束时,一定会切换到僵尸态。所谓僵尸态,就是本进程已经结束,但是自身的资源还没有释放掉。
4. 需要注意的地方:
1)进程在暂停态时,如果收到继续的信号,是切换到就绪态,而不是运行态。
2)进程退出时,一定会变成僵尸态。
3)进程不可以没有父进程,也不能同时拥有两个父进程。
4)孤儿进程特点: 当自己的父进程退出后,会马上寻找继父,而不是等到变成僵尸再找。
5)init祖先进程特点: 一定会帮所有的孤儿回收资源。

浙公网安备 33010602011771号