10

我想学习操作系统设计。我想知道我是否应该在此过程中处理 Minix 或 GNU/Linux?我喜欢书籍,所以我会主要关注一本书,但也欢迎视频资源(可能是录像讲座)。

我已经正式学习过 C 和 C#,并且可以在其中编写中小型程序。我对数据结构也有非常基本的了解。

如果我走 Minix 路线,我应该处理版本 2(更简单??)还是版本 3?

4

5 回答 5

17

我会选择 Minix 路线,只是因为我的个人经验。Minix 非常简单明了,并且是从教育的角度编写的。另一方面,Linux 内核已经存在了很长时间,因此进行了大量优化。我不认为这是一个好的开始。

我不会太担心哪个 minix 版本。概念保持不变。使用较新的版本,您可以在其上运行 X,这可能会有所帮助,但同时会增加更多复杂性。只需选择您找到一本好书的版本即可。

于 2011-11-24T09:48:35.763 回答
7

操作系统:设计和实现涵盖 Minix,所以这可能是 Minix 的一个很好的论据。

自己没有接触过这个话题,Linux 相当大(上次我检查了 1000 万行+,当然你不必研究所有这些),并且 Minix 使用带有单独模块的微内核架构,因此可能更容易抓牢。

我会选择Minix。

(另一方面,O'Reilly 有许多关于 Linux 的书;但我想我还是会选择 Minix,以那本 phat 书作为参考)

于 2011-11-24T09:50:50.317 回答
5

在我做的实习中,我不得不更改 Minix 中的硬盘驱动器,以便它使用电梯算法而不是先到先服务来处理请求。我应该在 Minix 2 中完成,但我想在 Minix 3 中完成,因为我从不喜欢使用旧技术。

在我研究的 2 个月里,最令人沮丧的是 Minix 3 在 I5 处理器、4GB RAM 运行 Windows 7 的笔记本电脑上花了大约 20 分钟在 VMWare 中编译。最后,在 2 个月后,我放弃了在 Minix 3 上并切换到 Minix 2,它在大约 20 秒内编译。

现在我并不是说我编译系统的方式不会有什么问题,但我真的很努力地加快速度,但没有成功。

顺便说一句,当时我刚刚获得计算机科学硕士学位,并且有 5 年的 C 编程密集经验(只是为了让你不认为我是一个自学成才的程序员,只是决定通过重新设计操作系统来进行编程:D)

编辑:最后,我建议你尝试编译 Minix 3 看看它对你有什么好处。如果你有更多的运气,肯定会选择这个,因为它有更现代的操作系统概念,另一方面,如果你是一个完全的初学者,你可能会从 Minix 2 中学到很多东西。我做到了。

于 2011-11-24T09:55:20.700 回答
0

正如其他发帖人所说,从 Linux 开始可能会很困难,因为它现在如此庞大和复杂,以至于进入门槛已经飙升。但是,如果您确实选择了这条路线,我建议您从一个小型子系统开始并专注于它。

于 2011-11-24T11:47:03.533 回答
0

还有其他可能性,FreeBSD 甚至GNU/Hurd(甚至你自己的玩具内核)。这取决于你真正想学什么。

如果您了解 Linux 并且了解如何编写驱动程序,那么编写自己的 Linux 驱动程序内核模块是明智的。

它还取决于您对操作系统的精确定义。这不一定与操作系统内核相同

并非所有操作系统都是“类 Unix”,例如coyotosKangaroo,...另见tunes.org

J.Pitrat 的书《人造存在》(有意识的机器的良心)对操作系统可能是什么有有趣的见解。

于 2011-11-24T11:47:07.803 回答