1、常见的名词(简单解释)

  • 逻辑地址空间:简单的理解为程序进程在运行时系统为其分配的运行内存空间。
  • 页面(页):将用户进程的(逻辑)地址空间划分为固定且大小相等的一个个区域。
  • 页面大小:页面的一个划分区域的大小。
  • 页号:表明页面在划分区域过后的次序。
  • 位移量、偏移量、页内地址:这3个名词是同一个意思,页内地址的长度决定了页面的大小。
  • 页表:系统为每个进程建立的页面映像表,每一个进程都有一个独立的页表。
  • 页表长度:页表的总长度,页表项的个数。
  • 页表项:页表的其中一项
  • 页表项大小:页表的其中一项的存储需要的空间。页表项长度等于计算机位数长度,假设一台计算机是32位的,那么一个页表项则为32b=4B。
  • 物理块、页框:物理块和页框是同一个意思,
  • 页内碎片:最后一页没放满,就会产生页内碎片
  • 页表(基址)寄存器:

2、页表、页表长度

在这里插入图片描述

3、页表项、页表项大小

在这里插入图片描述

4、页内碎片

在这里插入图片描述

5、题目

5.1、页面大小计算方式

  • Intel 80386微处理器一款32位处理器,页表项1M个,求单个页面的页面大小。
    解:页表项1M=220,页内地址:32-20=12位,求得页面大小212*1B=4kB。
  • 具体解释
    页表项1M=2^20^,说明页号使用了20位长度;页内地址则:32-20=12位,每个页内地址对应的是内存中的一个字节。
    这里部分人理解有一个误区,以为这10位页内地址是用来存储数据的,实际上依旧只是一个地址和数据完全没关系。如果把页号+页内地址计算出物理地址,这个地址只是指向了一个字节。
    那么页内地址长度是如何计算出页面大小的?比如一个页面是4kB,每个字节都需要一个地址,那么需要4k个地址,4k个地址需要12位才能完全覆盖。所以反过来推下,如果知道了地址的长度,是不是就能知道这个地址能表示的字节个数。
    

5.2、页表占用主存空间的计算

  • Intel 80386微处理器一款32位处理器,页表项1M个,若页面大小为4KB(212B),求页表占用了多少主存空间?
  • 因为处理器是32位的,所以一个页表项也是32位也就是4B
    页表大小:4B*1M=4MB
    

5.3、通过逻辑地址计算物理页

  • 某操作系统采用分页存储管理方式,下图给出了进程A和进程 B的页表结构。如果物理页的大小为1K字节,那么进程A中逻辑地址为 1024(十进制)用变量存放在( )号物理内存页中。假设进程A的逻辑页4与进程B的逻辑页5要共享物理页4,那么应该在进程A页表的逻辑页4和进程B页表的逻辑页5对应的物理页处分别填( )。
    在这里插入图片描述
  • 因为逻辑地址是从0开始的,0~1023放在第一页中,1024放在逻辑页第二页,题目求的是物理页,通过页表转换第二页对应的是物理页是第3页。
    页表不管共享,所以第二个空,分别填4,4,就这么简单
    

参考文档

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