1.1内存管理的概念及主要功能
内存管理(Memory Management)就是操作系统对内存的划分和动态分配。
主要功能有:
①内存空间的分配和回收。由系统完成主存储器空间的分配和管理。
②地址转换。把逻辑地址转换为相应的物理地址。
③内存空间的扩充。利用虚拟存储技术或自动覆盖技术扩充内存。
④内存共享。允许多个进程访问内存的同一部分。
⑤存储保护。保证各道作业在各自的存储空间内运行,互不干扰。
1.2程序的链接和装入
1.2.1程序运行必须的三步骤
- 编译。由编译程序将用户源程序编译生成目标模块。
- 链接。将编译后的目标模块及他们所需的库函数链接形成装入模块。
- 装入。将装入模块装入内存实际物理地址空间,并重定位。
1.2.2重定位
在装入时对目标程序中指令和数据地址的修改过程称为重定位。
1.静态重定位
静态重定位就是在程序执行之前进行重定位,根据装入模块将要装入的内存起始地址修改装入模块中有关使用地址的代码。
优点是:无需增加硬件地址转换机构,便于实现程序的静态连接。在早期计算机系统中大多采用这种方案。缺点是:①程序的存储空间只能是连续的一片区域,而且在重定位之后就不能再移动。这不利于内存空间的有效使用。②各个用户进程很难共享内存中的同一程序的副本。
2.动态重定位
动态重定位是在程序执行期间每次访问内存之前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空间中的起始地址,而地址空间中的代码在装入过程中不发生变化。
优点是:①程序占用的内存空间动态可变,不必连续存放在一处。