1 内存管理概述
1.1 存储器的层次结构
- 目前,计算机系统均采用层次结构的存储系统,以便在容量、速度和价格等因素中取得平衡点,获得较好的性能价格比。
- 计算机系统中的存储器可以分为寄存器、高速缓冲存储器、内存储器、磁盘缓冲存储器、固定磁盘、可移动存储介质等6层。
1.2 存储管理任务
操作系统须占用内存一部分存储空间存放自身的程序、数据、管理信息以及与硬件接口信息等,一般称这部分内存空间为系统区。系统区外的其余内存空间存放用户的程序和数据,称为用户区。存储管理主要是对用户区进行管理,它包括以下4项任务。
(1)内存分配和回收
(2)地址变换
(3)内存保护
(4)内存扩充
1.3 存储管理目标
(1) 内存结构细节对于用户和用户程序要透明。
(2) 提高内存的利用率,解决大程序和小内存之间的矛盾。
(3) 为用户程序完成程序装入。
(4) 解决内存速度与CPU速度不匹配问题。
(5) 实现内存保护和共享。
2 程序的装入和链接
2.1 几个基本概念
- 逻辑地址与逻辑地址空间
用户在程序中使用的与程序段偏移相关的地址称做逻辑地址。
在用汇编语言或高级语言编写的程序中,系统通常用符号名对程序的数据和子程序进行访问。程序中各种符号名集合的空间称作程序名字空间。经汇编或编译程序处理后,源程序中的各种符号名转换成由机器指令和数据组成的目标程序,符号名地址被逻辑地址替换。
目标程序中的逻辑地址集合称作程序逻辑地址空间,又称作程序相对地址空间。
编译时,程序地址空间中的各个逻辑地址空间均以0作为参考地址,其它地址以0为起始地址进行线性编址,故逻辑地址都是连续的。 - 物理地址与物理地址空间
进程在内存空间中的实际存储单元的地址称做物理地址或绝对地址。内存空间是指物理内存中全部存储单元所限定的空间。内存空间是一维线性空间,长度为n的内存空间的编址顺序为0,1,2,┄,n-1。逻辑地址空间的大小由源程序决定,物理地址空间的大小由系统硬件配置决定。
程序的物理地址的总和构成程序的物理地址空间,又称绝对地址空间。
一个程序只有从逻辑地址空间装入到物理地址空间后才能运行。CPU在执行用户程序或系统程序时,直接使用物理地址存取内存空间中的指令和数据。
- 地址重定位
当一个程序的相对地址装入到与其逻辑地址空间不一致的绝对地址空间中时,为了保证程序的正确运行,必须把指令和数据的逻辑地址转换为物理地址,这项工作称为地址重定位。
地址重定位通常有静态地址重定位和动态地址重定位两种方式。
① 静态地址重定位
② 动态地址重定位
2.2 程序的链接
程序的链接指把由汇编或编译后得到的一组目标模块以及它们所需的库函数转配成一个完整的模块。
根据链接时机的不同,程序链接分为三种方式。
(1)静态链接
(2)装入时动态链接
(3)运行时动态链接
2.3 程序的装入
- 程序的装入指给程序的指令和数据分配物理内存空间,也常被称为加载。一个程序要运行必须得装入内存,这需要将指令和数据的逻辑地址转换为物理地址,即需要进行地址变换。
- 根据地址变换发生时机,装入方式分为绝对装入方式、可重定位装入方式和动态运行时装入方式三种。
- 绝对装入方式
- 可重定位装入方式
- 动态运行时装入方式
- 可重定位装入方式虽然可用于多道程序系统,但程序执行期间如果在内存中发生移动,则程序的物理地址都发生改变,须修改全部物理地址,否则程序将无法正确执行。所以,采用可重定位方式把程序装入内存后,程序在内存中一般不再移动。
- 动态运行时装入方式的优点是操作系统可将一个程序离散地存放在内存空间。在程序的整个执行期间,允许程序在内存中改变位置。这种加载方式有利于提高内存利用率&#