2008-08-23 56 views

回答

12

在大学里,我有一个操作系统课,我们使用book by Tanenbaum。在课堂上,我们在Minix operating system中实施了一个设备驱动程序。这很有趣,我们学到了很多东西。

但有一点需要注意,如果你选择Minix,它是为学习而设计的。它是一个微内核,而Linux和BSD是一个单一的内核,所以你学到的东西可能不是100%可翻译的,无法与Linux或BSD一起工作,但是你仍然可以从中获益很多,而不必处理得相当尽可能多的信息。作为一个方面说明,如果你读过Just for Fun,Linus在写Linux之前实际上是在和Minix一起玩,但这对他的目的来说还不够。

7

作为一个Linux用户,我认为Linux有一个很好的社区供人们了解内核。 http://kernelnewbies.org是开始提问并了解内核工作原理的好地方。我无法做出书的推荐,但是一旦你阅读了关于核心新闻的起始材料,这个源文件就非常有用。

6

除了已经提到的优秀书籍(操作系统设计&实现特别好)之外,获得1.x版本的Linux Kernel,将其加载到VMWare或VirtualBox并从那里开始播放。

您将需要花费大量时间浏览源代码。为此,请查看http://lxr.linux.no/这是源代码的可浏览链接版本,使生活变得更加轻松。对于Linux的第一个版本(0.01),请查看http://lxr.linux.no/linux-old+v0.01/。乐趣始于http://lxr.linux.no/linux-old+v0.01/boot/boot.s。随着版本的不断发展,请查看ChangeLog并深入了解已更改的部分,以免再次读取整个内容。

一旦你掌握了这些概念,看看2.0,然后2.2等等。准备好在这个过程中沉淀很多时间。

1

当我在uni的时候,我花了一个学习时间学习操作系统,作为其中的一部分,我们必须在Linux中实现一个基于RAM的文件系统。

这是了解Linux keurnel的内部结构并掌握所有东西如何组合在一起的绝妙方式 - 同时也充分利用它与标准工具交互的乐趣。

1

潜入代码是无可替代的。尝试找到您感兴趣的驱动程序或子系统,并随时了解它。通过使用像VMware Workstation这样的工具,可以非常容易地进行所需的任何更改,快照虚拟机并运行修改的内核。如果内核在启动时出现混乱,谁在乎?只需跳回快照并解决问题。

对于书籍,我强烈推荐Robert Love给Linux Kernel Development。这是一本精彩的书 - 大量的信息,组织理智,幽默......没有干枯的阅读。

0

我自己没有尝试过,但可以从Linux开始构建自己的Linux发行版。听起来像是需要花费大量时间的东西,但会导致对Linux内核的胆量以及每个部分如何工作的深入了解。当然,你可以通过遵循任何其他的技巧来补充这一点。

+2

LFS旨在让你获得构建发行版的深入知识,并且真的不会帮助你理解内核 - 如何编译它。 – Draemon 2008-10-21 13:04:40

4

注意到缺乏BSD系统的在这里,我想我会解囊:

我自己并没有参加过任何课程,但我听说马歇尔柯克麦克库克在其他场合发表演讲,而且他非常擅长他的工作。

当然,BSD手册页是一个很好的资源,因为它们的维护程度远远超过普通的Linux手册页。以例如uvm(9)手册页为例,描述OpenBSD中的虚拟内存接口。

不完全相关,但我也会推荐视频History of the Berkeley Software Distributions,因为它可以很好地介绍UNIX历史和文化的BSD部分,以及从后面的大量欢迎的anectodes。

1

迈克斯通的建议,并从Minix开始。这就是Linus所做的!教科书写得非常好,Tannenbaum在展示如何在真实系统中实现各种功能方面做得非常出色。

1

似乎没有人提到过,代码化的BSD更清洁和更一致。文档的方式也更好(如前所述)。但是,由于您选择的系统有很多摆弄 - 我会选择更经常使用的系统。

3

我向你推荐BSD内核! BSD内核的黑客数量少得多,所以他们的发展更容易。 BSD和Linux内核都有很好的黑客,但有些人认为BSD的名气过滤了新手。当信息源没有每天更新100次时,也可以更轻松地进行设计决策。

在BSD的选择中,我最喜欢的是NetBSD。它可能不是您想要的桌面的无痛选择,但是因为它非常注重可移植性,所以质量非常好。我认为这一部分是这样说的:

10有些系统似乎有“如果它工作,它是正确的”的哲学。而就NetBSD的理念可以被描述为“它不工作,除非它是正确的”

如果你已经工作够长,你就会知道,NetBSD的是学习好的编码相当喜悦。尽管专业,你会发现更多的机会与Linux

无论你选择,开始加入他们的邮件列表,按照讨论。研究一些补丁,并最终尝试做你自己的错误修复。关于书籍,搜索Diomidis Spinellis文章和his book。这不完全是一本内核书,但有NetBSD的例子,并帮助大量解决大型软件。

1

Linux和Minix乐于学习。如果您还想了解现代微内核操作系统的外观,您可以看看QNX。完整的文档可在线获取,并且非常方便。例如,this在线书籍。

相关问题