我知道Linux系统中有内核空间和用户空间。用户空间被某些特定的程序使用,它可以通过某种方式与内核空间进行通信,例如系统调用。
我还知道程序使用内存的规则是:内存布局,我们有堆栈、堆、文本、BSS、数据等。
现在我有一个问题:内存布局和内核/用户空间之间有什么关系?内存布局必须在用户空间吗?或者这两个概念无关?
答案1
这两个概念是正交的。当提到内存时,用户空间是指以用户级权限运行时可访问的内存,而内核空间是指以内核级权限运行时可访问的内存。内存布局是指内存的使用方式,这取决于每个“用户”。
内核有自己的内存布局,64 位 x86 上有大量文档。