欢迎来到unix.stackexchange.com!
您的问题没有简单的答案,而且比我强得多的人撰写了有关Linux内核和操作系统的整本书。
关于项目范围:编写操作系统并非易事!即使是像Minix这样的有针对性的最小化操作系统,也是一件相当复杂的事情!为了使您对Linux有所了解,请考虑一下到目前为止已编写的C程序。大学的平均课程作业往往最多为数千行C。我认为我的最后一年的项目是大约30–35,000行C ++。Linux内核大约包含13,000,000行C代码。
为什么全部都放在单独的文件中?出于后勤和实际原因,将大量项目存储在单独的文件中。只需考虑将一个13,000,000行文件加载到编辑器中!在处理像Linux这样的大型项目之前,您绝对应该将C技能磨练到“为什么要多个文件”的问题能够解决自己的地步。您还应该能够阅读C代码,而不仅仅是编写。(比起初看起来要难)
您肯定应该非常精通C。内核由成千上万的人维护,并且您会被要求了解他们每个人的个人C习惯用法(在相当严格的内核编码标准内,这是允许的,但仍然-每个人都有自己的解决问题的风格)。
获得C fu之后,请确保您了解操作系统。这将帮助您理解代码。并非所有Linux都是必不可少的。内核本身很小!肿的是:
- 成千上万的各种设备的硬件驱动程序。
- 各种设备类的抽象层,以简化API和驱动程序编写。例如,我们有用于文件系统的VFS,用于输入设备的事件层等。
- 满足运行Linux的各种体系结构的有条件编译的代码和文件数量惊人(不是每台Linux机器都是Intel PC,而且有些与您期望的有所不同)。内核必须处理这些差异,这意味着需要更多代码。
您会立即发现的一个问题是,这些组件并不是那么容易拔出,更换和重新插入在一起。有许多相互关系。简而言之,更改内核位非常棘手。
人们向您推荐Minix的原因很简单:这是一个完整的操作系统,但是却没有像Linux这样复杂的系统需求所困扰。该代码虽然很小,但是仍然提供完整的功能。毕竟,Linux的第一个版本是受Minix启发的。
当然,最近Minix的硬件支持较少。所以呢?真是个福音!现代计算机的虚拟化效果很好。利用它来发挥您的优势:运行Minix的VM非常轻巧,这会使开发陷入困境。
如果您的项目是构建操作系统,那么比研究Minix还要糟糕。您可能还需要购买和阅读Minix随同著作的书,即“ Andrew Tanenbaum的Modern Operating Systems ”。
您还应该设定目标并精确定义术语。如果您自己的操作系统定义是Microsoft的(具有GUI和完整软件套件的操作系统),那么您可能会从事很长的项目!毕竟,自1960年代以来,成千上万的人为使我们成为现在的我们而努力。
最后,请记住计算机科学家的战斗口号:“ 永远不要重新发明轮子!'(当然,我们喜欢在学习时做例外。为了好玩:))