【发布时间】:2011-04-07 11:01:49
【问题描述】:
我需要一些指导来开始学习编写自己的操作系统内核。
仅用于教育目的。
如何编写自己的内核?
【问题讨论】:
-
看看像MINIX 1这样的初学者。
标签: linux kernel distribution distro
我需要一些指导来开始学习编写自己的操作系统内核。
仅用于教育目的。
如何编写自己的内核?
【问题讨论】:
标签: linux kernel distribution distro
我首先要问:您为什么选择“编写内核”?除了“在内存中实现我自己的任务结构以由我编写的调度程序交换并使用由我编写的代码管理并受机器级原子指令抽象保护的内存的想法之外的任何答案,并给出我/O 通过位于实际硬件接口之上的抽象访问对我很有吸引力”可能是一个糟糕的答案,表明您没有进行任何研究并且在浪费您的时间。
如果您的回答与上述类似,那么您有一个很好的起点并且您知道您需要研究什么(也就是说,您能够在一定程度上确定您不知道但需要找出哪些信息) .
不管怎样,我认为这个问题不值得问。在一种情况下,您自己没有进行任何研究来发现您是否真的可以做到这一点,而在另一种情况下,您提出了一个过于宽泛的问题。
【讨论】:
这并不难,但您需要了解正确的资源管理和低级设备 I/O。如果您的目标是商品 x86 机器,那么您需要了解 BIOS 的工作原理以及磁盘的结构。例如,BIOS 会将磁盘的第一个块读入内存的某个固定地址,然后跳转到该地址。由于一个块中可能没有足够的空间来存储您的内核,因此您需要编写一个引导加载程序来从磁盘读取您的内核并加载它。
编写一个执行一些简单的多任务处理并仅使用 BIOS 执行 I/O 的最小内核并不太难,只是不要期望很快就会抛出任何窗口和鼠标。您将忙于尝试实现一个简单的文件系统并让read() 和write() 工作。
【讨论】:
也许您可以从查看OS/161 开始,它是哈佛用于教育目的的简化操作系统。操作系统在模拟器上运行,因此您不需要新机器来运行它。我将它用于我的操作系统课程,它确实有很大帮助。
另外,我认为如果您还没有参加操作系统课程,您可能真的想考虑参加。
【讨论】: