第5章 进程调度
基于 Linux 6.12.38 源码分析
5.1 调度器架构5.1.1 调度器设计原则Linux 调度器采用模块化设计,支持多种调度策略:
公平性:确保每个进程获得公平的 CPU 时间
高效性:最小化调度开销
可扩展性:支持多核 SMP 架构
实时性:支持实时任务调度
灵活性:支持多种调度策略共存
5.1.2 调度类层次1234567891011121314151...
第4章 进程创建
基于 Linux 6.12.38 源码分析
4.1 进程创建系统调用4.1.1 系统调用概述Linux 提供多个进程/线程创建系统调用:
系统调用
描述
内核实现
fork()
创建子进程
kernel_clone()
vfork()
创建共享地址空间的子进程
kernel_clone()
clone()
灵活创建进程/线程
ke...
第3章 进程标识符与命名空间
基于 Linux 6.12.38 源码分析
3.1 进程 ID 类型3.1.1 PID 类型定义位置: include/linux/pid.h
1234567enum pid_type { PIDTYPE_PID, // 进程 ID (线程 ID) PIDTYPE_TGID, // 线程组 ID (进程 ID) ...
第2章 进程描述符 task_struct
基于 Linux 6.12.38 源码分析
2.1 task_struct 概览2.1.1 定义位置struct task_struct 是 Linux 内核中最重要的数据结构之一,定义在 include/linux/sched.h 中。它包含了进程的所有信息,是内核管理进程的核心数据结构。
task_struct
12345678910111...
第1章 Linux 进程管理概述
基于 Linux 6.12.38 源码分析
1.1 进程与线程的概念1.1.1 什么是进程进程(Process)是程序执行的实例,是操作系统进行资源分配和调度的基本单位。在 Linux 内核中,进程具有以下特征:
独立的地址空间:每个进程拥有自己独立的虚拟内存空间
资源所有权:进程拥有文件描述符、信号处理、内存等资源
执行上下文:包含程序计数器、栈、寄...
第7章:调试技巧
诊断和分析内核启动问题的方法
本章概述内核启动问题可能发生在任何阶段,从早期汇编代码到用户空间启动。本章提供各种调试技术和工具来诊断这些问题。
调试阶段划分12345678910111213141516171819202122232425262728┌────────────────────────────────────────────────────────────...
第6章:启动参数与配置
通过命令行和配置选项控制内核行为
本章概述Linux 内核启动时可以通过命令行参数传递配置信息。本章详细讲解常用的启动参数、Kconfig 配置选项以及 initrd/initramfs 的使用。
参数传递方式
架构
传递方式
x86_64
boot_params.hdr.cmd_line_ptr
ARM64
设备树 /chosen/boo...
第5章:通用启动流程 start_kernel
所有架构的 C 语言初始化入口
本章概述start_kernel() 是 Linux 内核的通用 C 语言入口点,所有架构最终都会跳转到这个函数。本章详细讲解这个核心初始化函数的执行流程。
start_kernel 调用链1234567891011121314151617181920212223242526┌────────────────...
第4章:ARM64 启动流程
从 EL3 到 Linux 内核的旅程
本章概述ARM64 (AArch64) 的启动流程与 x86_64 有显著差异。本章详细讲解 ARM64 特有的启动机制,包括异常级别、设备树和 ATF。
ARM64 启动方式对比
启动方式
引导程序
典型设备
参数传递
UEFI
UEFI 固件 → GRUB
服务器、工控
设备树/ACPI
A...
第3章:x86_64 内核映像格式
vmlinux、bzImage 和 vmlinuz 的秘密
本章概述Linux 内核有多种存在形式,本章详细讲解这些格式的区别、构建过程以及内部结构。
内核映像类型对比
名称
描述
格式
用途
vmlinux
未压缩的内核
ELF
调试、符号表
bzImage
大 zImage
自定义
实际启动
vmlinuz
bzImage 的链接...