发布时间:2026/7/17 22:40:11
Linux 进程管理:状态、优先级与调度核心解析 文章目录1. 进程状态1.1 操作系统中状态的说明1.2 什么叫做阻塞1.3 什么叫挂起2. 具体谈Linux操作系统中的进程状态2.1 Linux 的七种进程状态2.2 僵尸进程Zombie2.3 孤儿进程Orphan3. 进程的优先级3.1 优先级是什么3.2 为什么要有优先级3.3 查看与修改进程优先级1. 进程状态1.1 操作系统中状态的说明运行、阻塞、挂起1.2 什么叫做阻塞从现象入手等待硬件就绪。硬件准备就绪谁最先知道操作系统操作系统就是硬件的管理者先描述再组织。阻塞和运行的本质是看task_struct在谁提供的队列中。Linux中第一个用户态进程是init/systemdPID1。阻塞不止等待硬件还包括等待锁、等待其他进程释放资源等。1.3 什么叫挂起task_struct在内存里因为内存资源不足导致进程对应的数据或者代码被交换到swap分区这种状态叫做挂起。安装操作系统的盘都要留一个分区swap分区用于内存扩展。swap分区和我们的磁盘分区一样只是被隐藏了我们看不见。现在使用内存还要涉及换入和换出。过度swap会导致系统变慢。swap分区存在的本质就是时间换空间。但是swap不建议太大太大会导致依赖swap过度swap会导致分区被占满系统变慢。进程都处于运行状态剩下的还没调度内存不够依旧换入到磁盘空间就会出现运行挂起。如果还是不行Linux OS就会选择性地杀掉一些进程。2. 具体谈Linux操作系统中的进程状态进程状态用位图表示2.1 Linux 的七种进程状态RRunning等同于运行就绪状态。SSleeping可中断休眠浅度睡眠等同于阻塞状态。向进程发送信号也可以杀掉一个进程。kill-9[进程号]-9就是信号的意思。前台进程往往状态后面带加号。前后台进程 – TODOkill -9 发送信号STAT后面带的是前台进程否则是后台进程DDisk SleepLinux特有的状态不可中断休眠深度睡眠和磁盘有关。等待磁盘IO的过程中不可能被OS杀掉只能等磁盘返回信号。什么情况下会遇到D状态进程进行大量的I/O操作时。TStopped暂停状态触发某种信号让其自己暂停下来需要人唤醒。kill-lkill-19[进程号]# 暂停进程kill-18[进程号]# 继续进程后台进程用符号启动前台进程可以从键盘获取输入后台进程没有办法从键盘获取输入。tTracing Stop追踪暂停。gdb调试时父进程向子进程发送信号让子进程暂停运行从而达到逐过程执行的效果。XDead进程死亡OS回收PCB进程彻底消失。2.2 僵尸进程ZombieZZombie僵尸状态。进程创建之初是为了解决问题的当进程退出时只保留进程的task_struct让父进程或OS获取子进程的退出数据。为什么要有Z状态进程退出了退出信息是什么main函数的返回值或收到的信号值进程退出了退出信息保存在哪里进程自己的task_struct结构体中检测Z状态进程回收Z状态进程本质是在做什么获取数据让task_struct转为X并释放掉具体怎样回收谁来回收父进程通过系统调用wait/waitpid由OS来回收如果父进程不回收子进程呢该进程将永远处于Z状态task_struct不会被释放永远占据内核资源空间这种情况就叫做资源泄漏。所以子进程必须被回收new出来的空间如果对应的进程结束了内存泄漏的问题还在吗不在了。用户层申请的内存是归操作系统管理的进程结束时OS会回收所有用户态内存。但是如果进程是常驻进程守护进程它不结束内存泄漏就会持续累积最终可能导致系统OOM内存耗尽。所以常驻进程中必须格外注意内存泄漏问题。有些软件如服务器程序、守护进程是常驻内存的你不退出它就不退出。这种常驻在内存中的进程叫做常驻进程。常驻进程是不结束的所以如果不释放内存就会存在内存泄漏。2.3 孤儿进程Orphan孤儿进程如果父进程先于子进程退出子进程就成为孤儿进程会被系统的init进程PID1或systemd收养由init进程负责回收。3. 进程的优先级3.1 优先级是什么优先级 VS 权限权限决定进程“能不能”获取某种资源如root权限与普通用户权限。优先级在进程已经具备获取资源权限的前提下决定获取该资源的“先后顺序”。调度队列的本质就是确定优先级。3.2 为什么要有优先级CPU是稀缺资源设置优先级是为了决定进程获取CPU等资源的先后顺序从而保证系统的高效运行和关键任务的及时响应。3.3 查看与修改进程优先级通过以下命令可以查看进程的优先级信息ps-l输出结果中的PRI列表示进程的实际优先级NInice值列表示优先级的修正值。nice值的范围-20 ~ 19共40个等级。nice值越小优先级越高nice值越大优先级越低。为什么是这个范围为什么不能随便改这是Linux内核的设计决策既保证了足够的调度粒度又防止普通用户过度抢占系统资源。普通用户只能调大nice值降低自己进程的优先级只有root用户才能将nice值调小到-20提高优先级。进程优先级的变化范围是多少old pri是什么Linux中实际调度优先级 ≈ 基础优先级 nice值。基础优先级通常为80所以实际PRI范围约为 60 ~ 99。old pri指的是进程在被修改之前的旧优先级。高频率修改优先级会导致调度器频繁重新计算和排队增加系统开销。欢迎大家批评指正

