我打算写一个操作系统,但我对操作系统不太了解。有什么好的资源或书籍可供我学习吗?你有什么建议?
15 回答
我们在我就读的大学使用了 Andrew Tannenbaum 的现代操作系统。我强烈推荐它,因为它清楚地解释了您将遇到的许多设计决策中固有的权衡。这本书比 Minix 的书要“公平和平衡”一点。
我也推荐这本书,因为尽管他与 Linus Torvalds 的火爆网络闻名遐迩,但他的偏见很少在书中体现出来。此外,他是一个相当不错的作家,这本书实际上很有趣。
这本书是由 Minix 背后的主要人物 Tanenbaum 撰写的,这是 Linux 的基础。它为内存管理、文件系统、进程等基本操作系统概念提供了很好的概述。本书中的概念与 Minix 操作系统的示例密切相关,这是一件好事。
我认为你应该从这样的事情开始。
这个网站上的类似主题:
操作系统概念是我们在大学使用的书。这很丑陋,但里面的信息很好地解释了(从基本的内存管理,到操作系统如何决定执行什么或如何避免死锁)。挺宽的。
如果您也想开始编写自己的操作系统,Os dev网站提供了丰富的信息,
虽然很旧,但这些书非常好:
3:http://操作系统设计-与XINU互联,卷。二
看看HelenOS,它是一个从零开始的基于微内核的操作系统,旨在成为一个完全现代的操作系统。Disclamer,我是贡献者,我正在从头开始研究它的外壳。
HelenOS 已被移植到 ia32/64、SPARC、ARM 等,其设计精良且易于阅读。它仍处于起步阶段,但展示了一种可能的设计,它真正利用了微内核设计并解决了微内核实现(例如 IPC)中的许多问题。
它还包括自动设置交叉编译所需的适当工具链的脚本。它非常容易构建并且在大多数模拟器(即 QEMU)或裸机中运行良好。
我还将研究 L4、Minix3 和 GNU HURD(基于 Mach),后者是尝试利用微内核时设计缺陷的一个例证。
如果你想走单体路线,那就学习 Linux。
我强烈建议您看看MIT 操作系统类。它有很多有用的参考资料,还有一堆你可以玩的实验室练习(包括自动评分脚本,所以你不必是麻省理工学院的学生也可以做)。
教科书 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 也是如此,但在最近的版本中已被删除。
您还可以在了解 Linux 内核中找到很多有用的信息。
我建议查看嵌入式操作系统并构建嵌入式操作系统。它将处理核心概念,而无需现代台式机 CPU 的开销。
我去年春天写了一个多任务嵌入式操作系统作为最终项目,它比你想象的要容易。
你应该研究一下 MINIX 3。我相信这是一个用不到 10,000 行代码编写的操作系统。借助 Tanenbaum 的一本书,您可以很好地了解操作系统的工作原理,并了解 MINIX 3 的工作原理。您可以直接使用 Linux,但我认为这是一项有用的任务,并且确实可以帮助您了解构建一个正常工作的操作系统实际上不需要那么多行。
除了书籍,还有很多学习操作系统开发的网站
BrokenThorn Entertainment在这个网站上从基础学习操作系统开发