段页式内存管理

what:
  物理内存:

    物理内存时常被认为是内存条的大小,实际并不完全正确。原因是:除了内存条物理大小以外,还和地址总线。例如:一个内存条大小为100G,但是地址总线只有20位,那么地址总线最多能访问的内存大小是1M,那么这台机器的实际物理内存也就是1M。

 

  程序原始直接进内存运行情况:

    

 

    可能会出现各种问题,例如:内存不够用;地址空间相互覆盖等情况。

 

  虚拟内存:

    应对直接内存的内存,出现了虚拟内存的技术。

    核心思想:确保每个程序拥有自己的地址空间,地址空间被分成多个块,每一块都有连续的地址空间;同时物理空间也分成多个块,块大小和虚拟地址空间的块大小一致。操作系统会自动将虚拟地址空间映射到物理地址空间。程序所关注的只是虚拟内存,请求的也是虚拟内存,其实真正使用的是物理内存。

 

     

  虚拟内存和物理内存的“页式”应对法(页式管理):

    虚拟内存如何映射到实际的物理内存,是由MMU来完成,具体的工作方式如下图:

    

 

    为了加快查找速度,采用了:一个小型的硬件设备(缓存),叫快表(TLB)。MMU先从TLB中查。这个TLB能提效率的主要理论依据是“局部性原理”(程序在执行过程中的一个较短时间,所执行的指令地址和要访问的数据通常都局限在一块区域内,这里可分为时间局部性和空间局部性)

  朴素页表管理,会有内存使用过大的情况。

 

  多级页表管理:

    具体如下图:

    

 

    以一个32位虚拟地址的二级页表为例,将32位虚拟地址划分为10位的PT1域,10位的PT2域,以及12位的offset域,当一个虚拟地址被送入MMU时,MMU首先提取PT1域并把其值作为访问第一级页表的索引,之后提取PT2域把把其值作为访问第二级页表的索引,之后再根据offset找到对应的页框号。

    32位的虚拟地址空间下:每个页面4KB,且每条页表项占4B:

      一级页表:进程需要1M个页表项(4GB / 4KB = 1M, 2^20个页表项),即页表(每个进程都有一个页表)占用4MB(1M * 4B = 4MB)的内存空间。

      二级页表:一级页表映射4MB(2^22)、二级页表映射4KB,则需要1K个一级页表项(4GB / 4MB = 1K, 2^10个一级页表项)、每个一级页表项对应1K个二级页表项(4MB / 4KB = 1K),这样页表占用4.004MB(1K * 4B + 1K * 1K * 4B = 4.004MB)的内存空间。

 

    节省的原因是:局部性原理。如果只有20%的一级页表项被用到了,那么页表占用的内存空间就只有0.804MB(1K*4B+0.2*1K*1K*4B=0.804MB),对比单级页表的4M是不是一个巨大的节约? 

  

  段式管理:

    页式管理偏向操作系统,底层的管理。对程序人员并不是十分友好。

    一个实际的程序往往是由若干段组成的,例如一个主程序段、若干子程序段、若干数据段和工作区段组成。例如下面:

    

 

    分段式存储管理是:以段为单位进行内存分配,为此提供逻辑地址的形式。地址结构确定后 ,一个作业中允许的最多 段数及每段最大长度
也就确定了。例如PDP-11/45的段址结构为:段号3位,段内地址(单元号)13位,也就是说一个作业最多8段,每段最长可达8K字节。

 

     具体的管理方式如下:

    

 

    问题:每段的大小完全不固定,每段必须占据内存的连续区域(需要一个可容纳该段的空闲区,一部分用来装入该段信息,另一部分仍为空闲区),操作系统直接使用起来不方便。

 

  段页式管理:    

    为了编制程序(各模块可以独立编程),而且具有逻辑上清晰的优点,和内存管理的便捷性。将段式管理和页式管理结合起来。

    核心思想:段页式存储管理要点是,用户作业仍采用分段结构,各模块可以独立编程。但操作系统在分配内存空间时,不是把一个段分配在一个连续的内存区域,而是把每段再分成等长的若干页,将内存分成和页大小相等的若干块,然后按页存放在若干可能不连续的内存块中。

    如图:

    

 

 

    具体的地址转换逻辑:

      

 

     红框为“指令中的地址相关信息”。

    作业指令执行时,由指令的逻辑地址中的段号(图中为第i段)查该作业段表,获得作业该段的页表首址,再由指令逻辑地址中的页号查该页表,获得该页对应的内存块号(如图所示,上述过程也可能从快表中查到对应的块号),最后,将块号和指令中逻辑地址的单元号拼成绝对地址,该地址就是要访问的内存的绝对地址。这个绝对地址如果是在该段的存储区域内,则可访问;否则,产生一个地址越界中断。

 

posted @ 2022-02-10 23:30  修心而结网  阅读(260)  评论(0编辑  收藏  举报