Linux进程——进程优先级与僵尸进程孤儿进程

僵尸进程

僵尸状态进程本质上就是死亡状态

在进程死亡之后,不会直接对进程进行释放,而是先会处理一些后事

进程在结束退出的时候,也会有一些信息来表示任务完成的如何

一个最最直接的例子就是,C/C++中主函数的return0,在一开始学的时候很不理解为什么要return0,但其实0只是表示正常执行结束的信息,程序也可以返回1、2、3等内容来表示别的情况

当进程退出,但是还没有处理完后事的时候,就处于僵尸状态

变成僵尸状态的过程

我们在退出进程的时候,需要一些信息来表示任务完成的如何,那么这些信息要交给谁呢,也就是这个return给了谁

答案就是父进程,当一个进程在退出的时候,退出信息会由操作系统写入到当前退出进程的PCB中,可以允许进程的代码和数据空间被释放,但是不允许进程的PCB被立即释放

所以僵尸状态的定义就是,当一个进程退出,但退出信息没有被父进程读取,此时退出进程的PCB没有被释放,就处于僵尸状态

但是当一个进程长期处于僵尸状态时,如果不及时处理,就会有内存泄漏的风险

我们可以用下面的代码来观察和僵尸进程

#include <stdio.h>    
#include <unistd.h>    
#include <sys/types.h>    
#include<stdlib.h>                                                                
int main()    
{    
    int id=fork();    
    if(id==1)    
    {    
        sleep(1);    
        exit(2);    
    }    
    if(id>1)    
    {    
        while(1)    
        {    
            sleep(1);    
            printf("这是一个进程,%d\n",getpid());    
        }    
    }    
    return 0;    
}   

QQ_1721043695612.png

孤儿进程

孤儿进程就是我们知道的父进程挂了的进程

当一个进程的父进程挂了,就没有父进程给他回收了,就会一直占用资源,但是这时候操作系统没办法,只能领养他,来回收这个孤儿进程的资源

进程优先级

我们用进程优先级来表示CPU分配资源的先后顺序

优先级高的进程拥有先执行的权力,可以很好的改善系统的性能,还可以把进程运行到指定的CPU上

我们可以使用ps -l或者ps -al来查看优先级

QQ_1721044073228.png

现在我们只关心这两个信息

第一个是PRI,指的是进程优先级,值越小优先级越高

第二个是NI,指的是优先级修正数据,也成为nice值

在Linux中,优先级的取值范围是60到99,PRI就是默认优先级,真正的优先级则是默认优先级加上nice值

如何修改进程优先级

这里需要四步

  1. 输入top启动任务管理器
  2. 输入r来修改nice值
  3. 输入目标的进程pid
  4. 输入想要修改的值

系统允许优先级变低(nice值变大),如果想要将优先级变高(nice值减小)则需要sudo或root

修改优先级也有别的方法,这里不做赘述

为什么优先级有范围

主要是因为所有的进程都想要得到资源,当用户可以无限修改优先级时

优先级较低的进程就无法继续了,就会造成进程饥饿

当进程在一个CPU上被处理时,并不是一直放在CPU,过段时间可能会放其他的进程

这里普及一下并行和并发的概念

并行指的是多个CPU同时工作

并发指的是一个CPU在一段时间内进程切换,使得多个进程同时推进

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

栖林_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值