深入浅出计算机组成原理学习笔记:理解内存(上)-虚拟内存和内存保护是什么?(第40讲)
一、简单页表 1、页表的概念 想要把虚拟内存地址,映射到物理内存地址,最直观的办法,就是来建一张映射表。这个映射表,能够实现虚拟内存里面的页,到物理内存里面的页的一一映射。 这个映射表,在计算机里面,就叫作 页表 (PageTable)。 页表这个地址转换的办法,会把一个内存地址分成 页号(Directory)和 偏移量(Offset)两个部分。这么说太理论了,我以一个32位的内存地址为例,帮你理解这个概念。 1、其实,前面的高位,就是内存地址的页号。后面的低位,就是内存地址里面的偏移量。 2、做地址转换的页表,只需要保留虚拟内存地址的页号和物理内存地址的页号之间的映射关系就可以了。 3、同一个页里面的内存,在物理层面是连续的。以一个页的大小是4K比特(4KiB)为例,我们需要20位的高位,12位的低位。 2、内存地址转换,的三个步骤: 总结一下,对于一个内存地址转换,其实就是这样三个步骤: 1. 把虚拟内存地址,切分成页号和偏移量的组合; 2. 从页表里面,查询出虚拟页号,对应的物理页号; 3. 直接拿物理页号,加上前面的偏移量,就得到了物理内存地址。 3、一个页表需要多大的空间 不知道你算出的数字是多少?32位的内存地址空间,页表一共需要记录2^20个到物理页号的映射关系。这个存储关系,就好比一个2^20大小的数组。 一个页号是完整的32位的4字节(Byte)