虚拟内存是什么(虚拟内存怎么清理)( 四 )


2.MMU将PTEA发送到缓存或内存中 。
3.从缓存或内存中找到页表项(PTE),并将页表项(PTE)返回给MMU 。
4.根据PTE,MMU发现该页面不在内存中并且丢失,因此MMU发送一个缺页中断,由缺页异常处理程序处理 。
5.页面缺失异常处理器根据页面替换算法选择牺牲页面 。如果此页面已被修改,它将被写入磁盘 。最后,该牺牲页的页表条目的有效位将被设置为0,并存储在磁盘地址中 。
6.缺页异常处理程序在新页面中调用 。如果虚拟页还没有分配到disk 空,就分配到disk 空,然后将disk空之间的页数据复制到空闲的物理页,PTE的有效位更新为1,物理页号更新 。
引入了将虚拟地址转换成物理地址的过程 。此外,为了加快将虚拟地址转换为物理地址的过程,现代CPU和操作系统进行了以下两项优化:
1.虚拟号码(VPN)和页表项(PTE)之间的映射关系被建立并存储在TLB中 。当MMU根据虚拟地址获取页表项时,首先查询TLB 。在TLB中找到页表条目后,不需要从缓存或内存中获取它 。如果找不到,它将计算页表项地址PTEA,然后从缓存或内存中获取页表项(PTE) 。
2.一些热点的物理地址对应的数据存储在L1缓冲区中 。当MMU根据物理地址获取页表项或代码数据时,首先从L1缓冲区获取,如果找不到,再从内存中获取 。
以上翻译过程通过一级页表进行翻译 。现在操作系统支持多级页表,类似于一级页表,如下图所示:
k页表
上图是K级页表 。页表基址寄存器存储第一级页表的地址,从1到K-1的页表的每一项存储的下一级页表的起始地址,K级页表的每一项存储的物理页号或磁盘地址 。
好了,关于虚拟地址,虚拟内存,虚拟地址空的话题就到此为止 。


推荐阅读