zoukankan      html  css  js  c++  java
  • 物理内存管理

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

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

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

    一、连续内存分配:

      1.匹配策略:

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

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

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

      2.碎片整理:

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

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

    中运行了。

      3.伙伴系统:

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

    二、非连续内存分配:

      1.段式存储管理:

        

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

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

      2.页式存储管理:

        页帧,帧,物理页面。

        页面,页,逻辑页面。

      3.快表:

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

         

      4.多级页表:

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

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

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

      5.页寄存器和反置页表

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

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

      6.段页式存储

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

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

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

       

      

  • 相关阅读:
    Hibernate持久化对象修改id重新保存的办法
    hibernate实现数据实体复制保存
    MySQL 语句中执行优先级——and比or高
    Unity3D研究院之静态自动检查代码缺陷与隐患
    MVC模式在游戏开发的应用
    Unity3D的LightProbe动态光探头用法介绍
    高达渐出现效果Shader
    Unity3D战争迷雾效果
    从3D Studio Max导入物体 Importing Objects From 3D Studio Max
    从maya导入物体 Importing Objects From Maya
  • 原文地址:https://www.cnblogs.com/kkkkkk/p/5517420.html
Copyright © 2011-2022 走看看