如果可能的话,您能指出文档或描述内核空间内存布局吗?
当设备驱动程序实例化一个变量时,该变量是否存在于内核空间中,还是存在于具有特殊权限的用户空间中?
答案1
内核空间的内存布局是记录在内核中,至少对于 x86_64。在许多架构上,这包括直接物理映射,具有固定偏移量,该偏移量在一个内核实例的生命周期内不会变化。由于内核代码在 CPU 上运行,使用 MMU(在配备 MMU 的架构上),运行代码引用的所有地址(对于变量指针、堆栈等)都是 MMU 可以理解的地址,IE虚拟地址,通常分配在直接物理映射之外。
默认情况下,设备驱动程序中的变量映射到内核空间。设备驱动程序还可以通过多种方式从用户空间提供数据 - sysfs
、procfs
、 映射到用户空间虚拟DSO...