32位系统通过物理地址扩展可以使用超过 4GiB 的物理内存,怎么做到的呢?
TL;DR
bank-switching
1、你以为的 32 位 CPU 实际可以访问的物理内存不一定真的是 32 位
2、对于用户态进程来说虚拟地址空间仍然只有 2^32 Bytes = 4GiB, 要访问超过 4GiB 的内存需要特殊的内核机制配合(bank-switch)
3、可以简单理解为一台暴露的虚拟地址是 32 位的 36 位(或者更多?)机器
32位系统通过物理地址扩展可以使用超过 4GiB 的物理内存,怎么做到的呢?
TL;DR
bank-switching
1、你以为的 32 位 CPU 实际可以访问的物理内存不一定真的是 32 位
2、对于用户态进程来说虚拟地址空间仍然只有 2^32 Bytes = 4GiB, 要访问超过 4GiB 的内存需要特殊的内核机制配合(bank-switch)
3、可以简单理解为一台暴露的虚拟地址是 32 位的 36 位(或者更多?)机器