进程的概念

本文详细介绍了Linux系统中的进程概念,包括进程的定义、进程控制块(PCB)、进程查看方法如`ps`命令,以及父子进程的创建与标识。还讨论了进程的不同状态,如运行、阻塞、僵尸和孤儿进程,并阐述了进程的优先级及其影响。此外,文章还提到了进程的生命周期和如何通过`fork`函数创建新的父子进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

进程的概念

进程的描述pcb

查看进程

父子进程 

fork函数创建父子进程

进程状态

进程状态查看

进程状态

Z——僵尸进程

孤儿进程

进程的优先级

其他概念


进程的概念

程序的一个执行实例,启动一个软件,本质上是启动一个进程

linux中,运行命令,也是创建一个进程,内核上的说法是担任分配系统资源的实例

每次调用程序,都会创建一个新的进程

一个作业任务的完成可由多个进程组成,且必须至少由一个进程组成

程序是静态的,而进程是动态的。

进程的描述pcb

文件 = 内容 + 属性

进程 = 对应的代码和数据 + 进程对应的pcb结构体

pcb(process control block)进程控制块,是一个结构体

task_struct是linux下描述进程的结构体

查看进程

方式一:

ps -l        查看当前进程

ps -axj        查看所有进程

方式二:

ls /proc        查看所有进程文件

ls /proc/pid        查看对应进程的文件,其中有些文件是每个进程都会具有的

父子进程 

pid_t        是无符号整型
getpid()        获取子进程
getppid()        获取父进程


头文件:
#include <sys/types.h>
#include <unistd.h>
只需要包含其中一个

所有的函数只能在进程中才能被调用

kill -9 pid        可以关掉进程

killall 名称        关掉所有和名称有关的进程

每次登录都有不同的shell进程

fork函数创建父子进程

头文件是        #include <unistd.h>

返回值pid_t        无符号整型

子进程返回0,父进程返回子进程pid,出错返回-1

使用后会变成两个进程,一个父进程,一个子进程

进程状态

进程状态查看

ps -l        查看当前的进程

 ps ajx        查看所有进程

进程状态

R(running):运行状态

S(sleeping):阻塞状态,可中断

D(disk sleep):书面状态,磁盘状态,深度睡眠,不可被中断,不可以被被动唤醒

T(stopped):暂停状态

(睡眠和暂停区别,睡眠等待资源,暂停为了调试)

t(tracing stop):调试状态

Z(zombie):僵尸状态,一个进程已经退出,但是还不允许被os释放,处于一个被检测的状态-僵尸状态(一般是父进程或os检测)

X(dead):dead终止状态(具有瞬时性)

+前台进程(启动后,是的命令无效,命令行解释器无效,可以使用ctrl + c取消)

./文件 & (后台进程)

Z——僵尸进程

概念:一个子进程已经退出,但是还不允许被os释放,处于一个被检测的状态-僵尸状态(一般是父进程或os检测),此时会一直等待父进程读取退出状态代码

危害:内存泄露,pcb一直需要维护子进程

孤儿进程

概念:

父进程退出,子进程还在,子进程就叫做孤儿进程!

孤儿进程会被1号进程领养(init,系统本身)

进程的优先级

概念:cpu资源分配的先后顺序

pri:代表被执行的优先级,值越小越早被执行

ni(nice):优先级的修正数据(值-20 - 19)

 pri(new) = pri(old) + nice

更改pri:进入top后按“r”->输入进程pid->输入nice值
普通用户修改优先级只能往低的调,调高要sudo

其他概念

竞争性:系统进程数量多,而cpu只有少量或者只有一个,所以进程中具有竞争属性,有了优先级

独立性:多进程运行,共享资源,多进程之间互不干扰

并行:多个进程在多个cpu下运行,成为并行

并发:多个进程在一个cpu下采用进程切换方式,使得一段时间内,多个进程都能够进行运行,称为并发

时间片:os会给每个进程设置一个时间段提供运行,过来这段时间,这个进程就会被强制下线

抢占和出让:进程会根据优先级强制将前面还没有完成时间片的进程下线,或者出让给优先级高的进程

上下文数据:寄存器中的临时数据,叫做a的上下文数据,上下文数据不能够被丢弃

切换:如果进程a正在被运行,cpu内的寄存器里面,一定保存的是进程A的临时数据,当进程a被切换下来时候,进程a需要带走自己的上下文数据,为了下次回来时候,能够恢复,继续按照之前的逻辑运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起慢慢变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值