首页 > 解决方案 > 为操作系统编写 C 库

问题描述

我需要一些认真的帮助。我正在尝试,我的意思是真的想创建一个类似 DOS 的操作系统。我阅读了多篇文章,阅读了多本书(我什至为 O'Reilly Media 支付了终身订阅费),但无济于事,我发现没有任何用处。我想学习如何制作操作系统库,这就提出了一个问题:如果您为操作系统编译程序,您为程序编写的库是否相同?我知道操作系统的制作非常具有挑战性,而极少数尝试制作操作系统的程序员永远不会生产出功能正常的操作系统,这就是为什么它被描述为编程的伟大顶峰” 。. 但是,我仍然会尝试制作一个(只是为了好玩,也许会在途中学习一些指针)。我需要做的基本上就是学习如何制作库、C(我已经知道并喜欢)、程序集(我有点知道如何与 C 一起使用)和编译器(我使用 GNU 工具链)。我唯一遇到的问题是对库进行编码。我现在就像,谁知道编码库这么难,就像给我指一本书什么的!但不是。我不是在这里要一本书,我所要的只是一些关于如何做到这一点的建议:

最后,

总之,主要问题是,任何人都可以帮助我或提供一些关于如何使这项工作的提示或建议,或者是否有一个预构建的库最有可能加快这个过程?

标签: coperating-systemlibrariesosdev

解决方案


如果您为操作系统编译程序,您为程序编写的库是否相同?

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

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

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

没有一个标准的 C 库可供您使用 - 因此您需要它提供的一些东西的等价物 - 但在内核空间 - 包括类型定义、内存管理和编译器期望的内在函数 - 特别是那些用于内存屏障的东西. 无论如何,C 库不提供任何数据结构或算法,但您肯定希望尽早编写一些。


推荐阅读