本文主要分享自己的一些学习经验,同时会推荐相关资料与工具。

本页面将持续更新。

内核资料

学习内核的最好方法是阅读源码,然而,一上来读源码是不现实的。要明白机理之后读源码才有意义。

当需要读某一模块源码时,可以按照如下方法去查询资料:

  • 去内核的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
  • For explicative summaries, read or search lwn

    虚拟化资料

  • Concurrent and Distributed Systems
  • 系统虚拟化
    • 虚拟化领域的圣经,但有些内容有些陈旧。遗憾的是实体书已经绝版,不过网上有电子资源
    • 虚拟化最好的入门书籍,若想了解实现细节,只有实践+源码
  • SDM
    • 查询硬件辅助虚拟化的相关硬件信息