相关新闻

2026/7/17 22:35:11

Next.js全栈开发实战:从渲染模式到生产部署完整指南

如果你正在学习 Next.js,可能会发现官方文档虽然全面,但内容分散,缺乏一条清晰的"从入门到部署"的完整路径。很多教程只讲基础配置,却很少告诉你实际项目中如何组织代码、处理错误、优化性能,以及最终如何部…

2026/7/17 23:50:23

Spring AI与LangChain4j有什么区别?2026年Java AI项目选型指南

前言 Java开发者构建大模型应用时,最常见的两个框架是: Spring AI; LangChain4j。 两者都支持模型接入、流式输出、Prompt、Memory、RAG、Tool Calling和MCP,因此很多人会问: 它们是不是差不多?企业项目到底应该选哪个? 答案不是简单的“谁功能更多”,而要看: 项目是…

2026/7/17 23:50:23

JavaScript 中的原型与继承

一、从对象说起, 一切皆对象在 JS 中, 几乎所有的东西都是对象, 或者说最终都会指向某个对象. 比如: let arr [1, 2, 3];console.log(typeof arr); //"object"function foo() {}console.log(typeof foo); //"function" (但本质上也是对象) 简单的对象创建…

2026/7/17 23:50:23

免费解锁Wand游戏修改器高级功能的完整开源解决方案

免费解锁Wand游戏修改器高级功能的完整开源解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为Wand(原WeMod)的…

2026/7/17 23:50:23

第七史诗智能自动化助手:彻底解放双手的终极游戏伴侣

第七史诗智能自动化助手:彻底解放双手的终极游戏伴侣 【免费下载链接】e7Helper 【Epic Seven Auto Bot】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持📺&a…

2026/7/17 23:50:23

亚洲EMBA怎么选?2026民企老板择校性价比实测榜单

【客观测评声明】本文为独立财经测评内容,无硬性品牌营销导向,基于2026年亚洲主流EMBA项目公开数据,从民企实业经营视角,客观拆解各项目适配度、优势与短板,为企业创始人、高管提供理性择校参考,规避择校踩…

2026/7/17 5:59:06

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/17 1:21:45

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/17 7:39:19

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/17 0:04:23

BiSheng JDK-build性能调优:构建速度提升30%的优化策略

BiSheng JDK-build性能调优:构建速度提升30%的优化策略 【免费下载链接】bishengjdk-build BiSheng JDK build and test scripts - common across all releases/versions 项目地址: https://gitcode.com/openeuler/bishengjdk-build 前往项目官网免费下载&am…

2026/7/17 14:59:44

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…