# SUMMARY * [简介](./README.md) * [开篇词 | 为什么要学写一个操作系统?](./docs/372018.md) * [编辑手记 | 升级认知,迭代自己的操作系统](./docs/416908.md) * [01 | 程序的运行过程:从代码到机器运行](./docs/369457.md) * [02 | 几行汇编几行C:实现一个最简单的内核](./docs/369502.md) * [03 | 黑盒之中有什么:内核结构与设计](./docs/372609.md) * [04 | 震撼的Linux全景图:业界成熟的内核架构长什么样?](./docs/374474.md) * [05 | CPU工作模式:执行程序的三种模式](./docs/375278.md) * [06 | 虚幻与真实:程序中的地址如何转换?](./docs/376064.md) * [07 | Cache与内存:程序放在哪儿?](./docs/376711.md) * [08 | 锁:并发操作中,解决数据同步的四种方法](./docs/377913.md) * [09 | 瞧一瞧Linux:Linux的自旋锁和信号量如何实现?](./docs/378870.md) * [10 | 设置工作模式与环境(上):建立计算机](./docs/379291.md) * [11 | 设置工作模式与环境(中):建造二级引导器](./docs/380507.md) * [12 | 设置工作模式与环境(下):探查和收集信息](./docs/381157.md) * [13 | 第一个C函数:如何实现板级初始化?](./docs/381810.md) * [14 | Linux初始化(上):GRUB与vmlinuz的结构](./docs/382733.md) * [15 | Linux初始化(下):从_start到第一个进程](./docs/383611.md) * [16 | 划分土地(上):如何划分与组织内存?](./docs/384366.md) * [17 | 划分土地(中):如何实现内存页面初始化?](./docs/384772.md) * [18 | 划分土地(下):如何实现内存页的分配与释放?](./docs/385628.md) * [19 | 土地不能浪费:如何管理内存对象?](./docs/386400.md) * [20 | 土地需求扩大与保障:如何表示虚拟内存?](./docs/387258.md) * [21 | 土地需求扩大与保障:如何分配和释放虚拟内存?](./docs/388167.md) * [22 | 瞧一瞧Linux:伙伴系统如何分配内存?](./docs/389123.md) * [23 | 瞧一瞧Linux:SLAB如何分配内存?](./docs/389880.md) * [24 | 活动的描述:到底什么是进程?](./docs/390674.md) * [25 | 多个活动要安排(上):多进程如何调度?](./docs/391222.md) * [26 | 多个活动要安排(下):如何实现进程的等待与唤醒机制?](./docs/392198.md) * [27 | 瞧一瞧Linux:Linux如何实现进程与进程调度?](./docs/393350.md) * [28 | 部门分类:如何表示设备类型与设备驱动?](./docs/394084.md) * [29 | 部门建立:如何在内核中注册设备?](./docs/394875.md) * [30 | 部门响应:设备如何处理内核I/O包?](./docs/395772.md) * [31 | 瞧一瞧Linux:如何获取所有设备信息?](./docs/396896.md) * [32 | 仓库结构:如何组织文件?](./docs/397594.md) * [33 | 仓库划分:文件系统的格式化操作](./docs/398697.md) * [34 | 仓库管理:如何实现文件的六大基本操作?](./docs/399700.md) * [35 | 瞧一瞧Linux:虚拟文件系统如何管理文件?](./docs/400424.md) * [36 | 从URL到网卡:如何全局观察网络数据流动?](./docs/401467.md) * [37 | 从内核到应用:网络数据在内核中如何流转](./docs/402840.md) * [38 | 从单排到团战:详解操作系统的宏观网络架构](./docs/404013.md) * [39 | 瞧一瞧Linux:详解socket实现与网络编程接口](./docs/404724.md) * [40 | 瞧一瞧Linux:详解socket的接口实现](./docs/405781.md) * [41 | 服务接口:如何搭建沟通桥梁?](./docs/406633.md) * [42 | 瞧一瞧Linux:如何实现系统API?](./docs/407343.md) * [43 | 虚拟机内核:KVM是什么?](./docs/408124.md) * [44 | 容器:如何理解容器的实现机制?](./docs/408927.md) * [45 | ARM新宠:苹果的M1芯片因何而快?](./docs/409790.md) * [46 | AArch64体系:ARM最新编程架构模型剖析](./docs/410396.md) * [大咖助场|以无法为有法,以无限为有限](./docs/429070.md) * [用户故事 | 成为面向“知识库”的工程师](./docs/396020.md) * [用户故事 | 操作系统发烧友:看不懂?因为你没动手](./docs/410155.md) * [用户故事 | 技术人如何做选择,路才越走越宽?](./docs/415861.md) * [用户故事 | 用好动态调试,助力课程学习](./docs/469046.md) * [用户故事 | yiyang:我的上机实验“爬坑指南”](./docs/471872.md) * [用户故事|艾同学:路虽远,行则将至](./docs/526253.md) * [结束语 | 生活可以一地鸡毛,但操作系统却是心中的光](./docs/411142.md) * [结课测试 |这些操作系统的问题,你都掌握了么?](./docs/411902.md) * [参考答案 | 对答案,是再次学习的一个机会](./docs/483437.md)