c - libc 和 malloc 是操作系统的一部分吗?

标签 c unix operating-system malloc libc

我正在与一位同事讨论 malloc,并且想知道某些 libc 调用(如 malloc)是否是由操作系统实现的?

我一直认为 malloc 正在调用“sys”中公开的一些符号来声明它将使用哪些内存地址。根据我的想法,操作系统将允许使用某些操作系统级别的 API 来指定程序的分段...这可能类似于:

int assign_memory_segmention(size_t start, size_t end);

由于 GPL header ,我知道我的 stdlib.h header 是 GNU 的一部分...并且 GNU 已确保通知我...它们不是 Unix。那么 malloc 只是某种类型的指向操作系统堆实现的函数指针吗?

最佳答案

这个问题最好与另一个问题一起问:什么是操作系统?或者,如果您愿意:在哪里打印操作系统和标准库之间的界限?

从技术上讲,malloc 是标准 C 库的一部分。而且由于Linux主要是用C语言编写的,并且同一个库还包含许多系统调用,而不是C语言,因此有理由认为该库是操作系统的一部分。

但是,另一方面,C 库有多种实现,而且 GNU C 库也可用于其他操作系统,例如 Windows。我确信还有其他语言可以在不使用标准 C 库的情况下调用操作系统。因此,从这个角度来看,它不是操作系统的一部分。

但是,Linux是内核,操作系统应该命名为GNU/Linux(需要引用)。但同样,也有没有 GNU 的 Linux 系统,例如 Android...

结论是:“操作系统”这个术语不是一个技术术语。如果要精确,请使用内核标准C库等。

关于c - libc 和 malloc 是操作系统的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228705/

相关文章:

python - 如何保护 Python 源代码?

c++ - 运行 UNIX 应用程序的堆栈跟踪

java - 在某些 Windows 服务或程序启动时触发 Java 程序

string - Shell 脚本 - 从变量中删除第一个和最后一个引号 (")

c - 在 qemu 中测试系统调用

python - 有没有一种可靠的方法可以使用 Python 确定系统 CPU 架构?

c - 这段代码对内存有什么影响

c - pthread_join 从数组中的函数接收结果

c - 如何在 Xcode 上运行现有的 C 文件

c - 二级二叉树插入段错误