《操作系统》教科书与参考资料
这个书单可能已经显得陈旧过期了 (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. 全面的手册和参考书;LLM Copilot 阅读效果更佳。
(感谢 yzh 的投稿)
参考资料
1. 大语言模型
吸收了天地精华的大语言模型,请向他们提问。对他们的回答请谨慎求证。
2. 编程基础
- 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.
- pwn.college: Learn to hack
3. 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.
4. 操作系统原理
- 陈海波、夏虞斌. 现代操作系统:原理与实现. 机械工业出版社, 2020.
- Thomas Anderson, Michael Dahlin. Operating Systems: Principles and Practice (2nd Edition). Recursive Books, 2014.
- 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.
5. 开源操作系统实现
- xv6,十分精简优美的 UNIX 实现
- Plan 9,来自 Bell Labs 的著名原型操作系统
- seL4,在抽象层上构建安全的微内核操作系统内核
- Fuchsia,Google 的微内核操作系统,基于 Zircon 微内核
- OpenHarmony,“鸿蒙” 操作系统
- Linux Kernel,巨无霸项目 (新手请绕行)
- Android Open Source Project (AOSP),Android 系统栈
6. 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”)
