物理内存管理

  物理地址空间:硬件支持的地址空间。

  逻辑地址空间:在CPU运行的进程看到的地址。

  逻辑地址空间>物理地址空间

一、连续内存分配:

  1.匹配策略:

   最先匹配策略:空闲分区列表按地址顺序排序,遇到第一个大于所需空间的空闲分区就分配。

   最佳匹配策略:  空闲分区列表按从小到大排序,遇到第一个大于所需空间的空闲分区就分配(即大于所需空间的空闲分区中 空间最小的一个分区)。

   最差匹配策略:空闲分区列表按从大到小排序,分配第一个空闲分区(即最大的空闲分区)。第一个都小于所需空间的话,则没有空间分配。

  2.碎片整理:

   紧凑:应用程序可动态重定位的时候,就把应用程序的地址合并在一起,这样碎片就整合成一块大的空闲分区。

   分区对换:当内存中有处于等待状态的进程时,其他运行的进程可以抢占该等待状态进程的分区,该等待状态的进程移动到硬盘中等待,运行的进程就可以在内存

中运行了。

  3.伙伴系统:

   空闲块按大小和起始地址组织成二维数组,第一维是按大小区分,第二维是在大小相同的情况下按地址区分。初始状态是一个2的幂次方的空闲块, 由小到大在二维数组中找最小的可用空闲块,如空闲块过大,则对空闲块二等分,直到找到合适的空闲块。即再二等分就小了,不二等分又大了,这样就可以分配了。

二、非连续内存分配:

  1.段式存储管理:

    

    段的大小可能不一样,可以把进程分为代码段,堆栈段,初始化数据段等。

    根据(s,addr)来寻址内存中的相应数据。

  2.页式存储管理:

    页帧,帧,物理页面。

    页面,页,逻辑页面。

  3.快表:

   快表利用缓存机制,在CPU寄存器里缓存近期访问的页表项,减少对内存的访问,从而使物理页帧的查找速度得到提高。

     

  4.多级页表:

   多级页表利用间接引用的方式,将页表分为多级进行访问,从而减少了页表的长度。

     当各级页表都存在时,页表所占的内存容量并不会因为使用多级页表而减少。但是进程的页表一般不是全部占满的,所以会空出一些页表项,减少了页表所占的          内存空间。

    每一级页表项保存着下一级页表的起始地址,然后根据下一级页表项的偏移量得到下一级页表项的地址。这样一级一级的下去,直到找到物理地址。    

  5.页寄存器和反置页表

   正常的页表是 每一逻辑页对应页表中的一项,页寄存器和反置页表则是 每一物理帧对应页表中的一项,这样随着进程的增加,即使逻辑页的数量增加,页表的长

度也不会增加。页表的长度只与物理帧的大小有关,经过计算,占物理内存的容量很小。

  6.段页式存储

   段式存储在内存保护方面有优势,段与段之间基本很少互相访问。

   页式存储在内存利用和优化转移到后备存储方面有优势。

   将两者结合,即段页式存储。先根据段号找到相应的段,再根据页号(一级或多级)找到最终的物理地址。

   

  

原文地址:https://www.cnblogs.com/kkkkkk/p/5517420.html