设备驱动程序使用内核逻辑地址空间还是内核虚拟地址空间?

设备驱动程序使用内核逻辑地址空间还是内核虚拟地址空间?

如果可能的话,您能指出文档或描述内核空间内存布局吗?

当设备驱动程序实例化一个变量时,该变量是否存在于内核空间中,还是存在于具有特殊权限的用户空间中?

答案1

内核空间的内存布局是记录在内核中,至少对于 x86_64。在许多架构上,这包括直接物理映射,具有固定偏移量,该偏移量在一个内核实例的生命周期内不会变化。由于内核代码在 CPU 上运行,使用 MMU(在配备 MMU 的架构上),运行代码引用的所有地址(对于变量指针、堆栈等)都是 MMU 可以理解的地址,IE虚拟地址,通常分配在直接物理映射之外。

默认情况下,设备驱动程序中的变量映射到内核空间。设备驱动程序还可以通过多种方式从用户空间提供数据 - sysfsprocfs、 映射到用户空间虚拟DSO...

相关内容