【发布时间】:2020-05-01 09:08:43
【问题描述】:
我们知道 Linux 内核是用 C 编写的。但它是否也调用了标准 C 函数,如 malloc() 或额外的函数,如 GNU C 库 (glibc) 提供的 mmap()?在那种情况下,这很奇怪,因为直接与硬件进行低级交互,例如内存管理,应该几乎总是内核的任务。那么,哪个依赖于另一个?哪个更基础/低级?
【问题讨论】:
-
我认为有些是。所以我这么说的原因是因为内核依赖glibc是没有意义的。有很多讨论哪个 glibc 版本可以与哪个内核版本一起使用,但这并不意味着内核依赖于 glibc。我刚刚在 linux 源代码中快速搜索了一下,发现 malloc 是在几个地方定义的。有多少组装,是什么,我不知道。
-
“我还没有看到任何一个的源代码” - 那你为什么在这里提问?做一些研究,得出结论并询问不清楚的地方。顺便说一句,看看
/lib/string.c(在那里你可以找到strlen()和朋友)和其他类似的文件——阅读cmets、git历史等。 -
不,这绝对不清楚,它带有不尊重的味道,听起来像是“我没有时间,所以去弄清楚并挖掘代码而不是我”。来自WRITING THE PERFECT QUESTION:“在提出问题之前,您已经找到了解决问题的方法,不是吗?Stack Overflow 并不是要取代基本的搜索技能”。你听说过
git clone和grep这样的工具吗? -
@apadana 为什么不呢?下载它的源代码是一个 5 分钟的任务。在源代码中查找您要查找的内容,现在需要更长的时间。
-
没有人说你不应该问。问题是您至少需要自己搜索某些内容,而不是使用“”字段作为 Google 中的请求行。
标签: c linux linux-kernel glibc