3.7 虚拟存储器
此部分详见操作系统部分
3.7.1 虚拟存储器的基本概念
页式存储系统:一个程序(进程)在逻辑上被分为若千个大小相等的“页面”, “页面”大小与“块”的大小相同。每个页面可以离散地放入不同的主存块中。
逻辑地址:变量、指令等在程序中的相对地址
物理地址:实际在主存中存放的地址
页表:每一个页表项中记录着逻辑页号和与之对应的主存块号,页表位于主存中
3.7.2 逻辑地址访问过程
将逻辑地址拆分为页号+页内地址
根据页号查找页表,找到该页存放的主存块号
将主存块号与页内地址拼接,得到要访问数据的物理地址
访问相应的主存块,依照相应的Cache工作原理访问Cache和主存
将逻辑地址拆分为页号+页内地址
根据页号查找页表,找到该页存放的主存块号
将主存块号与页内地址拼接,得到要访问数据的物理地址
访问相应的主存块,依据相应的工作原理查找Cache和主存,访问内容
3.7.3 快表(TLB)
快表是一种相联存储器,读取速度快。快表中存放的是页表的副本,Cache中存放的是主存块的副本。
引入了快表之后的查询过程:
将逻辑地址拆分为页号+页内地址
根据页号查询TLB
TLB命中
直接得到该页面的主存块号
TLB未命中
根据页号查找页表,找到该页存放的主存块号
将该页表项复制到TLB
将主存块号与页内地址拼接,得到要访问数据的物理地址
在Cache中查找相应的主存块
Cache命中
直接从Cache中得到目标数据
Cache未命中
从主存中访问目标数据
将主存块复制到Cache中
与Cache类似,快表存满时,也用类似的算法进行替换。
3.7.4 虚拟存储器
基于局部性原理,仅将将一部分内容从外存调入内存中。
页式虚拟存储器
将程序分页,并仅将部分页面调入内存尽心运行。
通过在页表中增加
有效位:页面是否被调入内存
外存块号:将外存也进行分块,大小与主存块相同,表示该页面存储在外存的位置
访问位:用于页面替换算法
脏位:表明这个页面是否被修改(是否需要将修改写回外存)
段式虚拟存储器
将程序按照不同的功能模块分段(段大小不一),并仅将部分段调入内存运行。
采用段表来存储分段信息,同时主存不再分页。
区别
交换单位
CPU—cache:字或字节
cache—主存:块
虚拟存储(主存—外存)
段页式:页
页式:页
段式:段
透明度
主存—外存
对系统不透明
对应用程序员透明
cache—主存
对系统透明
对应用程序员透明
最后更新于