分页存储管理方式

离散分配:允许将一个进程分散地分配到许多不相邻接的分区中,高效利用分区空间,不必再进行紧凑的方式。

离散分配的三种方式
  • 分页存储管理方式:将用户程序的地址空间按“页”或“块”进行分割(固定大小,如1kB),同样地,将内存空间也按“页”或“块”进行划分,这样便可以分散地将用户程序的任一页放入内存空间中
  • 分段存储管理方式:将用户程序的地址空间分为若干个大小不同的段,每段都有一组相对完整的信息。
  • 段页式存储管理方式:以上两种方式的结合,目前应用广泛

分页存储管理方式

1. 页面和物理块

  • 页面:进程逻辑地址分为若干个,并给予编号(0,1)。内存物理地址分为若干个,同样也有编号(0#,1#)。一个物理块可以装入若干个逻辑页。
    • 页内碎片:由于最后一页经常填不满一个块所产生的不可利用的空间。
  • 页面大小:
    • 太小:空间利用率高,但是会有很多页面,导致页表过长,页面换入换出频繁,占用大量内存。
    • 太大:空间利用率低,减少页面,缩短页表,提高换入换出速度,但是会增加页内碎片。
    • 大小的选择:大小应该是2的幂,通常为 2KB ~ 8 KB

2. 地址结构
如下

3. 页表

  • 解释:系统为进程创建一张页面映射表,可以将页号对应到物理块。

地址变换机构

  • 基本任务:完成逻辑地址到物理地址的转换。
    • 因为页内地址和物理块内的地址是一一对应的,所以实际上是将页转化为物理块号。借助于页表
  • 页表寄存器
    • 页表始址: 页表在内存中的起始位置
    • 页表长度: 页表的长度
  • 变换过程:
    • 先将逻辑地址转化为页号 p 和页内地址 d。页号用来检索页表。
    • 如果 p 大于 页表长度,则发生越界中断
    • 否则得到物理块号 = 页表始址 + 页表长度 × 页号
    • 将物理块号放入物理地址寄存器,再将页内地址送入物理地址寄存器
    • 逻辑地址到物理地址的变换结束

基本地址变换机构

  • 具有快表的地址变换机构
    • 出现原因:基本地址变换机构是处理机的速度降低了 1/2(存取一个数据时要访问两次内存)
    • 快表:特殊的高速缓存寄存器,又叫“联想寄存器”
    • 变换过程
      • 先将页号p送入告诉缓存寄存器,如果缓存器中有与 p p 匹配的页号,则表示p的物理块号在快表中,直接得到物理快号。
      • 如果没有匹配的页号,则去内存中寻找页表。找到后将此页表号放入快表中。(需要找一个老的页号换掉)
      • 将物理块号放入物理寄存器中。
        具有快表的地址寄存器

访问内存的有效时间

  • 有效访问时间( E A T E f f e c t i v e A c c e s s T i m e EAT, Effective Access Time ): 进程发出指定逻辑地址的请求,经过地址变换,到内存中获得实际物理地址单元的数据的时间。

假设一次访问内存的时间为 t, 命中率为a, 查找快表的时间为 lambda

  • 基本的地址变换结构中的
    E A T = t + t = 2 t EAT = t + t = 2t
  • 具有快表的地址变换结构中
    E A T = a × λ + ( t + λ ) ( 1 a ) + t = 2 t + λ t × a EAT = a × \lambda + (t + \lambda )(1 -a ) + t = 2t + \lambda - t × a

两级页表和多级页表

  • 出现目的:解决页表占用内存太大的问题

  • 方式

    • 采用离散分配方式(多级页表)。
    • 当需要某个页表时,再请求调入该页表。
  • 两级页表

    • 外层页表:其页表项记录页表页面(页表)所在的物理块
    • 外层页内地址:页表的地址,最大地址在数值上表示一个外层页表可以记录的最大页表数
  • 多级页表

反置页表

  • 反置页表:为每一个物理块设置一个页表项,并将他们按物理块的编号排序

猜你喜欢

转载自blog.csdn.net/innocent_jia/article/details/88926027
今日推荐