更新时间:2020-04-14 15:16:33
封面
版权信息
序一
序二
前言
第1章 内核引导和初始化
1.1 到哪里读取引导程序
1.2 引导程序
1.2.1 入口_start
1.2.2 标号reset
1.2.3 函数_main
1.2.4 函数run_main_loop
1.3 内核初始化
1.3.1 汇编语言部分
1.3.2 C语言部分
1.3.3 SMP系统的引导
1.4 init进程
第2章 进程管理
2.1 进程
2.2 命名空间
2.3 进程标识符
2.4 进程关系
2.5 启动程序
2.5.1 创建新进程
2.5.2 装载程序
2.6 进程退出
2.6.1 线程组退出
2.6.2 终止进程
2.6.3 查询子进程终止原因
2.7 进程状态
2.8 进程调度
2.8.1 调度策略
2.8.2 进程优先级
2.8.3 调度类
2.8.4 运行队列
2.8.5 任务分组
2.8.6 调度进程
2.8.7 调度时机
2.8.8 带宽管理
2.9 SMP调度
2.9.1 进程的处理器亲和性
2.9.2 对调度器的扩展
2.9.3 限期调度类的处理器负载均衡
2.9.4 实时调度类的处理器负载均衡
2.9.5 公平调度类的处理器负载均衡
2.9.6 迁移线程
2.9.7 隔离处理器
2.10 进程的安全上下文
第3章 内存管理
3.1 概述
3.2 虚拟地址空间布局
3.2.1 虚拟地址空间划分
3.2.2 用户虚拟地址空间布局
3.2.3 内核地址空间布局
3.3 物理地址空间
3.4 内存映射
3.4.1 应用编程接口
3.4.2 数据结构
3.4.3 创建内存映射
3.4.4 虚拟内存过量提交策略
3.4.5 删除内存映射
3.5 物理内存组织
3.5.1 体系结构
3.5.2 内存模型
3.5.3 三级结构
3.6 引导内存分配器
3.6.1 bootmem分配器
3.6.2 memblock分配器
3.6.3 物理内存信息
3.7 伙伴分配器
3.7.1 基本的伙伴分配器
3.7.2 分区的伙伴分配器
3.7.3 根据可移动性分组
3.7.4 每处理器页集合
3.7.5 分配页
3.7.6 释放页
3.8 块分配器
3.8.1 编程接口
3.8.2 SLAB分配器
3.8.3 SLUB分配器
3.8.4 SLOB分配器
3.9 不连续页分配器
3.9.1 编程接口
3.9.2 数据结构
3.9.3 技术原理
3.10 每处理器内存分配器
3.10.1 编程接口
3.10.2 技术原理
3.11 页表
3.11.1 统一的页表框架
3.11.2 ARM64处理器的页表
3.12 页表缓存
3.12.1 TLB表项格式
3.12.2 TLB管理
3.12.3 地址空间标识符
3.12.4 虚拟机标识符
3.13 巨型页
3.13.1 处理器对巨型页的支持
3.13.2 标准巨型页
3.13.3 透明巨型页