计算机基本硬件结构: CPU+内存+设备 操作系统中管理内存的方法: 程序重定位; 分段; 分页; 虚拟内存; 按需分页虚拟内存; 实现高度依赖于硬件: 必须知道内存架构 MMU(内存管理单元):硬件组件负责处理CPU的内存访问请求;
物理地址空间:主存+磁盘 逻辑地址空间:一维线性空间
CPU获取物理地址: 1、ALU部件发出请求 2、MMU查找逻辑地址映射表,如果没有则会去内存中的Map中找 3、CPU向主存发出请求 4、主存通过总线将指令内容发给CPU
操作系统需要在四步之前建立好映射;
程序访问的地址空间的约束:
内存碎片问题 内碎片、外碎片: 内碎片是指已经分配出去的地址空间大于实际需要的地址空间; 外碎片是指未分配出去的地址空间,但是由于太小而无法分配出去 分区的动态分配: 一、第一适配 简单实现: 需求: 1、按地址排序的空闲块列表; 2、分配需要寻找一个合适的分区; 3、重分配需要检查,看是否自由分区能合并相邻的空闲分区; 优势: 1、简单 2、易于产生更大的空闲块,向着地址空间的结尾 劣势: 1、外部碎片 2、不确定性 二、最佳适配 简单实现: 基本原理: 1、为了避免分割大空闲块 2、为了最小化外部碎片产生的尺寸 需求: 1、按照尺寸排列的空闲块列表 2、分配需要寻找一个合适的分区 3、重分配需要搜索以及合并于相邻的空闲分区 优势: 1、当大部分分配是小尺寸时非常有效 2、比较简单 劣势: 1、外部碎片 2、重分配慢 3、易产生很多没用的微小碎片 三、最差适配 简单实现: 为了避免有太多微小的碎片 需求: 1、按尺排列的空闲块列表 2、分配很快 3、重分配需要合并于相邻的空闲分区,然后调整空闲块列表 优势: 1、假如分配是中等尺寸效果最好 劣势: 1、重分配慢 2、外部碎片 3、易于破碎大的空闲块以至于大分区无法被分配
重置程序以合并孔洞 要求所有程序是动态可重置的