我们知道Linux内核是用C语言编写的。但它是否也调用了标准的C函数,比如由GNU C库(glibc)提供的malloc()或额外的函数,比如mmap()?如果是这样,那么这很奇怪,因为直接与硬件进行低级交互,例如内存管理,通常应该是内核的任务。所以,哪个依赖于另一个?哪个更基本/低级?
我们知道Linux内核是用C语言编写的,但它是否也调用标准C函数,如malloc()?不是。然而,内核定义了类似的函数,例如kmalloc。请注意,这不是库的一部分,它是内核本身的一部分。还是额外提供了像mmap()这样的函数吗?不是mmap,但内核中有很多内存管理函数。这些函数是由GNU C库(glibc)提供的吗?绝对不是。内核从未使用过glibc。那么,哪一个依赖于另一个?glibc的某些部分依赖于内核。其他部分(如strcpy)与内核无关,不依赖于它。内核从未依赖于glibc。您可以在Linux上运行使用不同libc(如“musl”)或根本不使用libc的程序。
/lib/string.c
(其中可以找到strlen()
和类似函数)和其他类似的文件 - 阅读注释,[tag:git]历史记录等。 - z0lupkagit clone
和grep
这样的工具吗? - z0lupka