操作系统:教科书与参考资料
关于读书和入门
如果你有读过觉得非常好,值得进入推荐列表,请告诉 jyy!如果你有不同意见,例如强烈反对推荐,也请联系 jyy!作为一个过来人,jyy 的建议是
多读书:
- 计算机系统中的很多知识是
关联 的,因此你对体系结构、编译器、软件工程等领域的理解都会加深对操作系统的理解;反之也一样。认识通常是 “螺旋式上升” 的;- 计算机系统不是纸上谈兵,因此学习很多
技术 是非常重要的,例如如何使用 Linux 系统调用编程、如何使用正则表达式、如何使用 profiler 等等。技术类书籍是掌握这些实践的很好切入点;- 每一本书的作者都有他们独到的视角 (某些为了凑数编教材而编教材的除外)。因此也许某个作者的思维方式就特别适合你,读起来就会很轻松。
当然我们已经尽量为你选择了一些经过了 (一定) 考验的好书。
教科书
- [OSTEP] Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Operating Systems: Three Easy Pieces. Arpaci-Dusseau Books, 2018.

(感谢 2017 级同学的投稿)
- [CSAPP] Randal E. Bryant and David R. O'Hallaron. Computer Systems: A Programmer's Perspective (3ed). Pearson, 2017. (作为手册和参考书查阅)

(感谢 yzh 的投稿)
参考资料
UNIX/Linux
- Jlevy Hollowa. The Art of Command Line.
- Gerard Beekmans. Linux from Scratch.
- Harley Hahn. Harley Hahn's Guide to Unix and Linux. McGraw-Hill Higher Education, 2008.
- Michael Kerrisk. The Linux Programming Interface: A Linux and UNIX System Programming Handbook. No Starch Press, 2010.
- W. Richard Stevens and Stephen A. Rago. Advanced Programming in the UNIX® Environment (3rd Edition). Addison-Wesley, 2013.
编程
- Brian W. Kernighan and Dennis M. Ritchie. The C programming language (2nd Edition). Prentice Hall, 1998.
- The CERT C Coding Standard: Rules for Developing Safe, Reliable, and Secure Systems. Software Engineering Institute of Carnegie Mellon University, 2016.
- Sandeep.S. GCC-Inline-Assembly-HOWTO, 2003.
- pwn.college: Learn to hack
操作系统设计与实现
- 陈海波、夏虞斌. 现代操作系统:原理与实现. 机械工业出版社, 2020.
- John R. Levine. Linkers and Loaders. Morgan-Kauffman, 1999.
- Robert Love. Linux Kernel Development: A Thorough Guide to the Design and Implementation of the Linux Kernel (3rd Edition). Addison-Wesley, 2010.
- Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, and John S. Quarterman. The Design and Implementation of the 4.4BSD Operating System. Addison-Wesley Longman, 1996.
开源操作系统实现
- xv6,十分精简优美的 UNIX 实现
- Plan 9,来自 Bell Labs 的著名原型操作系统
- seL4,在抽象层上构建安全的微内核操作系统内核
- Fuchsia,Google 的微内核操作系统,基于 Zircon 微内核
- OpenHarmony,“鸿蒙” 操作系统
- Linux Kernel,巨无霸项目 (新手请绕行)
- Android Open Source Project (AOSP),Android 系统栈
Finally, The Friendly Manual
- Linux manpages (tldr, man, info, ...): man7.org
- Bourne-Again Shell (bash)
- GNU Compiler Collection (GCC)
- GNU Debugger (gdb)
- Binutils (ld, as, objdump, and more)
- GNU Make
- 现在 jyy 真的已经觉得这些文档很 friendly 了 (这可以看作是评价 “system maturity” 的一条标准,类似 “mathematical maturity”)