基本地址变换机构

基本地址变换机构:用于实现逻辑地址到物理地址转换的一组硬件机构。

关于页号页表的定义,放个本人的传送门

1.页表寄存器

基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。

1.作用

通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M

进程未执行时,页表的始址和页表长度放在进程控制块(PCB)中,

当进程被调度时,操作系统内核会把它们放到页表寄存器中。

2.逻辑地址转物理地址的过程

  1. 根据逻辑地址计算出页号、页内偏移量
  2. 判断页号是否越界
  3. 查询页表,找到页号对应的页表项,确定页面存放的内存块号
  4. 用内存块号和页内偏移量得到物理地址
  5. 访问目标内存单元

3.计算过程

设页面大小为L,逻辑地址A到物理地址E的变换过程如下:

  1. 计算页号Р和页内偏移量W(如果用十进制数手算,则P=A/L,W=A%L;但是在计算机实际运行时,逻辑地址结构是固定不变的,因此计算机硬件可以更快地得到二进制表示的页号、页内偏移量)
  2. 比较页号P和页表长度M,若P>M,则产生越界中断,否则继续执行。(注意:页号是从0开始的,而页表长度至少是1,因此P=M时也会越界)
  3. 页表中页号P对应的页表项地址=页表起始地址F+页号P*页表项长度,取出该页表项内容b,即为内存块号。
  4. 注意区分页表项长度、页表长度、页面大小的区别。
  5. 页表长度指的是这个页表中总共有几个页表项,即总共有几个页;
  6. 页表项长度指的是每个页表项占多大的存储空间;
  7. 页面大小指的是一个页面占多大的存储空间
  8. 计算 E = b ∗ L + W E= b*L+W E=b∗L+W,用得到的物理地址E去访存。(如果内存块号、页面偏移量是用二进制表示的,那么把二者拼接起来就是最终的物理地址了)

4.例题

若页面大小L为1K字节,页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E。

等价描述:某系统按字节寻址,逻辑地址结构中,页内偏移量占10位,页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E。

在分页存储管理(页式管理)的系统中,只要确定了每个页面的大小,逻辑地址结构就确定了。

因此,页式管理中地址是一维的

即,只要给出一个逻辑地址,系统就可以自动地算出页号、页内偏移量两个部分,并不需要显式地告诉系统这个逻辑地址中,页内偏移量占多少位。

2.对页表项大小的进一步探讨

每个页表项的长度是相同的,页号是"隐含"的。

进程页表通常是装在连续的内存块中的。

结论:

理论上,页表项长度为3B即可表示内存块号的范围,但是,为了方便页表的查询,常常会让一个页表项占更多的字节,使得每个页面恰好可以装得下整数个页表项。

相关推荐
xuanzdhc38 分钟前
Linux 基础IO
linux·运维·服务器
愚润求学43 分钟前
【Linux】网络基础
linux·运维·网络
bantinghy1 小时前
Linux进程单例模式运行
linux·服务器·单例模式
心平愈三千疾2 小时前
通俗理解JVM细节-面试篇
java·jvm·数据库·面试
我不会写代码njdjnssj2 小时前
网络编程 TCP UDP
java·开发语言·jvm
第1缕阳光2 小时前
Java垃圾回收机制和三色标记算法
java·jvm
小和尚同志2 小时前
29.4k!使用 1Panel 来管理你的服务器吧
linux·运维
帽儿山的枪手2 小时前
为什么Linux需要3种NAT地址转换?一探究竟
linux·网络协议·安全
shadon1789 天前
回答 如何通过inode client的SSLVPN登录之后,访问需要通过域名才能打开的服务
linux
AWS官方合作商9 天前
AWS ACM 重磅上线:公有 SSL/TLS 证书现可导出,突破 AWS 边界! (突出新功能的重要性和突破性)
服务器·https·ssl·aws