虚拟内存
虚拟内存被操作系统以虚拟页为单位分割成块,放在磁盘中
说到这里就有一个问题,就是虚拟内存有多大,总不能是整个磁盘都能被当作虚拟内存吧
物理内存被分割成物理页(PP),也叫做page frame
VP被分为是三个部分,未被分配的,被分配但是没有缓存的,分配了的但是缓存了
虚拟页在磁盘上,物理页在DRAM中,也就是内存中
页表存放在物理内存中
操作系统需要查询某一个虚拟页是否被缓存在DRAM中是,依靠的是页表
如果缓存了,那么就看页表上的地址,对应的就是物理内存中的位置
如果没有被缓存,还是看页表的地址,但是对应的就是虚拟内存中的位置
页表是一个列表,每一个元素叫做PTE(page table entry)
一个pte有两部分构成,一个类型为bool的缓存,一个是地址位
确定了虚拟地址的大小和页大小之后,就能确定翻译所需要的pte数量
页命中和缺页处理
页命中的时候,自然而然就直接使用pte中的地址,和操作系统的页大小,构造出需要的地址区间
缺页时候的处理,就是确定好缺失的页,找一个替死鬼(牺牲页),把替死鬼从物理内存中搬离出去,然后将需要的页搬进来,就能找到了
如果需要的页只需要这一次,之后都不需要访问了,那为什么不直接从硬盘中访问,不找牺牲页来回搬运
缺页的处理被称为按需内存调度
虚拟内存机制在操作系统中的应用
- 内存保护
- 内存共享
- 加载文件