原文链接:https://wiki.osdev.org/What_Order_Should_I_Make_Things_In?
主页:https://blog.csdn.net/qq_37422196/article/details/122591214
下面的链接如果指向原网站的话,大概是还没有翻译
在赶了在赶了……
以什么顺序学习是风格问题。你可以从头开始直接深入研究,编写引导扇区,然后编写最小内核,然后从那里构建。你可以跳过引导扇区,并使用像GRUB这样现成的引导加载程序(使用自己的引导加载程序是一种宝贵的经验还是浪费时间是个值得讨论的问题)。你也可以不按特定顺序写一些零碎的东西,最后把它们组合到一起。这里可能没有正确或错误的方法。如果你想了解一些易于使用的东西(实际上对于每个操作系统都必须的),你可以继续阅读
对于初学者
- 在屏幕上打印字符串和整数(十进制和十六进制)当然是必须的。这是最基本的调试方法之一,我们几乎所有人都经历过0.01版中的kprint()或kout
- 输出到串口将为你节省大量调试时间。你不必担心由于滚动而丢失信息。你将能够从控制台测试你的操作系统,过滤出有用的调试消息,并自动化一些测试
- 拥有一个可用且可靠的中断/异常处理系统来转储寄存器的内容(可能还有故障的地址)将非常有用
- 规划你的内存安排(虚拟的和物理的):决定数据在哪里
- 堆:在运行时没有内存分配(malloc和free)几乎是不可能的。应尽快实现
一旦完成这些步骤,你是否会在拥有文件系统、多任务处理或模块加载之前尝试拥有一个可用的GUI都完全取决于你。试着找出什么可能依赖于什么,并以“最小依赖优先”的顺序做事
例如,GUI可能依赖文件系统来加载位图或资源,但在你的第一个GUI中不一定需要位图。在这种情况下,好的建议是首先设计文件系统的接口(无论是打开/关闭/读/写还是其他),然后继续使用你喜欢的任何东西,只要在两边都遵守接口
极端风格
操作系统开发似乎在操作系统开发者(以及他们开发的操作系统)中有“原型”。当然,大多数人对“完整”内核的想法包括下面列出的大部分(如果不是全部)项目
下面举例子就不翻译了,去原站自己看