c++ - 是否存在 LibC 操作系统?

标签 c++ c operating-system embedded osdev

我记得听说过一个嵌入式操作系统,它本质上只是 libc(也许它支持 c++)。它没有内核、管道或您期望从操作系统获得的任何其他东西。我试着寻找它in wikipedia但我没有看到它列出来。

这样的操作系统存在吗?是否有支持仅终端或 C/C++ + (tcp) 套接字在 VM 外部通信的操作系统?这对我作为玩具很有用。

最佳答案

您没有找到它的名称的原因是它不是操作系统 - 它是缺少操作系统。这通常被称为“裸机”编程。

裸机编程的总体思路是有一小段通用代码——"bootloader" -- 在板上设置内存 Controller 和其他硬件,然后将控制权转移到您的程序。 (操作系统也有引导加载程序,所以从这个意义上说,您的程序正在替换操作系统。)Uboot是一个相当常见的开源引导加载程序,因此这可能是开始查找信息的好地方。

关于裸机编程的一个棘手问题是,由于没有适当的操作系统来处理任何硬件通信,因此您必须考虑“printf 实际上意味着什么数据去往哪个外围设备?”和“我怎么让它去那里?”同样,一些引导加载程序为这类事情提供支持,尽管将它们全部连接起来并不总是微不足道的。同样,Uboot 是一个很好的例子。

同时,C 库本身实际上将由您的编译器提供,而不是引导加载程序。

(我还应该补充一点,作为名称说明:我工作的公司制造了一系列裸机和 Linux 编译器,称为 Sourcery CodeBench。对于 CodeBench,裸机版本通常以 ABI 命名它们用于链接程序的规范,因此“ELF”或“EABI”版本都是裸机编译器,我认为这是指代这类东西的一种非常常见的方式,所以你会在周围看到这样的名字也是。)

关于c++ - 是否存在 LibC 操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13063055/

相关文章:

C++ 将数据读入 char*

c - 二传手中的自由字符串

c - ZeroMQ 不会自动重新连接

linux - 如何在linux bash或python中检查两个文件是否在同一物理硬盘中?

bash - 以编程方式检测 MacOS 上的程序崩溃?

C++ 错误 : explicit qualification

c++ - C++内存顺序的理解,我错了吗?

linux - Linux 系统调用的内部结构

c++ - 这种赋值方式叫什么?我的变量(值);

c - 如何检查 SSE 中 16 位整数乘法的溢出?