一、程序与进程
1、什么是进程
1.通俗来说,进程就是正在运行的一个程序。
2.内核观点:担当分配系统资源(CPU时间,内存)的实体
3.操作系统的角度来说,进程描述为一个结构体---->PCB(在Linux下PCB位task_struct)
4.进程的创建是有限的
(指令,参数)
程序 ------》系统调运-------》缓存(内存)---------》cpu处理 执行任务
特点:静态的,封闭的。
程序 ------运行--------》进程1,进程2,进程3,…
2、进程的特性
(1)动态
(2)有生命周期
(3)运行状态
(4)操作系统运行的基本单位。
(5)并发性,交互性
3、扩展
应用 (应用程序)
|
内核 (内核文件,内核模块,驱动程序)
| 固件(芯片+程序)
硬件
二、进程和线程
进程-----线程1,线程2,线程3,… ----》线程把任务整个任务完成之后,才能运行。
扩展:
(linux:进程,线程----->独立的资源集),入口,序列,出口。**
三、父进程和子进程
父进程------》子进程----》子进程
父进程的资源,权限,
------>(exec())运行自己的程序。
——exit()
|
<-------------------- 僵尸进程
唤醒
什么是僵尸进程?
子进程先退出,父进程后退出
子进程退出为了保存退出状态,因此这个子进程退出后的资源不会被完全释放,他必须等待父进程接收到他的退出状态,让父进程来子进程释放资源
如果父进程不管不问子进程,那么这个时候子进程就变成了僵尸进程,占用着系统资源不释放
四、进程管理工具
(1)pstree:
(2)ps
(3)pgrep
(4)kill
(5)killall
0,9
(6)pskill
(7)htop
(8)vmstat
(参数)
(9)lsof 文件句柄
-u
-i
-p
-d
+d
+D
-c
-g
五、进程的优先级
进程优先级划分【0-139】【0-99】:有效实时的优先级
0---------139
<------------优先级越高
-20------------19
<------------优先级越高
【100-139】:非有效实时优先级------调整 nice 【-20,19】
nice值的调整:
top “r”–enter;输入PID–enter;输入nice值–enter
renice 【-20,19】 PPID
htop F7(-) F8(+)
如何查看进程的优先级
查看优先级命令ps -l
UID:代表执行者的身份
PID:代表进程的id
PPID:代表父进程id
PRI:代表正在执行的进程的优先级,该值越小优先级越高,越早被执行
NI:代表这个进程的nice值
这里我们可以看到NI(nice)值,这个nice值我们称之为进程优先级的可修正数据,所以:
PRI = PRI + NI(nice)
这里当NI为负数时,PRI最小及优先级最高
六、进程的状态
sleeping —睡眠状态
stopping —停止状态
running —运行状态
zombie —僵死状态
实时变化的
R—>运行状态
S—>睡眠状态(可中断睡眠状态)
D—>磁盘休眠状态(不可中断睡眠状态)
T—>停止状态
X—>死亡状态
t —>追踪状态
Z—>僵尸状态(很重要,必须理解)
7.进程在前后台的运行;作业控制
在前台一次只能运行一个作业。
在后台可以运行多个作业
ping 192.168.42.2 > /dev/null 2>&1 &
jobs 查看后台作业;与终端,不同终端上的作业要在对应终端上查看。
fg %job编号
bg %job编号 把后台作业运行起来
ctrl + z :挂起
kill %job编号 先停止,在杀死。
ping 192.168.42.2 & 已经在后台运行,在前台输出结果;不影响前台作业执行
jobs
kill