为操作系统编写 C 库代码

Coding C libraries for an Operating System

我需要一些认真的帮助。我正在尝试,我的意思是真的想创建一个类似 DOS 的 OS。我看了多篇文章,看了多本书(我什至为O'Reilly Media付了终身订阅费),但无济于事,没有找到任何有用的东西。我想学习如何制作操作系统库,这就提出了一个问题; 如果您正在为操作系统编译程序,您为程序编写的库是否相同?我知道操作系统的制作非常具有挑战性,而且很少有程序员尝试制作操作系统永远不会产生一个功能正常的,这就是为什么它被描述为 "the great pinnacle of programming."。但是,我仍然会尝试制作一个(只是为了好玩,并且可能会在途中学习一些指示)。我需要做的就是学习如何制作库、C(我已经知道并喜欢)、汇编(我有点知道如何与 C 一起使用)和编译器(我使用 GNU 工具链)。我在 上遇到的唯一麻烦是编写库代码。 我现在就像 wow,谁知道编写库代码这么难,比如给我指一本书什么的!但不是。 我不是在这里要书,我只是要一些关于如何做到这一点的建议,例如:

最后,

总而言之,主要问题是,任何人都可以帮助我或提供一些提示或建议以帮助我完成这项工作,或者是否有一个预建的库最有可能加快速度过程?

你为一个程序编写的库和你为一个操作系统编译的库是一样的吗?

绝对不是。最低级别的 user-space C 库对操作系统进行系统调用,以通过设备驱动程序与硬件交互;它是您将要编写的设备驱动程序和与硬件的交互。

根据我进行嵌入式系统启动的经验,开始的方式是使用带有传统 RS-232 端口的开发板。这是编写驱动程序最简单的设备——您将字节写入内存映射的 IO 地址,稍等片刻,然后再写入一些。这也是您的第一个调试输出的位置。

尽管如此,您可能会发现自己摇摆不定 IO 引脚并使用逻辑分析仪或 DSO 探测它们 - 因此您需要一个可以访问信号的开发板。

标准 C 库的

None 将可供您使用 - 因此您需要它提供的某些东西的等价物 - 但在内核 space 中 - 包括类型定义、内存编译器期望的管理和内在函数——尤其是那些用于内存屏障的内在函数。 C 库不提供任何数据结构或算法,但您肯定希望尽早编写一些。