[052][x86汇编语言]检测点16.1 通过 段部件 以及 页部件 的 线性地址 转 物理地址 计算过程

学习笔记

《x86汇编语言:从实模式到保护模式》
https://www.jianshu.com/p/d481cb547e9f

检测点16.1

在分页模式下, 某程序运行时,段部件发出一个线性地址0x0C005032访问内存数据。如果该线性地址对应的物理页0x0000A000页表的物理地址是0x00003000,那么,操作系统在此程序开始运行前,是如何安排与该线性地址相关的页目录项和页表项的?

题目解答

[052][x86汇编语言]检测点16.1 通过 段部件 以及 页部件 的 线性地址 转 物理地址 计算过程_第1张图片
检测点16.1 层次化分页结构 线性地址 转换为 物理地址.png

题目解析

  • 按照题目要求,需要填写(1)页目录偏移地址(2)页表偏移地址(3)页表表项
  • CPU的段部件:输出线性地址;
  • CPU的页部件:输出物理地址;
  • 线性地址0x0C005032拆成,高10位中10位以及低12位
  • 如图分别对应:页目录索引页表索引以及页内偏移量
  • 在页目录以及页表中,表项的偏移量 = 索引x4
  • 题目给出了物理地址,物理地址 = 页表表项读出的物理地址 + 页内偏移量,即(3)处的答案可由0x 0000 A000 - 0x32 = 0x 0000 9FCE .

任务加载时发生了什么?

  • 1、任务加载时,操作系统先创建虚拟的段,并根据段地址的高20位(高10位以及中10位)决定要用到哪些页目录表项页表表项
  • 2、然后,操作系统在内存中寻找空闲的页,将原本该写入段中的数据写到一个或者多个页中;
  • 3、最后,操作系统将页的物理地址填写到相应的页表表项中;
  • 4、CPU中的CR3寄存器指向当前页目录的物理地址;

概念复习

  • 层次化分页结构

https://www.jianshu.com/p/a6e6df5866e1

你可能感兴趣的:([052][x86汇编语言]检测点16.1 通过 段部件 以及 页部件 的 线性地址 转 物理地址 计算过程)