当前位置: 首页 > article >正文

Linux中进程的状态3 进程的优先级1

目录

X(dead) && Z(zombie)

僵尸进程 && 孤儿进程

进程的优先级

如何修改进程的优先级


我们至此还剩两种状态没有查看,X和Z状态。

X(dead) && Z(zombie)

X状态是进程死亡状态,Z状态依照这个词可知是进程处于僵死状态,就是离死亡不远的状态了。

如上如果要验证这两种状态,运行多线程会比较方便,创建test.c和所对应的makefile,旨在通过同时检测两个进程来得出这两种状态。

正常刚开始应该都是S+,然后我们我们等待子进程的倒计时自动结束之后子进程由于不再了就相当于自动退出了,这时只会观察到父进程而子进程进入退出状态。

为什么不是死亡状态或者T状态呢,因为如下。

这个子进程是被自动退出的而不是被停止的,如果要看到T状态需要直接kill子进程才会看到,为什么不是直接死亡呢,子进程自动退出时,会将执行结构告知操作系统和父进程,但是这个我们创建的父进程仅仅看着子进程退出却不做不接受任何操作,使得子进程无法将信息传答到父进程,结果就是子进程僵死,kill会直接将子进程杀死,我们也不建议直接将进程杀死。

那什么时候会出现X状态呢,子进程之所以没有进入X状态的原因是没有将要死的信息传入父进程,我们只需要先杀死父进程,让bush接管子进程,然后再杀死子进程就可以了。如下效果

理论是正确的,但是这个X状态很难看到,因为一个程序确定死亡只后就会直接被操作系统删除了。

僵尸进程 && 孤儿进程

僵尸进程就是处于将死边缘的进程就是状态为Z的进程,我们上面讲过了,由于处于僵尸进程的进程无法释放资源,所有僵尸进程的存在就会有内存泄漏的风险。

孤儿进程就是父进程不存在的子进程,这种进程没有父亲的约束本来应该也成为僵尸进程的,但是操作系统会担当起成为其父亲的责任,使其能够能够被回收。

bush的pid就是1。

依靠echo $?命令可以得知子进程的返回值。位于前台(状态没有+的)运行的程序或者被暂停后又重启的进程只能使用kill -19进行暂停,这也就是为什么上面那个图会多出两个T的原因。

进程的优先级

优先级的定义就是获得某种资源的先后顺序。

如上图可知,进程的优先级的相关知识。

我们手动调整进程后变化图如下:

进程的优先级就是从60到99这40个数字。

进程的优先级等于pri(先前的值) + ni(可修改值)

如何修改进程的优先级

修改进程的优先级就是在修改进程的ni的值,ni的值的可调整范围为[-20, 19],超过19或者低于-20的话会直接按最大值或者最小值处理,使用top指令就可以进行进程优先级的调整。

先说一下,ls带n选项的意思是数字化uid和gid,就是将拥有者,所属组和other数字化。

输入完top,然后按r键,再输入你要修改的进程的pid,之后再输入要修改的进程的ni值就可以了

切记操作系统不允许多次修改进程的优先级!!!


http://www.kler.cn/a/552346.html

相关文章:

  • Unity 获取独立显卡数量
  • LSTM-SVM故障诊断 | 基于长短期记忆神经网络-支持向量机多特征分类预测/故障诊断Matlab代码实现
  • nginx反向代理jupyter
  • C++中std::condition_variable_any、std::lock_guard 和 std::unique_
  • 【响应式驾考培训网站模板】H5自适应源码下载|含教学管理系统+在线预约功能|多终端适配|可商用授权
  • Spring的BeanFactory和FactoryBean有 什么不同
  • 电动汽车电池监测平台系统设计(论文+源码+图纸)
  • spring分层解耦(springboot)
  • c/c++蓝桥杯经典编程题100道(22)最短路径问题
  • LeetCode-76.最小覆盖子串
  • 蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
  • 新型基于Go语言的恶意软件利用Telegram作为C2通信渠道
  • 深入解析DeepSeek推理模型:混合专家架构与稀疏注意力机制的融合
  • qt QOpenGLTexture详解
  • AI: Unsloth + Llama 3 微调实践,基于Colab
  • 格瑞普推出革命性半固态电池,为行业无人机续航注入未来动力
  • 瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库
  • VMamba论文精读笔记
  • Linux shell测试命令执行成功率
  • 线性模型 - Logistic 回归