Linux下关于进程的相关概念

本文深入解析进程概念,从用户及操作系统视角阐述进程本质,详解进程查看、创建与状态管理,探讨僵尸与孤儿进程现象及其解决方案。

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

1.进程概念

用户理解层面:

进程就是运行起来的程序。

从操作系统层面理解进程:

程序运行需要将代码数据加载带内存中,操作系统上运行了很多程序
操作系统必须管理这些程序的运行

在操作系统的层面,进程就是操作系统对一个运行程序的描述。
举个栗子:在校长眼里,只能通过档案管理学生,不能直接指导xxx是哪位同学

在操作系统眼中,通过对运行程序的描述来进行管理,
这个运行程序的描述就是PCB(进程控制块)
PCB —Linux下是struct task_struct结构体

PCB的描述信息:
内存指针,程序计数器,上下文数据,标识符(process id),进程状态,进程优先级(cpu资源的优先分配权),记账信息,io状态信息

2.进程查看

ps -ef 
ps -aux //都可以查看系统进程信息

3.进程创建

fork()

创建子进程的意义何在:
1.分摊任务处理压力;
2.让子进程背锅;

创建进程:–fork()–操作系统通过复制调用进程创建一个新的子进程
复制:复制父进程的pcb(代码共享,数据独有)

如何让子进程完成其他任务?(分辨出父子进程
根据返回值:
(1)对于父进程来说:fork返回值为子进程的PID;创建子进程失败返回-1
(2)对于子进程,fork返回值是0;
数据独有,代码共享 (指向同一个内存指针)

4.进程状态

运行:
(1)R (拿到时间片即可运行,或正在运行)
(2)可中断休眠:S(可被简单操作唤醒)
(3)不可中断休眠:D(磁盘休眠,特定方式唤醒,睡够了才醒,即通 常等待io调用结束)

4.1僵尸进程

概念:进程先于父进程退出,因为要保留退出原因,因此操作系统不能直接释放所有资源,通知父进程获取退出原因,允许操作系统释放资源。但是父进程没有关注到这个通知,系统无法释放资源,导致处于僵死状态称为僵尸进程。

僵尸进程的危害:导致资源泄露:
如何避免:进程等待
处理方式:退出父进程

代码模拟:
在这里插入图片描述
查看进程:
在这里插入图片描述
直接杀死子进程,让其变成僵尸进程Z
在这里插入图片描述
杀死父进程可以解决僵尸进程
在这里插入图片描述

4.2 孤儿进程

概念:父进程先于子进程退出,子进程就会成为孤儿进程,运行在后台,父进程成为1号进程。

测试代码同上
我们运行程序,并查看进程信息,可以发现此时父进程的pid是3977,子进程的pid是3978,然后我们结束掉父进程,父进程直接消失了,而子进程的状态变成了S,没有了“+”,此时运行在后台了。
在这里插入图片描述
我们发现运行在后台的孤儿进程父进程变成1号进程
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值