gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:27:17 33 4
gpt4 key购买 nike

我正在与一位同事讨论 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com