1
假设我的内核中缓冲区的地址是0xB0E4。所有其他系统在同一地址中是否也有内核缓冲区?所有内核缓冲区在所有系统中具有相同的地址?
假设我的内核中缓冲区的地址是0xB0E4。所有其他系统在同一地址中是否也有内核缓冲区?所有内核缓冲区在所有系统中具有相同的地址?
绝对不是。
一个不同的内核甚至可能根本就没有缓冲区,更不用说在同一个地址。
如果将自己限制为完全相同的内核二进制文件,则任何动态创建的缓冲区都可能处于从引导到引导的不同地址。
如果缓冲区是静态的,那么当内核链接时定义偏移量。因此,相同的内核二进制文件将使缓冲区处于相同的偏移量。如果内核不可重定位,那么地址将是相同的。可重新定位的内核仍然可以从引导更改为引导,尽管内核启动的偏移量是相同的。
模块在加载时运行时链接,因此模块中的静态缓冲区将具有不同的地址,具体取决于分配哪个内存来保存它。
你可能在同一地址找到的是内存映射IO区域。在许多SoC系统中,这些系统都是固定的给定设备地址。