c - 为操作系统编写 C 库
问题描述
我需要一些认真的帮助。我正在尝试,我的意思是真的想创建一个类似 DOS 的操作系统。我阅读了多篇文章,阅读了多本书(我什至为 O'Reilly Media 支付了终身订阅费),但无济于事,我发现没有任何用处。我想学习如何制作操作系统库,这就提出了一个问题:如果您为操作系统编译程序,您为程序编写的库是否相同?我知道操作系统的制作非常具有挑战性,而极少数尝试制作操作系统的程序员永远不会生产出功能正常的操作系统,这就是为什么它被描述为“编程的伟大顶峰” 。. 但是,我仍然会尝试制作一个(只是为了好玩,也许会在途中学习一些指针)。我需要做的基本上就是学习如何制作库、C(我已经知道并喜欢)、程序集(我有点知道如何与 C 一起使用)和编译器(我使用 GNU 工具链)。我唯一遇到的问题是对库进行编码。我现在就像哇,谁知道编码库这么难,就像给我指一本书什么的!但不是。我不是在这里要一本书,我所要的只是一些关于如何做到这一点的建议:
你如何开始制作一些基本的 I/O 库
和制作普通的C库一样吗
最后,
- 会很难吗?(JK 我已经知道这将是非常困难的,这就是我准备这么多的原因)
总之,主要问题是,任何人都可以帮助我或提供一些关于如何使这项工作的提示或建议,或者是否有一个预构建的库最有可能加快这个过程?
解决方案
如果您为操作系统编译程序,您为程序编写的库是否相同?
绝对不。最低级别的用户空间 C 库对操作系统进行系统调用,以通过设备驱动程序与硬件进行交互;它是您将要编写的设备驱动程序和与硬件的交互。
从我做嵌入式系统启动的经验来看,你开始的方式是使用带有传统 RS-232 端口的开发板。这是编写驱动程序的最简单的设备 - 您将字节写入内存映射的 IO 地址,稍等片刻,然后再写一些。这也是您的第一个调试输出所在。
不过,您可能会发现自己在摆动 IO 引脚并使用逻辑分析仪或 DSO 对它们进行探测 - 因此您需要一个可以访问信号的开发板。
没有一个标准的 C 库可供您使用 - 因此您需要它提供的一些东西的等价物 - 但在内核空间 - 包括类型定义、内存管理和编译器期望的内在函数 - 特别是那些用于内存屏障的东西. 无论如何,C 库不提供任何数据结构或算法,但您肯定希望尽早编写一些。
推荐阅读
- computer-vision - 2d 人体姿态估计评估指标
- javascript - 我正在尝试显示数据库表中的一组值。我得到了这些值但无法显示它
- javascript - state 不等于 false 时的阻塞函数
- javascript - 从一个 Firestore 文档中检索数据以查询另一个
- r - 来自数据集的 20 个样本的 100 个样本,并绘制回归线和总体回归线
- r - 具有来自 R 中数据帧的多个参数的 FOR 循环
- javascript - 当它在画布中连接时,如何在 4 行之间填充颜色?
- markdown - Markdown 格式的 Nikola 目录
- gis - 无法使用 react-map 和 react-map-draw 中的 queryRenderedFeatures 在边界框中获取图层属性
- r - 基于函数外的其他变量创建变量