页面变换表中的淘汰机制
虚拟内存是对物理内存的抽象,每个运行的进程对应一个页表,该页表描述了虚拟内存到物理内存的映射关系(每个页号对应一个页帧号)以及与进程运行状态相关的信息,包括虚拟内存编号(页号)、物理内存编号(页帧号)、进程访问的资源是否位于内存中(状态位)、该内存是否被访问过(访问位)、该内存的内容是否被修改过(修改位)。
页面淘汰过程发生在上图中蓝色型号标记的位置,在此之前要判断该页面是否位于内存中,通过页表中的状态位反映,当访问的页面不在内存中时,紧接着判断该页面判定表是否已经装满,如果没有装满,可以直接将新页面直接插入空缺位置,如果页面标准没有装满,则需要进行置换,也就是上图中标识的位置。置换过程包括以下判定过程:
程序的局部性原理是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域。局部性原理又表现为:时间局部性和空间局部性。时间局部性是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。空间局部性是指一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问。 局部性原理百度百科-------局部性原理
- 通过访问位判断该位置的数据是否被访问过,根据程序的局部性原理,应该首先淘汰没有被访问过的位置。
- 通过修改位判断该页面是否被修改过,优选选择没有被修改过的页面,因为该页面中的数据在内存和外存中保持一致,可以避免数据丢失等错误异常。
课后习题:
参考:
- https://www.cnblogs.com/secretmrj/p/16500471.html
- https://developer.aliyun.com/article/636217