操作系统实战45讲
- 00 开篇词 为什么要学写一个操作系统?.md
- 00 编辑手记 升级认知,迭代自己的操作系统.md
- 01 程序的运行过程:从代码到机器运行.md
- 02 几行汇编几行C:实现一个最简单的内核.md
- 03 黑盒之中有什么:内核结构与设计.md
- 04 震撼的Linux全景图:业界成熟的内核架构长什么样?.md
- 05 CPU工作模式:执行程序的三种模式.md
- 06 虚幻与真实:程序中的地址如何转换?.md
- 07 Cache与内存:程序放在哪儿?.md
- 08 锁:并发操作中,解决数据同步的四种方法.md
- 09 瞧一瞧Linux:Linux的自旋锁和信号量如何实现?.md
- 10 设置工作模式与环境(上):建立计算机.md
- 11 设置工作模式与环境(中):建造二级引导器.md
- 12 设置工作模式与环境(下):探查和收集信息.md
- 13 第一个C函数:如何实现板级初始化?.md
- 14 Linux初始化(上):GRUB与vmlinuz的结构.md
- 15 Linux初始化(下):从_start到第一个进程.md
- 16 划分土地(上):如何划分与组织内存?.md
- 17 划分土地(中):如何实现内存页面初始化?.md
- 18 划分土地(下):如何实现内存页的分配与释放?.md
- 19 土地不能浪费:如何管理内存对象?.md
- 20 土地需求扩大与保障:如何表示虚拟内存?.md
- 21 土地需求扩大与保障:如何分配和释放虚拟内存?.md
- 22 瞧一瞧Linux:伙伴系统如何分配内存?.md
- 23 瞧一瞧Linux:SLAB如何分配内存?.md
- 24 活动的描述:到底什么是进程?.md
- 25 多个活动要安排(上):多进程如何调度?.md
- 26 多个活动要安排(下):如何实现进程的等待与唤醒机制?.md
- 27 瞧一瞧Linux:Linux如何实现进程与进程调度_.md
- 28 部门分类:如何表示设备类型与设备驱动?.md
- 29 部门建立:如何在内核中注册设备?.md
- 30 部门响应:设备如何处理内核I_O包?.md
- 31 瞧一瞧Linux:如何获取所有设备信息?.md
- 32 仓库结构:如何组织文件_.md
- 33 仓库划分:文件系统的格式化操作.md
- 34 仓库管理:如何实现文件的六大基本操作?.md
- 35 瞧一瞧Linux:虚拟文件系统如何管理文件?.md
- 36 从URL到网卡:如何全局观察网络数据流动?.md
- 37 从内核到应用:网络数据在内核中如何流转.md
- 38 从单排到团战:详解操作系统的宏观网络架构.md
- 39 瞧一瞧Linux:详解socket实现与网络编程接口.md
- 40 瞧一瞧Linux:详解socket的接口实现.md
- 41 服务接口:如何搭建沟通桥梁?.md
- 42 瞧一瞧Linux:如何实现系统API?.md
- 43 虚拟机内核:KVM是什么?.md
- 44 容器:如何理解容器的实现机制?.md
- 45 ARM新宠:苹果的M1芯片因何而快?.md
- 46 AArch64体系:ARM最新编程架构模型剖析.md
- LMOS来信:第二季课程带你“手撕”计算机基础.md
- 大咖助场 以无法为有法,以无限为有限.md
- 用户故事 yiyang:我的上机实验“爬坑指南”.md
- 用户故事 成为面向“知识库”的工程师.md
- 用户故事 技术人如何做选择,路才越走越宽?.md
- 用户故事 操作系统发烧友:看不懂?因为你没动手.md
- 用户故事 用好动态调试,助力课程学习.md
- 用户故事 艾同学:路虽远,行则将至.md
- 结束语 生活可以一地鸡毛,但操作系统却是心中的光.md