Linux中《进程状态--进程调度--进程切换》详细介绍 目录进程状态Linux内核源代码怎么说运行阻塞挂起内核链表进程状态查看Z(zombie)-僵尸进程僵尸进程危害孤儿进程进程优先级进程切换Linux2.6内核进程O(1)调度队列进程状态Linux内核源代码怎么说为了弄明白正在运⾏的进程是什么意思,我们需要知道进程的不同状态。⼀个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)。进程状态就是task_struct内的一个整形变量,也是一个标记位(宏定义的)。状态决定了当前系统如何处理这个进程。运行阻塞挂起运行状态该进程在调度队列中或者正在被CPU执行。阻塞状态等待某种设备或资源就绪(如果不就绪,我的进程就不会被调度)。运行状态转化为阻塞状态,本质上就是把PCB链入到不同的数据结构当中!只有在运行队列中,进程才会被调度,但是现在进程在设备队列中,那么如何再被CPU调度呢?总结:进程状态变化的表现之一,就是CPB要在不同的数据结构之间进行流动,本质都是数据结构的增删查改。挂起状态当内存资源不足时,将wait_queue里的进程的代码和数据唤出到磁盘当中swap交换分区。如果次数键盘就绪了,OS会把磁盘当中该PCB的代码和数据再重新加载到内存,构建指针映射,这个也叫做唤入。我们把这个称为阻塞挂起,运行挂起也是同样的道理。内核链表注意:Linux 内核通过著名的 container_of 宏实现了利用链表节点反推整个进程控制块(PCB)首地址的魔法:由于编译器在编译时就确定了 tasks 链表字段在整个 task_struct 结构体内部的固定相对偏移量,因此在遍历链表时,内核只需用当前 tasks 节点的实际内存地址减去这个偏移量(即宿主首地址 = 节点地址 - 偏移量),就能瞬间计算并定位到外层 task_struct 的起始地址,从而完美实现了对所有进程的高效遍历。下⾯的状态在kernel源代码⾥定义:/**The task state array is a strange “bitmap” of*reasons to sleep. Thus “running” is zero, and*you can test for combinations of others with*simple bit tests.*/staticconstchar*consttask_state_array[]={"R (running)",/*0 *///运行"S (sleeping)",/*1 *///阻塞

相关新闻

最新新闻

C++项目UTF-8编码改造实战:从乱码根源到跨平台统一

C++项目UTF-8编码改造实战:从乱码根源到跨平台统一

1. 项目概述:为什么C代码的UTF-8编码改造是个“坑”?如果你是一个有几年经验的C开发者,大概率在某个深夜被中文乱码、跨平台编译失败或者第三方库解析异常搞得焦头烂额过。问题的根源,十有八九出在字符编码上。最近我接手了一个老…

2026/7/16 21:47:19
告别YAML配置困扰:Red Hat官方插件让你的开发效率提升3倍

告别YAML配置困扰:Red Hat官方插件让你的开发效率提升3倍

告别YAML配置困扰:Red Hat官方插件让你的开发效率提升3倍 【免费下载链接】vscode-yaml YAML support for VS Code with built-in kubernetes syntax support 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-yaml 你是否曾因YAML缩进错误而调试到深夜&…

2026/7/16 21:47:19
解决Ghost使用难题:常见错误与解决方案大全 [特殊字符]

解决Ghost使用难题:常见错误与解决方案大全 [特殊字符]

解决Ghost使用难题:常见错误与解决方案大全 🚀 【免费下载链接】ghost Create, list, delete, and modify /etc/hosts entries with ease... 项目地址: https://gitcode.com/gh_mirrors/ghost/ghost 你是否在为本地开发环境配置虚拟主机而烦恼&am…

2026/7/16 21:47:19
计算机组成原理实验:微程序控制器时序与微指令编码实战解析

计算机组成原理实验:微程序控制器时序与微指令编码实战解析

1. 微程序控制器实验的核心价值第一次接触微程序控制器实验时,我和许多同学一样被那些闪烁的指示灯和复杂的连线搞得头晕目眩。直到亲手用示波器捕捉到T1-T4时序信号的波形,才真正理解计算机底层是如何像交响乐团一样,在指挥棒(时…

2026/7/16 21:47:19
Claude Fable 5技术解析:AI自主代理与长期任务处理实践

Claude Fable 5技术解析:AI自主代理与长期任务处理实践

最近在AI开发领域,Claude Fable 5的发布引起了广泛关注。作为Anthropic推出的第五代模型,它专门针对复杂的编程项目和长期运行的知识工作场景。本文将深入解析Fable 5的技术特性、使用方法和实际应用场景,帮助开发者更好地理解和运用这一前沿…

2026/7/16 21:47:19
5分钟掌握猫抓Cat-Catch:浏览器资源嗅探的终极解决方案

5分钟掌握猫抓Cat-Catch:浏览器资源嗅探的终极解决方案

5分钟掌握猫抓Cat-Catch:浏览器资源嗅探的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓Cat-Catch是一款功能强大的…

2026/7/16 21:42:19

月新闻