我打算编写一个操作系统,但对操作系统我不太了解。有什么好的资源或书籍可供我学习吗?您有什么建议?
Answers:
我们在我参加的大学中使用了Andrew Tannenbaum的现代操作系统。我强烈推荐它,因为它清楚地说明了您将要遇到的许多设计决策中固有的权衡。这本书比Minix本书更“公平和平衡”。
我也推荐这本书,因为尽管他与莱纳斯·托瓦尔兹(Linus Torvalds)发生了著名的火焰战争,但他的偏见很少出现在本书中。而且,他是一位相当不错的作家,而这本书实际上很有趣。
本书由Minix背后的主要人物Tanenbaum编写,这是Linux的基础。它为诸如内存管理,文件系统,进程等基本OS概念提供了很好的概述。本书中的概念与Minix OS的示例紧密相关,这是一件好事。
我认为您应该从这样的事情开始。
此站点上的类似线程:
《操作系统概念》是我们在大学使用的书。但是,其中的信息很难解释(从基本内存管理到如何由OS决定执行什么或如何避免死锁),这非常丑陋。相当宽。
如果您也想开始编写自己的操作系统,Os dev网站上的信息非常丰富,
这些书虽然很旧,但是非常好:
3:http:// Operating System Design-Internetworking with XINU,Vol。II
看看HelenOS,它是一个从头开始基于微内核的操作系统,旨在成为一个完全现代化的操作系统。Disclamer,我是贡献者,我从头开始研究它的外壳。
HelenOS已被移植到ia32 / 64,SPARC,ARM等上,其设计精良且易于阅读。它仍处于起步阶段,但显示了一种可能的设计,该设计真正利用了微内核设计并解决了微内核实现(例如IPC)中的许多问题。
它还包括脚本,这些脚本会自动设置交叉编译所需的适当工具链。它非常容易构建,并且在大多数模拟器(即QEMU)或裸机中都能很好地运行。
我还将研究L4,Minix3和GNU HURD(基于Mach),后者是尝试利用微内核时设计陷阱的例证。
如果您想走整体路线,只需学习Linux。
教科书http://ecx.images-amazon.com/images/I/411E3CQQYZL._SS500_.jpg
我上大学时曾使用过操作系统和中间件:支持受控交互。它可能是该主题上最好的教科书之一。
就在我头顶上
开发自己的32位操作系统,作者Richard A. Burgess。深入了解有关引导加载程序,设置那些奇怪的内存和进程管理寄存器等的详细信息。1996年,当我以为我会从头开始编写一个简单的OS时,这是一本很棒的书,但也许可以追溯到现在,仅处理前几代奔腾级CPU。
如果我没记错的话,“启动Bash提示” HOWTO包含很多信息,对于此而言似乎很有用。旧版本的Linux From Scratch HOWTO也是如此,但最近的版本已被删除。
您还可以在了解Linux内核中找到很多很好的信息。
我建议您查看嵌入式操作系统并构建嵌入式OS。它将处理核心概念,而没有现代台式机CPU的开销。
去年春天,我写了一个多任务嵌入式操作系统作为最后一个项目,它比您想象的要容易。
您应该研究MINIX3。我相信这是一个少于10,000行的操作系统。借助Tanenbaum的一本书,您可以很好地了解OS的工作方式,并了解MINIX 3的工作方式。您可以直接使用Linux,但是我认为这是一项有用的任务,确实可以帮助您了解构建一个有效的OS真的不需要那么多的工作。
除书籍外,还有很多网站可以学习OS开发
BrokenThorn Entertainment位于该网站上,可以从基础学习OS开发。