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

news2024/9/23 17:22:15

文章目录

    • 僵尸进程
      • 变成僵尸状态的过程
    • 孤儿进程
    • 进程优先级
      • 如何修改进程优先级
      • 为什么优先级有范围

僵尸进程

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

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

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

一个最最直接的例子就是,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在一段时间内进程切换,使得多个进程同时推进

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1929835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

介绍 Elasticsearch 中的 Learning to Tank - 学习排名

作者&#xff1a;来自 Elastic Aurlien Foucret 从 Elasticsearch 8.13 开始&#xff0c;我们提供了原生集成到 Elasticsearch 中的学习排名 (learning to rank - LTR) 实现。LTR 使用经过训练的机器学习 (ML) 模型为你的搜索引擎构建排名功能。通常&#xff0c;该模型用作第二…

CSA笔记1-基础知识和目录管理命令

[litonglocalhost ~]$ 是终端提示符&#xff0c;类似于Windows下的cmd的命令行 litong 当前系统登录的用户名 分隔符 localhost 当前机器名称&#xff0c;本地主机 ~ 当前用户的家目录 $ 表示当前用户为普通用户若为#则表示当前用户为超级管理员 su root 切换root权限…

我利用ChatGPT开发了一个网盘资源搜索神器APP

首先声明,本文不是买东西,仅分享个人利用ChatGPT开发项目的个人经验分享。 之前已经开发完Web端网盘资源搜索引擎,而在安卓平台使用浏览器访问总是有点不方便,于是考虑开发一个安卓端APP。 可是,自己并没有开发APP经验,那怎么办? 都说AI可以帮你搞定一切,那就用一用…

python项目读取oracle数据库方法(cx_Oracle库实现)

目录 创建一个python项目&#xff0c;并配置运行环境 查看oracle对应数据库版本&#xff08;该标题下内容只是为了查看版本&#xff0c;不用在意&#xff09; 从oracle官网下载对应版本的oracle客户端 解压下载的压缩包&#xff0c;并获取依赖 将依赖文件导入python项目运…

Perl之正则表达式

正则表达式(regular expression)描述了一种字符串匹配的模式&#xff0c;可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。   Perl语言的正则表达式功能非常强大&#xff0c;基本上是常用语言中最强大的&#xff0c;很多语言…

论 Suspense 组件在 Vue 3 中的重要性

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 你是否曾经遇到过在加载大量数据时,界面卡顿或是空白的问题? 如果你正在开发一个复杂的前端项目,那么一定需要处理很多异步数据请求。而异步请求太多就会导致用户看到空白屏幕时间变长,这对用户体验非常不友好。🤔 在…

【C++】C++11的新特性 --- 列表初始化,auto关键字,decltype关键字

