Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 学习操作系统设计的Minix vs Linux?_C++_C_Linux_Operating System_Minix - Fatal编程技术网

C++ 学习操作系统设计的Minix vs Linux?

C++ 学习操作系统设计的Minix vs Linux?,c++,c,linux,operating-system,minix,C++,C,Linux,Operating System,Minix,我希望学习操作系统设计。我想知道我是否应该在这个过程中处理Minix或GNU/Linux?我喜欢书,所以我将主要关注一本书,尽管视频资源(大概是视频讲座)也会受到欢迎 我已经正式学习了C和C#,可以用它们编写中小型程序。我对数据结构也有非常基本的了解 如果我选择Minix路线,我应该选择版本2(更简单的???)还是版本3?我会选择Minix路线,这仅仅是因为我的个人经验。Minix非常直截了当,从教育的角度编写。另一方面,Linux内核已经存在了很长时间,因此进行了大量优化。我认为这不是一个好的

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

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


如果我选择Minix路线,我应该选择版本2(更简单的???)还是版本3?

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

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

涵盖了Minix,所以这可能是pro Minix的一个很好的论据

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

我会选择Minix


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

在一次实习中,我不得不在Minix中更改硬盘驱动器驱动程序,以便它使用电梯算法来处理请求,而不是先到先得。我本来应该在Minix2中完成,但我想在Minix3中完成,因为我从来不喜欢使用旧技术

在我从事这项工作的两个月里,最令人沮丧的是Minix 3在一台装有I5处理器、4GB内存、运行Windows 7的笔记本电脑上用VMWare编译大约需要20分钟。最后,两个月后,我放弃了Minix3,转而使用Minix2,它大约在20秒内编译完成

现在我并不是说我在编译这个系统的过程中不可能出什么问题,但我一直在努力加速,但没有成功

我想说的是,当时我刚刚获得计算机科学硕士学位,有5年的C语言编程经验(这样你就不会认为我是一个自学成才的程序员,只是决定通过重新设计操作系统来开始编程:D)


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

正如其他海报所说,从Linux开始可能会很困难,因为它现在如此庞大和复杂,进入的障碍已经大大增加。但是,如果您确实选择了这条路线,我建议您从一个小的子系统开始,并专注于此。

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

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

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

并非所有操作系统都是“类Unix”的,例如。。。另见


J.Pitrat的书对操作系统可能是什么有着有趣的见解。

这一次它只是Linux,而不是GNU/Linux,我想:)@phresnel-hmm,不确定,GNU-Hurd也是内核,对吗?因此,在本例中,GNU/Linux意味着GNU内核或Linux内核。对吗?Linux是内核,GNU/Linux是与GNU工具耦合的Linux内核。GNUHurd既是内核又是工具,都是FSF制造的。我知道他想学习内核。Otoh,我错过了haziz说的“GNU/Linux”。这不是GNU/Minux对GNU/Linux对。。。那么?哦,这让人感到困惑。我出于习惯键入GNU/Linux,我将学习的大部分是Linux内核,不过我也希望在稍后的某个时候介绍一些基本的GNU实用程序,如gcc、gdb和GNU Make。我还没有准备好处理编译器设计,至少在处理内核时没有准备好。如果我真的选择研究Linux内核,我可能也会选择较旧的版本(?2.4甚至更早),以保持简单。这将取决于我选择哪本书或哪种资源,因为我可能会尝试匹配所涵盖的内核版本。
可以在其中编写[…]个中等大小的程序
->如果您只对它们进行过正式研究,并且对数据结构只有非常基本的了解,我会质疑这一观点。对我来说,中等规模的程序位于100kLoC区域,这意味着您需要很好地掌握如何组织代码,如何为实体、名称空间、良好的类设计和基于多年经验的直觉选择好的名称。归结起来就是:如果你还没有写一个好的、干净的中等规模的程序,你就不知道你是否已经能够写了。@phresnel我认为你对编程能力的定义将排除大多数主修计算机科学的大学生;他们中的大多数人实际上都需要学习操作系统编程课程。“can编程”与“编程能力”不同。我一开始写过游戏和其他东西,它们很好用,但是现在,w.r.t.很好的编程风格和惯用性,我会给它们打分为“失败”。+1对于这本书,它的结构非常好,这也是我用过的书,唯一的问题是我有第二版(Minix 2版),不是Minix 3的。我被Minix吸引是因为Tanenbaum的书和它在美国的历史