虚拟内存页表
与任何缓存一样,虚拟内存系统都需要一种确定虚拟页是否缓存在DRAM中的某个位置的方法。 如果是,还需要确保此虚拟页存储在哪个物理页上。 如果未命中,系统必须确定此虚拟页存储在磁盘上的位置,从物理内存中选择牺牲页,然后将虚拟页从磁盘复制到DRAM中以替换此牺牲页。
这些功能由硬件和软件协作提供,包括操作系统软件、内存管理单元中的地址翻译硬件、将虚拟页映射到物理页的被称为页表的存储在物理存储器中的数据结构等每次地址转换硬件将虚拟地址转换为物理地址时,都会读取页表。 操作系统维护页表的内容,并在磁盘和DRAM之间传输页。
下图显示了页面表的基本组织结构。 页面表是页面表条目PTE )的数组。 虚拟地址空间中的每一页在页表的固定偏移量中都有PTE。 出于目的,假设每个PTE由有效位和n位地址字段组成。 有效位指示虚拟页当前是否已缓存在DRAM中。 如果设置了有效位,则地址字段表示DRAM中相应物理页的开始位置,该物理页中缓存了虚拟页。 如果未设置有效位,则空地址表示未分配虚拟页。 否则,该地址将指向磁盘上虚拟页的开始位置。
上图显示了具有8个虚拟页和4个物理页的系统的页表。 四个虚拟页VP 1、VP 2、VP 4、VP7 )当前缓存在DRAM中。 虽然两个页面VP 0和VP 5 )尚未分配,而剩下的页面VP 3和VP 6 )已经分配,但是当前DRAM缓存是完全关联的,因此任何物理页面都可以包含任何虚拟页面。
页命中
考虑CPU要读取VP 2中包含的虚拟存储器的一个字时会发生什么下图)。 VP 2缓存在DRAM中。 地址翻译硬件以虚拟地址为索引搜索PTE 2,并从内存中读取。 由于设置了有效位,地址翻译硬件知道VP 2已缓存在内存中。 因此,使用指向PP 1高速缓存页面开头的PTE的物理存储器地址构建该字的物理地址。
缺页
虚拟内存的常见说法是,DRAM缓存未命中称为缺页。 下图显示了缺少页面之前的示例页表的状态。 CPU引用VP 3中的字,VP 3未缓存在DRAM中。 地址转换硬件从内存中读取PTE 3,根据有效位推测VP 3未缓存,从而导致不足的异常。 缺页异常调用内核中的缺页异常处理程序,以选择牺牲页,在本例中为存储在PP 3中的VP 4。 如果VP 4发生更改,内核会将其复制回磁盘。 在所有情况下,内核都会修改VP 4的页表项,以反映VP 4不再缓存在主存储器中。
然后,内核将VP 3从磁盘复制到内存中的PP 3,更新PTE 3,然后返回。 异常处理程序返回后,会重新启动导致页面不足的指令,并将导致页面不足的虚拟地址重新发送到地址翻译硬件。 但是,由于VP 3缓存在主存储器中,所以地址翻译硬件现在也可以正常处理页面命中。 下图显示了缺少页面后示例页表的状态。
虚拟内存是20世纪60年代初发明的,发生在CPU-内存差异变大、出现SRAM缓存之前。 因此,虚拟内存系统使用的术语与SRAM缓存不同,尽管许多概念相似。 按照虚拟内存的习惯,块称为页。 在磁盘和内存之间传输页面的活动称为交换或页面调度。 将页面从磁盘更换为DRAM 或导入页面)和从DRAM导入磁盘或导入页面)。 在最后一个时间即发生未命中时)调换页面的策略称为按需页面调度。 也可以采用其他方法。 例如,尝试预测页面不会命中,或者在页面实际被引用之前更改页面。 但是现代所有的系统都使用按需页面调度方式。
快三最准高手教学以虚拟地址为索引搜索PTE 2,并从内存中读取。 由于设置了有效位,地址翻译硬件知道VP 2已缓存在内存中。 因此,使用指向PP 1高速缓存页面开头的PTE的物理存储器地址构建该字的物理地址。
缺页
虚拟内存的常见说法是,DRAM缓存未命中称为缺页。 下图显示了缺少页面之前的示例页表的状态。 CPU引用VP 3中的字,VP 3未缓存在DRAM中。 地址转换硬件从内存中读取PTE 3,根据有效位推测VP 3未缓存,从而导致不足的异常。 缺页异常调用内核中的缺页异常处理程序,以选择牺牲页,在本例中为存储在PP 3中的VP 4。 如果VP 4发生更改,内核会将其复制回磁盘。 在所有情况下,内核都会修改VP 4的页表项,以反映VP 4不再缓存在主存储器中。
然后,内核将VP 3从磁盘复制到内存中的PP 3,更新PTE 3,然后返回。 异常处理程序返回后,会重新启动导致页面不足的指令,并将导致页面不足的虚拟地址重新发送到地址翻译硬件。 但是,由于VP 3缓存在主存储器中,所以地址翻译硬件现在也可以正常处理页面命中。 下图显示了缺少页面后示例页表的状态。
虚拟内存是20世纪60年代初发明的,发生在CPU-内存差异变大、出现SRAM缓存之前。 因此,虚拟内存系统使用的术语与SRAM缓存不同,尽管许多概念相似。 按照虚拟内存的习惯,块称为页。 在磁盘和内存之间传输页面的活动称为交换或页面调度。 将页面从磁盘更换为DRAM 或导入页面)和从DRAM导入磁盘或导入页面)。 在最后一个时间即发生未命中时)调换页面的策略称为按需页面调度。 也可以采用其他方法。 例如,尝试预测页面不会命中,或者在页面实际被引用之前更改页面。 但是现代所有的系统都使用按需页面调度方式。