人的理想与成就之间有一段距离 只有靠他的热情才能跨越。 -- 纪伯伦 C11特性 1 C 11介绍2 列表初始化3 声明3.1 auto关键字3.2 decltype关键字3.3 nullptr3.4 总结 4 STL中的新容器4.1 array4.2 forward_list4.3 unordered系列 Thanks♪(&#xff65;ω&#xff65;)&#x…

springboot项目 导入 maven坐标 错误 Could not transfer artifact XXX

1.报错原因 当时导入的是 redis坐标 &#xff0c;导入jar 包报错&#xff08;当时是网速太慢了&#xff0c;一直卡着不动 就关了 idea 重新下载&#xff09;结果报错 之前的redis 项目都可以的&#xff0c;网上找了一下 都没解决 2.解决办法 既然说不能传输&#xff0c; 就说…

玩转HarmonyOS NEXT之AppStorage应用全局UI状态存储

概述 AppStorage是应用全局的UI状态存储&#xff0c;是和应用的进程绑定的&#xff0c;由UI框架在应用程序启动时创建&#xff0c;为应用程序UI状态属性提供中央存储。 AppStorage是在应用启动的时候会被创建的单例。它的目的是为了提供应用状态数据的中心存储&#xff0c;这…

【Pytorch】数据集的加载和处理(一)

Pytorch torchvision 包提供了很多常用数据集 数据按照用途一般分为三组&#xff1a;训练&#xff08;train&#xff09;、验证&#xff08;validation&#xff09;和测试&#xff08;test&#xff09;。使用训练数据集来训练模型&#xff0c;使用验证数据集跟踪模型在训练期间…

Andriod Stdio新建Kotlin的Jetpack Compose简单项目

1.选择 No Activity 2.选择kotlin 4.右键选择 在目录MyApplication下 New->Compose->Empty Project 出现下面的画面 Finish 完成

SpringAI简单使用

Ollama 简介 Ollama是一个开源的大型语言模型服务工具&#xff0c;它允许用户在本地机器上构建和运行语言模型&#xff0c;提供了一个简单易用的API来创建、运行和管理模型&#xff0c;同时还提供了丰富的预构建模型库&#xff0c;这些模型可以轻松地应用在多种应用场景中。O…

数据库第6次作业

内容 1、创建视图v_emp_dept_id_1&#xff0c;查询销售部门的员工姓名和家庭住址 2、创建视图v_emp_dept&#xff0c;查询销售部门员工姓名和家庭住址及部门名称。 3、创建视图v_dept_emp_count(dept_name,emp_count,avg_salay)&#xff0c;统计每个部门人数并计算平均工资。 …

【漏洞复现】泛微e-cology9 WorkflowServiceXml SQL注入漏洞

文章目录 前言漏洞描述影响范围 漏洞复现nuclei脚本 安全修复 前言 泛微协同管理应用平台e-cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。 漏洞…

03MFC画笔/画刷/画椭圆/圆/(延时)文字

文章目录 画实心矩形自定义画布设计及使用连续画线及自定义定义变量扇形画椭圆/圆输出颜色文本定时器与定时事件画实心矩形 自定义画布设计及使用 连续画线及自定义定义变量 扇形 画椭圆/圆 输出颜色文本

【应急响应】Windows应急响应手册(准备阶段、挖矿病毒)

文章目录 前言一、事前准备操作系统基本配置工具准备 二、挖矿病毒确定IOC信息获取异常进程的pid寻找恶意样本确定进程启动时间处理异常进程 前言 本篇文章主要以WIndows系统为例围绕红蓝对抗和攻防角度实施应急响应的技术手段&#xff0c;以多方面、多维度进行展开&#xff0…

HCNA ICMP:因特网控制消息协议

ICMP&#xff1a;因特网控制消息协议 前言 Internet控制报文协议ICMP是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息&#xff0c;他对于手机各种网络信息、诊断和排除各种网络故障有至关重要的作用。使用基于ICMP的应用时&#xff0c;需要对ICMP的工…

网工内推 | 云计算,网络安全工程师,13薪,发展空间广阔

01 上海飞络信息科技有限公司 &#x1f537;招聘岗位&#xff1a;网络安全工程师 &#x1f537;岗位职责&#xff1a; 1. 熟悉各品牌路由器、交换机、防火墙的配置与方案&#xff08;主要为&#xff1a;思科、华为、Fortigate、PA等&#xff09;&#xff1b; 2. 网络配置设定&…

java并发编程的艺术1

1.上下文交换 减少上下文交换的方法 无锁并发编程&#xff1a;进行数据操作&#xff0c;多线程竞争锁&#xff0c;引起上下文切换。将变量按照id 进行hash&#xff0c;不同线程处理不同段的数据 CAS&#xff08;compare and swap&#xff09; A线程和B线程都要修改变量X&…

Classifier-Free Guidance (CFG) Scale in Stable Diffusion

1.Classifier-Free Guidance Scale in Stable Diffusion 笔记来源&#xff1a; 1.How does Stable Diffusion work? 2.Classifier-Free Diffusion Guidance 3.Guide to Stable Diffusion CFG scale (guidance scale) parameter 1.1 Classifier Guidance Scale 分类器引导是…