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指的是进程在被修改之前的旧优先级。高频率修改优先级会导致调度器频繁重新计算和排队增加系统开销。欢迎大家批评指正

相关新闻

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

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

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

2026/7/18 23:04:33阅读更多 →
Axiom Camera:开源FPGA摄影机的模块化设计与应用

Axiom Camera:开源FPGA摄影机的模块化设计与应用

1. Axiom Camera:重新定义开源影像的可能性 在数字影像领域,德国apertus团队打造的Axiom Camera正掀起一场静默革命。这款基于FPGA架构的模块化摄影机系统,彻底打破了传统专业摄影设备的技术黑箱。我第一次接触这个项目是在2019年的柏林技术展…

2026/7/18 23:04:35阅读更多 →
Python环境配置与pip安装全攻略:从新手到实战

Python环境配置与pip安装全攻略:从新手到实战

对于刚接触 Python 的新手来说,最让人头疼的不是语法本身,而是环境配置和第三方库安装。很多人学完基础语法后,第一个实际项目就卡在pip install这一步——不是命令找不到,就是下载超时,或者装完 import 失败。这篇文章…

2026/7/18 23:04:36阅读更多 →
作用 1:提供 Prompt(State)

作用 1:提供 Prompt(State)

谁提供:真实用户(通过手机 App) 怎么提供:HTTP POST → /v1/chat/completions → body.messages 特点:完全不可控,分布随用户群体变化 openclaw_api_server.py app.post(“/v1/chat/completions”) async d…

2026/7/19 5:13:40阅读更多 →
SkillHub安装指南:Python环境配置与CLI工具部署

SkillHub安装指南:Python环境配置与CLI工具部署

1. SkillHub 安装前的环境准备在开始安装 SkillHub 之前,我们需要确保系统环境满足基本要求。SkillHub 是一个基于 Python 的 CLI 工具集,因此 Python 环境的正确配置是首要条件。1.1 Python 3.12 的安装与验证Python 3.12 是 SkillHub 运行的基础依赖&a…

2026/7/19 5:13:40阅读更多 →
网站登录系统设计与安全实践全解析

网站登录系统设计与安全实践全解析

1. 网站登录功能的核心价值解析现代网站的身份验证系统就像写字楼的前台登记处,它决定了谁能进入、能进入哪些区域以及能使用哪些服务。一个设计良好的登录系统需要兼顾安全性、用户体验和可扩展性,这背后涉及的技术栈远比表面看到的输入框复杂得多。我在…

2026/7/19 5:13:40阅读更多 →
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (8)--- Environment 目录

【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (8)--- Environment 目录

0x00 概要 本系列的目的是:借着对 OpenClaw-RL 源码的学习,来梳理强化学习的一些相关概念和思想。所以,会有一些扩展和发散,OpenClaw-RL 只是一个切入点。而且,因为整篇系列是一个整体,所以有些概念的解读/…

2026/7/19 5:13:40阅读更多 →
现代加密技术:原理、算法与应用实践

现代加密技术:原理、算法与应用实践

1. 加密技术基础概念解析加密技术是现代信息安全的核心支柱,它通过数学算法将可读的明文转换为不可读的密文,从而保护数据的机密性和完整性。在实际应用中,加密技术主要分为对称加密和非对称加密两大体系。对称加密采用相同的密钥进行加密和解…

2026/7/19 5:13:40阅读更多 →
ARM GIC中断路由机制深度解析:GICD_IROUTER寄存器配置与多核调度实践

ARM GIC中断路由机制深度解析:GICD_IROUTER寄存器配置与多核调度实践

1. GIC中断路由机制与GICD_IROUTER寄存器概述在嵌入式系统,尤其是像TI AM62L Sitara™这样的多核异构处理器平台上,中断管理是系统稳定性和性能的基石。通用中断控制器(Generic Interrupt Controller, GIC)作为ARM架构的标准中断管…

2026/7/19 5:11:40阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →