11月初刚发行的书,终于今天看完了hhhh
首先,看os相关的书这件事属于重要但不紧急的。因此,有规划的做,保证进度就很好。这可能也算是我第一本有规划然后成功读完的书,非常不戳。
其次,这本书对于我来说收获是相当大的,相当于在基本的os课上完之后的复习+进阶读物。读的过程中也留下很多问题现在还没完全解决的,所以也考虑2刷。当然脱离了代码是不行的。一些收获如下,以备后用:
- 内存管理
- SLAB分配器
- 进程和线程
- fork接口以及posix_spawn, vfork还有rfork/clone
- 多线程内存布局与线程本地存储(TLS)
- 合作式多任务:ucontext和纤程
- 调度
- 公平共享调度(fair-share scheduling):彩票调度和步幅调度
- 多核调度
- 负载分担(全局任务队列)
- 协同调度
- 两级调度
- Linux调度器发展历史和CFS调度器
- 进程间通信
- 微内核进程间通信
- L4消息传递
- LRPC: 迁移线程模型
- Android binder ipc通信
- 同步原语
- 读写锁的实现
- RCU原语
- futex接口
- 文件系统
- VFS架构
- FAT和NTFS
- 设备管理
- 设备的识别:设备树和ACPI
- 设备的中断处理:硬件和Linux上下半部,下半部的三种机制
- 设备驱动和设备驱动模型
- Linux设备驱动模型
- Linux用户态驱动框架VFIO
- 系统虚拟化
- CPU虚拟化
- 内存虚拟化
- 影子页表
- 直接页表
- 两阶段翻译
- 换页和内存气球
- io虚拟化
- 软件模拟
- 半虚拟化方法
- 设备直通
- 中断虚拟化
- qemu和kvm架构
一些还没有完全理解的点
- futex
- 设备驱动和驱动模型
- 虚拟化一些具体实现机制(中断虚拟化*)
另外,对于系统方向的东西,因为是必须每天都要思考和总结的,我希望纯知识点的copy-paste类型的输出就没有必要了,应该输出属于自己的体会以及经验。2刷的时候每章后面的思考题可以好好考虑一波。