虚拟内存

虚拟内存被操作系统以虚拟页为单位分割成块,放在磁盘中

说到这里就有一个问题,就是虚拟内存有多大,总不能是整个磁盘都能被当作虚拟内存吧

物理内存被分割成物理页(PP),也叫做page frame

VP被分为是三个部分,未被分配的,被分配但是没有缓存的,分配了的但是缓存了
虚拟页在磁盘上,物理页在DRAM中,也就是内存中

页表存放在物理内存中
操作系统需要查询某一个虚拟页是否被缓存在DRAM中是,依靠的是页表
如果缓存了,那么就看页表上的地址,对应的就是物理内存中的位置
如果没有被缓存,还是看页表的地址,但是对应的就是虚拟内存中的位置
页表是一个列表,每一个元素叫做PTE(page table entry)
一个pte有两部分构成,一个类型为bool的缓存,一个是地址位
确定了虚拟地址的大小和页大小之后,就能确定翻译所需要的pte数量

页命中和缺页处理

页命中的时候,自然而然就直接使用pte中的地址,和操作系统的页大小,构造出需要的地址区间
缺页时候的处理,就是确定好缺失的页,找一个替死鬼(牺牲页),把替死鬼从物理内存中搬离出去,然后将需要的页搬进来,就能找到了

如果需要的页只需要这一次,之后都不需要访问了,那为什么不直接从硬盘中访问,不找牺牲页来回搬运

缺页的处理被称为按需内存调度

虚拟内存机制在操作系统中的应用

地址翻译

高速缓存、物理寻址、TLB加速

多级页表

综合地址翻译分析