内核全局变量存储在哪里?

内核全局变量存储在哪里?

我目前正在编写一个 Linux 内核模块。我知道,在用户空间程序的情况下,未初始化的全局变量(使用 导出到其他模块EXPORT_SYMBOL)存储在 BSS 段中,初始化的全局变量存储在用户空间内存的数据段中。但如果是内核代码,它们是如何存储的呢?

如果是内核代码,函数调用是否也包含在堆栈中?

预先感谢您的任何帮助。

答案1

内核有一些数据段的概念,它位于 RAM(由内核加载器加载的物理内存,例如GRUB, 不是虚拟内存)。

有关详细信息,请检查链接描述文件在内核构建时使用,可能是类似的文件arch/x86/kernel/vmlinux.lds或其他*.lds文件。

相关内容