Minix vs Linux用于学习操作系统设计?

时间:2011-11-24 09:45:21

标签: c++ c linux operating-system minix

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

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

如果我采用Minix路线,我应该解决版本2(更简单??)还是版本3?

5 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:7)

Operating Systems: Design and Implementation涵盖Minix,所以这可能是一个很好的论据,专业Minix。

我自己没有触及这个主题,Linux相当大(上次我检查了1000万行+,当然你不需要研究所有这些),而Minix使用带有独立模块的微内核架构,所以它可能更容易掌握。

我会选择Minix。

(另一方面,O'Reilly有很多关于Linux的书籍;但我想我仍然会选择Minix,将该书作为参考书)

答案 2 :(得分:5)

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

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

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

我要说的是,当时我刚刚获得计算机科学硕士学位,而且我在C语言编程方面有5年的丰富经验(这样你就不会认为我是一名自学成才的程序员刚刚决定通过重新设计操作系统来进入编程:D)

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

答案 3 :(得分:0)

正如其他海报所说,从Linux开始可能很困难,因为它现在如此庞大和复杂,以至于进入门槛飙升。但是,如果你确实选择了这条路线,我建议从一个小子系统开始,重点关注它。

答案 4 :(得分:0)

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

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

这还取决于您对操作系统的精确定义。这不一定与OS kernel

相同

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

J.Pitrat的书Artificial Beings (the conscience of a conscious machine)对操作系统的内容有了有趣的见解。