【发布时间】:2010-09-20 05:29:28
【问题描述】:
我打算写一个操作系统,但我对操作系统不是很了解。有什么好的资源或书籍可供我学习吗?你有什么建议?
【问题讨论】:
我打算写一个操作系统,但我对操作系统不是很了解。有什么好的资源或书籍可供我学习吗?你有什么建议?
【问题讨论】:
我们在我就读的大学使用了 Andrew Tannenbaum 的 Modern Operating Systems。我强烈推荐它,因为它清楚地解释了您将遇到的许多设计决策中固有的权衡。这本书比 Minix 的书更“公平和平衡”。
我也推荐这本书,因为尽管他有net-famous flame war with Linus Torvalds,但他的偏见很少在书中体现出来。此外,他是一个相当不错的作家,而且这本书实际上很有趣。
【讨论】:
Operating Systems Implementation Prentice Software
本书由 Minix 背后的主要人物 Tanenbaum 撰写,这是 Linux 的基础。它为内存管理、文件系统、进程等基本操作系统概念提供了很好的概述。本书中的概念与 Minix 操作系统的示例密切相关,这是一件好事。
我认为你应该从这样的事情开始。
【讨论】:
Operating System Concepts 是我们在大学使用的书。这很丑陋,但里面的信息很好地解释了(从基本的内存管理,到操作系统如何决定执行什么或如何避免死锁)。很宽。
【讨论】:
如果您也想开始编写自己的操作系统,Os dev 网站提供了丰富的信息,
【讨论】:
看看HelenOS,这是一个从零开始的基于微内核的操作系统,旨在成为一个完全现代的操作系统。 Disclamer,我是贡献者,我正在从头开始开发它的外壳。
HelenOS 已被移植到 ia32/64、SPARC、ARM 等,它的设计非常好并且易于阅读。它仍处于起步阶段,但展示了一种可能的设计,该设计真正利用了微内核设计并解决了微内核实现(例如 IPC)中的许多问题。
它还包括自动设置交叉编译所需的适当工具链的脚本。它非常容易构建,并且在大多数模拟器(即 QEMU)或裸机中运行良好。
我还会研究 L4、Minix3 和 GNU HURD(基于 Mach),后者是尝试利用微内核时设计缺陷的例证。
如果你想走单体路线,那就学习 Linux。
【讨论】:
我强烈建议您查看MIT Operating Systems class。它有很多有用的参考资料,还有一堆你可以玩的实验室练习(包括自动评分脚本,所以你不必成为麻省理工学院的学生也可以这样做)。
【讨论】:
textbook http://ecx.images-amazon.com/images/I/411E3CQQYZL._SS500_.jpg
我在大学时使用过操作系统和中间件:支持受控交互。它可能是这方面最好的教科书之一。
【讨论】:
Richard A. Burgess 开发您自己的 32 位操作系统。详细介绍了引导加载程序、设置那些奇怪的内存和进程管理寄存器等。这是 1996 年的一篇很棒的读物,当时我想我会尝试从头开始编写一个简单的操作系统,但可能会过时现在,只处理前几代奔腾级 CPU。
【讨论】:
如果我没记错的话,Powerup to Bash Prompt HOWTO 包含很多看起来对这个有用的信息。旧版本的 Linux From Scratch HOWTO 也是如此,但在最近的版本中已被删除。
您还可以在Understanding the Linux Kernel 中找到很多有用的信息。
【讨论】:
我建议研究嵌入式操作系统并构建嵌入式操作系统。它将处理核心概念,而无需现代台式机 CPU 的开销。
去年春天我写了一个多任务嵌入式操作系统作为最终项目,它比你想象的要容易。
【讨论】:
您应该研究一下 MINIX 3。我相信,这是一个用不到 10,000 行代码编写的操作系统。借助 Tanenbaum 的一本书,您可以很好地了解操作系统的工作原理,并了解 MINIX 3 的工作原理。您可以直接使用 Linux,但我认为这是一项有用的任务,并且确实可以帮助您了解构建一个正常工作的操作系统实际上不需要那么多行。
【讨论】:
除了书籍,还有很多学习操作系统开发的网站
BrokenThorn Entertainment在这个网站上,从基础学习操作系统开发
【讨论】: