我想学习操作系统设计。我想知道我是否应该在这个过程中处理Minix或GNU/Linux ?我喜欢读书,所以我将主要关注一本书,尽管视频资源(可能是录像带讲座)也会受到欢迎。
我正式学习过C和c#,可以用它们编写中小型程序。我对数据结构也有非常基本的了解。
如果我走Minix路线,我应该处理版本2(更简单??)还是版本3?
我会选择Minix这条路,仅仅是因为我的个人经验。Minix非常简单,是从教育的角度编写的。另一方面,Linux内核已经存在了很长时间,因此进行了大量优化。我不认为这是一个好的开始。
我不会太担心是哪个minix版本。概念是一样的。对于较新的版本,您可以在其上运行X,这可能很有帮助,但同时也增加了复杂性。
操作系统:设计和实现涵盖了Minix,所以这可能是一个很好的论据。
如果我自己没有接触过这个话题,Linux是相当大的(上次我检查了1000万行+,当然你不必研究所有的),Minix使用带有独立模块的微内核体系结构,所以它可能更容易掌握。
我会选择Minix。
(另一方面,O'Reilly有很多关于Linux的书;但我想我还是会用Minix,有那本phat book作为参考)
在实习期间,我不得不更改Minix中的硬盘驱动器,以便它使用电梯算法来处理请求,而不是先到先得。我本来应该在Minix 2中做,但我想在Minix 3中做,因为我从不喜欢使用旧技术。
在我工作的2个月里,最令人沮丧的是Minix 3在一台I5处理器、4GB内存、运行Windows 7的笔记本电脑上花了大约20分钟在VMWare中编译。最后,2个月后,我放弃了Minix 3,转而使用Minix 2,它的编译时间大约是20秒。
我并不是说我编译系统的方式不可能有什么非常错误的地方,但我真的很努力地想加快速度,但没有成功。
我想说的是,当时我刚刚获得计算机科学硕士学位,并且有5年的C语言编程经验(只是为了让你不要认为我是一个自学成才的程序员,只是决定通过重新设计操作系统来进入编程:D)
编辑:最后,我建议你尝试编译Minix 3,看看它是如何为你的。如果你有更多的运气,肯定会选择这个,因为它有更现代的操作系统概念,另一方面,如果你是一个完全的初学者,你可能会从Minix 2中学到很多东西。我做到了。
正如其他发帖者所说,从Linux开始可能很困难,因为它现在是如此庞大和复杂,进入的门槛已经飙升。但是,如果您选择了这条路线,我建议从一个小子系统开始,并专注于它。
还有其他的可能,FreeBSD甚至GNU/Hurd(甚至是你自己的玩具内核)。这取决于你真正想学什么。
如果你了解Linux并且想学习如何编写驱动程序,那么编写自己的Linux驱动程序内核模块是明智的。
这也取决于你对操作系统的精确定义。这并不一定与OS内核相同
不是所有的操作系统都是"类unix"的,例如:coyotos, Kangaroo,…参见tunes.org
J。Pitrat的书《Artificial Beings》(有意识的机器的良心)对操作系统可能是什么有有趣的见解。