实现地址转换的硬件机构

一、基本地址变换机构

1.硬件:

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

2.执行过程:

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

3.具体实现:

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

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

1.相关概念

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

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

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

2.地址变换

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

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

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

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

3.局部性原理

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

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

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

三、两级页表

1.目的

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

2.原理

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

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

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

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

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

3.地址变换

4.注意事项

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

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

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

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

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

相关推荐
atomicmaker11 小时前
经典同步问题
操作系统·pv·同步问题
iCxhust13 小时前
Proteus例程导入方法
操作系统·proteus·课程设计·微机原理·8086最小系统·8088单板机
空荡forevere14 小时前
Linux文件系统(三)
linux·运维·系统架构·操作系统
atomicmaker21 小时前
处理器管理
操作系统·进程·同步与互斥·cpu调度·处理器管理
kunge20132 天前
1. Tmux 使用指南(入门篇)
后端·架构·操作系统
iCxhust3 天前
AD0808调试笔记
笔记·单片机·嵌入式硬件·操作系统·微机原理·8088单板机
fakerth5 天前
【OpenHarmony】startup_init 模块
操作系统·openharmony
大熊猫侯佩6 天前
升级到 macOS26.5 后看视频会自动息屏的解决
macos·操作系统
sulikey7 天前
个人Linux操作系统学习笔记2 - gcc与库的理解
linux·笔记·学习·操作系统·gcc·
手可摘星辰的少年8 天前
Ext2文件系统核心结构详解:超级块、位图、Inode与多级间接块
操作系统