Some notes about learning kernel && virtualization
本页面将持续更新。
内核资料
学习内核的最好方法是阅读源码,然而,一上来读源码是不现实的。要明白机理之后读源码才有意义。
当需要读某一模块源码时,可以按照如下方法去查询资料:
- 去内核的Document目录中查询最官方的文档资料.
- The Linux Kernel documentation
- 用关键字去Google、百度中搜索
- 去谷歌学术中搜索是否有相关论文
- 去SDM中查询硬件接口信息
- 要能够区分什么事情是硬件做的,什么事情是操作系统做的。以内存寻址为例,操作系统的任务是建立与维护页表,而页表查询是由硬件MMU单元来完成的。
- 首先存在硬件,之后根据硬件的接口信息,才能写出相关软件(操作系统)。
- 阅读相关patch
- 去查询相关模块的git commit history,去阅读每一个patch。
- 结合patch中的comment信息与git diff源码信息,可以增进对源码的理解
- kernel/git/torvalds/linux.git
- All the raw stuff happening to the Linux kernel goes through lkml
- 关键字 site:https://lkml.org/
- For explicative summaries, read or search lwn
虚拟化资料
- Concurrent and Distributed Systems
- 系统虚拟化
- 虚拟化领域的圣经,但有些内容有些陈旧。遗憾的是实体书已经绝版,不过网上有电子资源
- 虚拟化最好的入门书籍,若想了解实现细节,只有实践+源码
- SDM
- 查询硬件辅助虚拟化的相关硬件信息