Linux内核是Linux操作系统的核心,无论你在什么样的发行版或环境中使用Linux—在桌面上还是在云端——你都应该对其组件和功能有一个基本的了解。
在本章中,我们回顾了整个Linux架构、内核的角色及其接口。最重要的是,内核抽象了硬件(CPU架构和外围设备)的差异,并使Linux非常可移植。最重要的接口是系统调用接口,内核通过该接口公开其功能——无论是打开文件、分配内存还是列出网络接口。
我们还了解了内核的内部工作原理,包括模块和eBPF。如果你希望扩展内核功能或在内核中实现性能任务(从用户空间控制),那么eBPF绝对值得仔细研究一下。
如果你想更多地了解内核的某些方面,下面的资源可以为你提供一些参考:
通用
· The Linux Programming Interface ( https://oreil.ly/HCLmX ),作者Michael Kerrisk(No Starch Press)。
·Linux Kernel Teaching( https://oreil.ly/lMzbW )提供了一个很好的全面深入的介绍。
·“Anatomy of the Linux Kernel”( https://oreil.ly/it2jK )提供了一个快速的高级介绍。
·“Operating System Kernels”( https://oreil.ly/9d93Y )对内核设计方法有一个很好的概述和比较。
·KernelNewbies( https://oreil.ly/OSfbA )是一个很好的资源,如果你想深入了解实际操作的主题。
·kernelstats( https://oreil.ly/kSov7 )显示了一些有趣的随时间变化的分布。
·The Linux Kernel Map( https://oreil.ly/G55tF )是内核组件和依赖项的可视化表示。
内存管理
· Understanding the Linux Virtual Memory Manager ( https://oreil.ly/uKjtQ )。
·“The Slab Allocator in the Linux Kernel”( https://oreil.ly/dBLkt )。
·内核文档( https://oreil.ly/sTBhM )。
设备驱动程序
· Linux Device Drivers ( https://oreil.ly/Kn7CZ ),作者Jonathan Corbet。
·“How to Install a Device Driver on Linux”( https://oreil.ly/a0chO )。
·Character Device Drivers( https://oreil.ly/EGXIh )。
· Linux Device Drivers: Tutorial for Linux Driver Development ( https://oreil.ly/jkiwB )。
系统调用
·“Linux Interrupts: The Basic Concepts”( https://oreil.ly/yCdTi )。
·The Linux Kernel: System Calls( https://oreil.ly/A3XMT )。
·Linux System Call Table( https://oreil.ly/mezjr )。
· syscalls.h 源代码( https://oreil.ly/tf6CW )。
·系统调用查找x86和x86_64( https://oreil.ly/K7Zid )。
eBPF
·“Introduction to eBPF”( https://oreil.ly/Afdsx ),作者Matt Oswalt。
·eBPF Maps文档( https://oreil.ly/Fnj5t )。
有了这些知识,我们现在就可以在抽象的阶梯上再往上爬一点,然后转向我们在本书中所考虑的主要用户界面:shell,包括手动使用和通过脚本实现的自动化。