Linux---进程控制

进程

什么是进程?
顾名思义就是运行中的程序,在操作系统的角度,就是对运行的程序一个动态的描述,叫做pcb进程控制块。在Linux下是一个task_struct结构体来描述。用过pcb实现对程序运行调度和资源的管理。
pcb中含有什么?
PID进程标志符、内存指针、上下文数据、程序计数器、IO信息…

创建进程

pid_t fork(void):通过复制父进程来创建一个新的子进程
子进程会复制父进程的全部代码,但是是在子进程创建成功位置开始运行。
返回值:>1,父进程,该数字是创建的子进程的pid
=0,子进程
<0,创建失败
用 ps -ef / -aux 命令来查看进程信息

退出进程

exit

进程状态

进程状态决定了操作系统对该进程的操作。
在之前的学习中进程状态分为:运行、阻塞、就绪。
但这只是浅浅的对所有操作系统的统一描述,在Linux下进程状态分为:
运行态(R):正在运行和CPU时间片轮转到就可运行(就绪)状态;
可中断休眠态(S):休眠可以被中断进入运行态
不可中断休眠状态(D):只有满足唤醒条件可运行;
停止态(T):CPU任然在调度,程序停止运行的状态;
死亡态(X):这个只是一个返回状态,在列表里不会看到
僵尸态(Z):进程已经退出不再调度了,但是资源没有被完全释放

僵尸进程

处于僵尸态的进程;
产生原因:子进程先于父进程退出,父进程没有关注到子进程的退出,系统不会释放子进程的资源。
子进程在退出时,在pcb中会保留自己的退出返回值,代表着退出原因。在父进程没有处理的情况下,pcb资源不会被释放。
危害:资源泄露
首先 一个用户能创建的进程是有一定的数量的;再次僵尸进程使 pcb所占的内存资源无法被回收
解决方案:处理和避免
1、退出父进程(代价大)
2、进程等待

孤儿进程

父进程先于子进程退出,子进程成为孤儿进程,运行在后台,父进程的pid为1,是init/systemd进程

精灵(守护)进程

它是一种特殊的孤儿进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值