linux系统编程---多进程

本文介绍了进程的基本概念,包括进程定义、孤儿进程与僵尸进程的区别及其处理方法,并详细解释了进程的三种基本状态转换过程,最后探讨了死锁现象及其预防算法。

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

最近发现每天都在写业务代码,好多基础的东西都忘了,今天开始每天复习一点基础知识。今天先复习多进程

进程是具有一定功能的程序的一次运行活动,是系统资源分配和调度的基本单位
孤儿进程:父进程退出,子进程没有退出,被init进程收养
init进程:是内核启动后运行的第一个进程,是所有孤儿进程的子进程。init进程会循环的wait退出的孤儿进程,因此孤儿进程不会变成僵尸进程,不会造成危害
僵尸进程:进程结束了,但是父进程没有wait或waitpid判断他的状态,那么子进程描述符仍然在系统中,就会变成僵尸进程,造成资源浪费
僵尸进程处理办法:1.子进程退出的时候给父进程一个信号,父进程通过wait或waitpid等待子进程退出 2.杀死父进程,让子进程变成孤儿进程,让init进程进行回收


进程的三个状态:
运行态 ------> 就绪态    1.占用时间太长,时间片用完了        2.抢占式调度的系统中,高优先级的进程要运行时,低优先级的进程让出cpu,状态由运行态变为就绪态


运行态  ------> 阻塞态  正在执行的进程由于某等待事件而无法继续执行,状态由运行态变为阻塞态,如发生了io请求


就绪态  ----->运行态  正在运行的进程时间片用完,调度在就绪队列选择合适的进程分配cpu,被选中的进程由就绪态变为运行态


阻塞态 ------->就绪态  阻塞态进程的等待事件发生了,就由阻塞态转为就绪态


死锁:
两个或两个以上的进程在执行的过程中,由于竞争资源或由于彼此通信而造成的一种阻塞现象
集合中的每一个进程都在等待只能由集合中的其他进程才能引发的事件,那么该组进程是死锁的


死锁产生的原因:
系统资源的竞争
进程运行的推进顺序不得当


死锁的必要条件:
互斥条件
循环等待条件
不剥夺条件
请求和保持条件


避免死锁的一种有效算法:银行家算法 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值