操作系统存储管理-连续内存管理
操作系统存储管理
- 内存最小访问单位字节
- 总线32位,需要进行对齐
1. 内存层次
2. 操作系统采取的内存管理方式
- 重定位
- 分段
- 分页(最小单位)
-***
3.地址空间
物理地址(32位 0~4G-1)
逻辑地址-在CPU运行的进程的地址
4.逻辑地址生成时机
- 编译时 假设起始地址已知
如果起始地址未知,必须重新编译(类似于功能机 ???? - 加载时: 如果编译时起始位置位置,编译器需生成可重定位的地址
加载时,生成绝对地址
通过修改可执行文件的可重定位表来生成绝对地址\ - 执行时(虚拟存储空间使用): 执行时代码可移动
需要地址转换(映射)硬件支持
5.连续内存分配
连续内存分配:指给进程分配指定大小的连续的物理内存空间
外部碎片:分配单元之间无法利用的未使用的内存
内部碎片:分配单元内部未被使用的内存
动态分区分配:程序加载执行,分配一个进程指定大小可变的分区
操作系统要维护的数据结构
- 所有进程已分配分区
- 空闲分区
动态分区策略
-
最先匹配:
- 分配策略:在空闲块中按大地址顺序排序,第一个大于指定大小的分区
释放分区时,检查是否和邻近的空闲分区合并 - 优点:在高地址有大块的空闲分区
- 缺点: 外部碎片
- 分配大块时较慢(需要往后找,时间开销大)
- 分配策略:在空闲块中按大地址顺序排序,第一个大于指定大小的分区
-
最佳匹配:空闲分区按由小到大排序
找到比它大,并且大的最小的空闲分区
释放分区时,检查是否和邻近的空闲分区合并 -
最差匹配:空闲分区排序由大到小排序
分配时:选最大的分区- 点:中等大小分配较多时,效果较好
避免出现太多碎片 - 缺点:释放分区慢
外部碎片
容易破坏大的空闲分区
- 点:中等大小分配较多时,效果较好
碎片整理
调整已分配分区的位置来减少.避免内存碎片
整理方式
- 碎片紧凑:移动分配给进程的内存分区,以合并内存碎片
前提:所有应用程序可动态重定位 - 分区对换: 抢占并回收处于等待状态进程的分区,搬到外存
换入换出