(20)--4.1 内存管理概述.pdf
内 存 管 理 概 述 目 录 01 引入 02 基本概念 03 地址重定位 04 总结 引入 存储层次结构 引入 源程序 编译 目标模块 库.链接 程序 装入模块 装入 程序 内存 第一步 第二步 第三步 用户程序的主要处理阶段 引入 Int a;a=5;源程序 逻辑地址空间 mov 200,5 a 0 100 200 编译 连接 物理地址空间 装入 分区 mov 200,5 a 1200 1000 1100 基本概念 Int a;a=5;源程序 mov 200,5 a 0 100 200 编译 连接 逻辑地址空间 装入 分区 mov 200,5 a 1200 1000 1100 物理地址空间(相对地址,虚地址):用户的程序经过汇编或编译后形成的目标代码的地址,由cpu产生。逻 辑 地 址(绝对地址,实地址):内存中存储单元的地址,可直接寻址。物 理 地 址 地址重定位 重定位(地址映射):程序和数据装入内存时,需要对目标程序中的逻辑地址进行修改,这种把逻辑地址转换为内存物理地址的过程叫做重定位。地址重定位 实现地址重定位的关键是要建立逻辑地址物理地址间的对应关系。这种对应关系的实现可以在三个不同阶段发生:编译时期 连接时期 运行时期 地址重定位 1000 1011 1100 3500 内存空间 MOV 3500,5 CALL 1011 printf a MOV 3500,5 CALL 1011 printf a 2500 逻辑地址空间 0 11 100 1.编译时重定位 知道装入到内存的具体位置。逻辑地址=物理地址 地址重定位 MOV 2500,5 a 0 100 2500 1000 1100 3500 MOV 2500,5 a 逻辑地址空间 内存空间 0 3500 3500 1000+2500 物理地址 基地址 相对地址 2.装入时重定位 地址重定位 静态重定位 特点:装入内存时,一次性将该作业中程序的指令地址和数据地址全部转换成绝对地址。缺点:一个程序通常需要占用连续的内存空间,程序装入内存后不能移动。地址重定位 MOV 2500,5 a 0 100 2500 1000 1100 3500 MOV 2500,5 a 逻辑地址空间 内存空间 0 1000 2500 3500 执行该指令时 基址寄存器 3.运行时重定位 地址重定位 特点:装入模块装入后仍为相对地址。只有在程序真正执行到某一步时才对它进行地址转换。由地址变换机构(MMU部件)自动执行。缺点:需要一定特殊硬件的支持,实现较复杂。动态重定位 编译时重定位 Int a;a=5;装入时重定位 Int a;a=5;运行时重定位 Int a;a=5;编译后 100:MOV 3500,5 2500:a 100:MOV 2500,5 2500:a 100:MOV 2500,5 2500:a 加载到内存中 MOV 3500,5 a MOV 3500 5 a MOV 2500 5 a 3500 3500 3500 1100 1100 1100 装入时 1000+2500=3500 运行时 1000+2500=3500 总结 总 结 物理地址(Physical Address)逻辑地址(Logical Address)地址空间(Address Space)、逻辑地址空间 存储空间(storage space)、主存空间、物理地址空间 重定位(Relocation)1.静态重定位(Static Relocation)2.动态重定位(Dynamic Relocation)谢 谢 大 家