系统相关
首页 > 系统相关> > Linux ---- 进程

Linux ---- 进程

作者:互联网

Linux进程


进程是程序的一个执行实例,正在执行的程序等。 在内核的角度看 : 担当分配系统资源(CPU时间,内存)的实体。

文章目录


一、PCB(进程控制块)

PCB (process control block)

进程的信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。是一个C语言的结构体 task_struct



task_struct 内容

在Linux中描述进程的结构体叫做task_struct。
task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。





二、查看进程

Linux 中,万物皆文件,/proc 文件夹下就存储的进程信息。 可以用ps 或 top命令查看进程信息。

在这里插入图片描述


使用系统调用接口获取PID

在这里插入图片描述
在这里插入图片描述



通过fork创建进程

fork是一个系统调用接口,通过它创建一个子进程。


fork创建的子进程和父进程共享一份用户代码,而用户数据都是独立私有的,所有进程都有独立性,例如多开几个QQ,一个崩溃了不会影响其他进程。
在这里插入图片描述

父进程和子进程的执行顺序是不确定的。
在这里插入图片描述


fork为子进程返回0,为父进程返回子进程pid,通过fork不同的返回值使两个执行流进行不同的操作,这就是并发。
在这里插入图片描述
在这里插入图片描述



三、进程状态

在Linux内核中,进程一共有以下几种状态。

在这里插入图片描述


僵尸进程的危害

进程的退出状态必须一直被维持下去,因为他要告知其进程(父进程),你交给我的任务,我办的怎么样了。可父进程如果一直不读取,那子进程就一直处于Z状态,操作系统还需要继续维护该进程的PCB,就会造成内存泄露。



孤儿进程

父进程如果提前退出子进程还在运行,那么子进程就会成为孤儿进程,孤儿进程会被pid为1 (init进程)的进程领养,如果子进程进入Z状态那么回收工作也就由 init 进程执行。



无法被kill的进程

处于D状态的进程和僵尸进程,是无法被杀死的。




进程优先级

linux中的进程优先级由 priority值 和 nice 值确定,数值越小,优先级越高。

在这里插入图片描述


PRI & NI


PRI也还是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先居顺序,此值越小进程的优先级别越高
那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值
PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRl(new)=PRI(old)+nice
这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行所以,调整进程优先级,在Linux下,就是调整进程nice值
nice其取值范围是-20至19,一共40个级别。

需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。
可以理解nice值是进程优先级的修正修正数据

标签:状态,优先级,PRI,----,Linux,进程,nice
来源: https://blog.csdn.net/juggte/article/details/121875373