操作系统存储管理-连续内存管理

操作系统存储管理

  • 内存最小访问单位字节
  • 总线32位,需要进行对齐

1. 内存层次

操作系统存储管理-连续内存管理


2. 操作系统采取的内存管理方式

  • 重定位
  • 分段
  • 分页(最小单位)
    -***

3.地址空间

  • 物理地址(32位 0~4G-1)

  • 逻辑地址-在CPU运行的进程的地址


4.逻辑地址生成时机

  1. 编译时 假设起始地址已知
    如果起始地址未知,必须重新编译(类似于功能机 ????
  2. 加载时: 如果编译时起始位置位置,编译器需生成可重定位的地址
    加载时,生成绝对地址
    通过修改可执行文件的可重定位表来生成绝对地址\
  3. 执行时(虚拟存储空间使用): 执行时代码可移动
    需要地址转换(映射)硬件支持

5.连续内存分配

连续内存分配:指给进程分配指定大小的连续的物理内存空间


外部碎片:分配单元之间无法利用的未使用的内存

内部碎片:分配单元内部未被使用的内存
动态分区分配:程序加载执行,分配一个进程指定大小可变的分区


操作系统要维护的数据结构
  • 所有进程已分配分区
  • 空闲分区

动态分区策略

  1. 最先匹配:

    • 分配策略:在空闲块中按大地址顺序排序,第一个大于指定大小的分区
      释放分区时,检查是否和邻近的空闲分区合并
    • 优点:在高地址有大块的空闲分区
    • 缺点: 外部碎片
    • 分配大块时较慢(需要往后找,时间开销大)
  2. 最佳匹配:空闲分区按由小到大排序
    找到比它大,并且大的最小的空闲分区
    释放分区时,检查是否和邻近的空闲分区合并

  3. 最差匹配:空闲分区排序由大到小排序
    分配时:选最大的分区

    • 点:中等大小分配较多时,效果较好
      避免出现太多碎片
    • 缺点:释放分区慢
      外部碎片
      容易破坏大的空闲分区

碎片整理

调整已分配分区的位置来减少.避免内存碎片

整理方式
  • 碎片紧凑:移动分配给进程的内存分区,以合并内存碎片
    前提:所有应用程序可动态重定位
  • 分区对换: 抢占并回收处于等待状态进程的分区,搬到外存
    换入换出