浅谈操作系统——页地址映射

117 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

页地址映射

  • 页表
  • 页大小的选择
  • 页地址映射
  • 分页存储管理中的信息保护
  • 块表/联想存储器
  • 两级页表和多级页表

页表

若将应用程序的包含页号和页内地址的逻辑地址转换成内存地址,必须要有一个数据结构用来登记页号和块号的对应关系和有关信息

  • 这样的数据结构就称为页表

  • 系统为每一个进程在内存建立一个页表

  • 页表内容:

    • 页号:登记程序地址空间的页号
    • 块号:登记相应的页所对应的内存块号
    • 其他:登记与存储信息保护有关的信息
  • 页表首地址和长度存储于这个进程的PCB中

  • 占用处理机的当前进程的页表首地址和长度需要放在地址映射机构的页表首址寄存器和页表长度寄存器中。

页大小的选择

  • 太大:浪费
  • 太小:页表过长
  • 页的大小:2^k,K:9-16

分页中的地址映射其实与通常的地址映射的概念是一样的,即把程序地址转换成内存地址,这个转换过程是在程序执行过程中完成的,是动态地址映射。在现代计算机系统中,由系统提供的地址映射硬件来完成地址映射工作。

image.png

image.png

image.png

在执行指令MOVF1,[2500]时,地址转换步骤:

  1. 取出程序地址字2500送虚地址寄存器VR;
  2. 由MMU硬件分离出页号P和页内地址W;
  • 因为页长为1K,所以页内地址占10位(0-9位),页号占6位(10-15位);
  • 硬件取出VR寄存器中的高6位即为页号,低1
    0位即为页内地址。
  1. 计算可得P=000010(2),W=0111000100;