通过分页,我们将每 4 个字节(字)的虚拟映射到物理映射。但是我们如何访问该映射中的每个字节呢?
By paging we map virtual to physical mapping for each 4bytes(word). But how we access each byte from that mapping?
这可能是我没看懂的很基础的东西。但是我费了很大力气才找到答案,但是没有用。
在字节寻址机器中,通过使用 32 位我们可以访问 4GB 内存(2^32 字节)。然后每个字包含 4 个字节,在虚拟到物理映射中我们有虚拟到物理字映射,其中包括 4 个字节。所以我的问题是,如果我们有 char 变量(char:1byte),我们如何知道哪个字节包含 4 个字节?
虚拟到物理的映射只是把虚拟地址的上半部分(a.k.a.虚拟页号,VPN)变成物理地址的上半部分(a.k.a页框号,PFN , 或物理页码, PPN).
下半部分(a.k.a.offset)保持不变,如果这部分是k位宽,那么它跨越2k字节都共享相同的翻译。
这就是为什么我们说映射发生在 4KiB/2MiB/1GiB 边界处。
如果内存是字节可寻址的,则根据定义,每个字节(至少)由一个唯一地址标识。
因此硬件很容易访问内存中的特定字节。
如上所述,每个地址都在虚拟翻译之下。
这可能是我没看懂的很基础的东西。但是我费了很大力气才找到答案,但是没有用。
在字节寻址机器中,通过使用 32 位我们可以访问 4GB 内存(2^32 字节)。然后每个字包含 4 个字节,在虚拟到物理映射中我们有虚拟到物理字映射,其中包括 4 个字节。所以我的问题是,如果我们有 char 变量(char:1byte),我们如何知道哪个字节包含 4 个字节?
虚拟到物理的映射只是把虚拟地址的上半部分(a.k.a.虚拟页号,VPN)变成物理地址的上半部分(a.k.a页框号,PFN , 或物理页码, PPN).
下半部分(a.k.a.offset)保持不变,如果这部分是k位宽,那么它跨越2k字节都共享相同的翻译。
这就是为什么我们说映射发生在 4KiB/2MiB/1GiB 边界处。
如果内存是字节可寻址的,则根据定义,每个字节(至少)由一个唯一地址标识。
因此硬件很容易访问内存中的特定字节。
如上所述,每个地址都在虚拟翻译之下。