1
x1596357 2023-03-09 11:40:44 +08:00
了解下操作系统的虚拟地址
|
4
heiher 2023-03-09 11:57:39 +08:00 via Android
你说有没有可能存在一种地址空间即不叫物理,也不叫虚拟,并且物理内存(RAM)在该空间的映射不是从 0 开始的呢。
|
5
x1596357 2023-03-09 12:15:22 +08:00 1
@wniming 其他的硬件比如访问总线也是需要地址空间的,所以在 64 位的地址空间,在实际 CPU 是 48 bits 中分配给他们。不然就没办法访问他们。看看 https://stackoverflow.com/questions/13668490/getting-address-of-symbol-from-kernels-symbol-table 是不是你想要的。具体我也不清楚。
|
6
BingoXuan 2023-03-09 12:20:49 +08:00 1
是物理地址,只是不同总线影射的物理地址都不一样。要看 cpu 手册,不同 cpu 设计时候分配给不同总线的物理地址不一样。你以为的物理地址不过是内存总线影射的物理地址。
|
7
pipapa 2023-03-09 15:47:43 +08:00
把你的设备树 dump 下来看下,各个设备是怎么映射的就知道了。
|
8
TATQAQTAT 2023-03-09 16:17:47 +08:00
处理器的寻址空间很大,这个寻址空间就是我们所称的物理地址,其中不仅给随机存储器( RAM ,平常所称的内存)分配了一段地址用来访问,还有 ROM ,还有 PCI 设备映射到寻址空间的地址,还有其他一些外设的寄存器。
我认为可能是日常语境下把这个寻址空间叫做内存空间,但这个内存是用来指可以被直接寻址的空间,并不单指 RAM (随机访问存储器)造成的混淆 |