实现地址转换的硬件机构

一、基本地址变换机构

1.硬件:

设置一个页表寄存器,存放页表在内存中的起始地址与页表长度。

2.执行过程:

进程未执行时,页表起始地址和长度存放在进程控制块(PCB)中;进程被调度时,OS内核会将其放入页表寄存器中。

3.具体实现:

有两次访问内存-第一次查页表(页号是否合法),第二次-访问目标内存单元(访问物理内存对应的内存单元)

二、具有快表的地址变换机构

1.相关概念

快表-联想寄存器(TLB),一种访问速度比内存快很多的高速缓存,存放最近访问页表项的副本,可加速地址变换。

慢表-相对TLB,内存中的页表

TLB-只存储页表项副本,Cache-会存储各种数据的副本

2.地址变换

由逻辑地址得到页号与页内偏移量,将页号与快表内的页号进行比较。

若命中(快表中有副本),只需一次直接访问内存即可。

若未命中(快表中无副本),需要访问内存中页表,通过基本地址变换得到物理地址,需要两次访存,相当于基本地址变换

要对快表进行更新,存入快表,实现快表与慢表的内容 同步

3.局部性原理

时间局部性-指令被多次访问执行(循环)

空间局部性-多次访某些存储单元(数据在内存中连续存放)

频繁查询某些页表项,引入快表。

三、两级页表

1.目的

解决单级页表必须要连续存放所有页表的问题

2.原理

解决大页表连续存放问题:

将整个页表项拆成多个小页表(二级页表),新生成一个总页表(一级页表)记录小页表的页号与块号

逻辑地址=一级页号+二级页号+页内偏移量

解决整个页表常驻内存问题:

采用虚拟存储技术,需要访问页面时才调入内存。页表项中增加一个标志位,标记是否调入内存。若访问页面不在内存中,产生缺页中断(内中断),将目标页面从外存调入内存。

3.地址变换

4.注意事项

采用多级页表机制,各级页表大小不能超过一个页面。

在没有快表机构下,两级页表的访存次数分析:

第一次访存-访问内存中的页目录表

第二次访存-访问内存中的二级页表

第三次访存-访问目标内存单元

相关推荐
fakerth2 天前
【OpenHarmony】communication_ipc模块
操作系统·openharmony
Coisinier2 天前
RHCE中shell脚本基础(磁盘剩余空间监控,Web 服务状态检查,curl 访问 Web 服务并返回状态)
linux·运维·服务器·前端·nginx·操作系统
小宇子2B3 天前
free 完再 malloc 同样大小,为什么常拿回刚还回去的那块?
操作系统
触底反弹5 天前
拷个 .exe 到新电脑就跑不起来?你缺的不是文件,是对链接的理解
c++·windows·操作系统
杊页5 天前
第一板块:Android 系统基石与运行原理 | 第二篇:Android 编译、打包与安装机制
android·操作系统
壮Sir不壮6 天前
GO语言——GMP调度模型
linux·开发语言·golang·go·操作系统·线程·协程
Surest6 天前
OpenHarmony 技术拆解(二):从 capability 看懂分布式软总线与任务迁移
操作系统
OpenAnolis小助手6 天前
如何利用 AI Agent 实现热补丁的自动化生成
人工智能·安全·ai·操作系统·agent·龙蜥
小宇子2B7 天前
缺页中断不是“出错”,是内核最忙的一条正常路径
操作系统
小宇子2B7 天前
内存不够时,内核怎么把"冷"页踢出去——swap 与页面回收
操作系统