文档介绍:第四章存储器管理(Memory Management)
教学目的:
存储器是计算机系统的重要组成部分,虽然内存容量在不断扩大,但内存仍是宝贵资源,如何提高主存储器利用率,并扩充大主存,对主存信息实现有效保护是存储器管理主要任务,也是各种不同存储管理方法的目标。
2004年春季
1
计算机操作系统
教学要求:
熟悉存储管理目的和功能,掌握地址重定位的概念。
熟悉单一连续分配、固定分区分配、动态分区分配实现原理;掌握可变式分区分配的数据结构和分配回收算法,掌握动态重定位分区分配实现原理和分配算法。
熟悉覆盖与交换的概念。
熟练掌握分页存储管理原理,熟练掌握基本的地址变换机构和具有快表的地址变换机构,了解两级页表机制。
掌握分段存储管理原理和分段地址变换机构,掌握分页和分段比较,熟悉分页和分段的共享,掌握段页式存储管理原理和地址变换机构。
2004年春季
2
计算机操作系统
(一) 存储管理概述
(1)存储管理目的和功能:
1。主存储器的分配和回收
内存分配的主要任务是为每一道程序分配内存空间,使它们“各得其所”。
2。提高主存储器的利用率,减少不可用的存储空间(称为“零头),允许多道程序动态共享主存。
3。存储保护
内存保护的任务是确保每道程序都在自己的内存空间运行,互不干扰。
4。内存“扩充”
内存扩充的任务是从逻辑上来扩充内存容量,使用户认为系统所拥有的内存空间远比其实际的内存空间(硬件RAM)大的多。
2004年春季
3
计算机操作系统
(2)地址重定位
1。名空间、地址空间和存储空间
在源程序中,是通过符号名来访问子程序和数据的,我们把程序中符号名的集合称为“名空间”。汇编语言源程序经过汇编,或者高级语言源程序经过编译,得到的目标程序是以“0”作为参考地址的模块。然后多个目标模块由连接程序连接成一个具有统一地址的装配模块,以便最后装入内存中执行。我们把目标模块中的地址称为相对地址(或称为“逻辑地址”),而把相对地址的集合称为“相对地址空间”或简称为“地址空间”。
装配模块虽然具有统一的地址空间,但是仍是以“0”作为参考地址,即是浮动的。要把它装入内存执行,就要确定装入内存的实际物理地址,并修改程序中与地址有关的代码,这一过程称为地址重定位。
2004年春季
4
计算机操作系统
地址重定位
地址空间的程序和数据经过地址重定位处理后,就变成了可由CPU直接执行的绝对地址程序。我们把这一地址集合称为“绝对地址空间”或“存储空间”。程序的名字空间、地址空间和存储空间之间的关系如图所示:
汇编/编译地址重定位
连接装入
名字空间地址空间存储空间
(相对地址/逻辑地址空间)(绝对地址/物理地址空间)
符号
源程序
相对目标程序(装配模块)
绝对目标程序
2004年春季
5
计算机操作系统
地址重定位
2。地址重定位
地址重定位完成把相对地址转换成内存中的绝对地址,这个过程称为地址映射(map)。按照重定位的时机,可分为静态重定位和动态重定位。
静态重定位
静态重定位是在程序执行之前进行重定位。它根据装配模块将要装入的内存起始地址,直接修改装配模块中的有关使用地址的指令。
在图中以“0”作为参考地址的装配模块,要装入以1000为起始地址的存储空间。显然在装入程序之前,程序必须做一些修改才能正确运行。
2004年春季
6
计算机操作系统
地址重定位
0: 10000:
100: LOAD 1,2500 10100: LOAD 1,12500
2500: 365 12500: 365
2600: 12600:
程序的地址空间内存的地址空间
例如:LOAD 1,2500 这条指令是把相对地址为2500的存储单元的内容365装入1号累加器。而这时内容为365的存储单元的实际物理地址为12500(起始地址10000+相对地址2500),所以LOAD 1,2500 这条指令中的直接地址码要作相应的修改,即改为
LOAD 1,12500。
2004年春季
7
计算机操作系统
地址重定位
在程序中需要修改的位置称为重定位项。程序装入内存中的起始地址称为重定位因子。为了支持静态重定位,连接程序在生成统一地址空间和装配模块时,还应产生一个重定位项表。所以操作系统的装入程序要把装入模块和重定位项表一起装入内存。由装配模块的实际装入起始地址得到重定位因子,然后取重定位项,加上重定位因子得到欲修改位置的实际地址,最后对实际地址中的内容再加上重定位因子,从而完成指令代码的修改。当完成重定位后,就可以启动程序执行。
静态重定位虽然有无须硬件支持的优点,但是也存在明显的缺点:一是程序重定位以后就不能在内存中移动;二是要求程序的存储空间是连