繁体   English   中英

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

[英]Are libc and malloc part of the operating system?

我正在与一位同事讨论malloc,是否想知道某些情况下,诸如malloc之类的libc调用是由操作系统实现的?

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

int assign_memory_segmention(size_t start, size_t end);

我知道我的stdlib.h标头是GNU的一部分,因为有GPL标头...而且GNU已确保通知我...它们不是Unix。 那么malloc只是某种类型的指向OS堆实现的函数指针吗?

最好再问另一个问题:什么是操作系统? 或者,如果您愿意:在OS和标准库之间的哪一行打印?

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

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

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

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

是的,没有。 C malloc()通常是OS调用提供的内存区域的子分配器。 操作系统管理所有虚拟内存-这是其工作的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM