我最近试图想象如何在Linux内核中处理堆栈内存,但无法提供任何可靠的东西。我知道内核使用自己的函数进行动态内存管理,但是我不知道它是如何管理普通的C堆栈内存的,因为毕竟,这可以用普通的C实现并且用普通的GCC编译。就我而言,堆栈内存分配通常在处理操作系统时甚至在处理AVR时通过libc的形式处理。据我所知,尽管Linux内核不依赖于libc?Linux内核中的堆栈内存
我不能完全肯定的内存管理是如何栈委托摆在首位到libc虽然它似乎是一个语言功能构建的。我可以想像的是,它以某种方式编译(或实现),以便提供者可以在之后或可能作为编译过程的一部分被分配。有人可以帮我解释一下吗?
当一个新进程启动时,它有一个映射到进程地址空间的用户空间堆栈和一个用于进行系统调用的内核堆栈。堆栈指针开始指向堆栈。 libc并没有参与这个* *。发布的答案有点令人困惑,但它似乎是正确的关于ELF二进制文件能够控制他们得到什么样的堆栈设置:http://stackoverflow.com/questions/18278803/how-does-elf-file-format - 定义最堆栈。缺省情况是不具有这样的部分,然后在内核默认的virt地址选择处获得默认堆栈。 –