一、存储管理概述
1、存储体系
内存空间,是由存储单元组成的一组连续的地址空间,简称内存空间。内存空间一般分为两部分:一部分是系统区,用以存储操作系统常驻内存部分,用户不能占用这部分空间;另一部分是用户区,分配给用户使用,用于装入并存储用户程序和数据,这部分的信息随时都在发生变化。
2、存储管理的任务
存储管理实质上就是管理供用户使用的那部分空间。
(1) 内存的分配与回收
① 静态分配。程序要求的内存空间是在目标模块连接装入内存时确定分配的,并且在程序运行过程中不允许再申请附加内存空间,即分配工作是在程序运行前一次性完成的。
② 动态分配。程序要求的基本内存空间是在目标模块装入时确定并分配的,但是在程序运行过程中允许申请附加的内存空间,即分配工作可以在程序运行前及运行过程中逐步完成。
(2) 存储共享
是指两个或多个进程共用内存中的相同区域,这样不仅能够使多道程序能够动态的共享内存,提高内存利用率,而且还能共享内存中某个区域的信息。共享的内容包括代码共享和数据共享,特别是代码共享要求代码必须是纯代码。
存储共享的一个目的是通过代码共享节省内存空间,提高内存利用率;另一个目的是通过数据共享实现进程通信。
(3) 存储保护
存储保护的内容包括:保护系统程序区不被用户有意或无意的侵犯;不允许用户程序读写不属于自己地址空间的数据,如系统区地址空间、其他用户程序的地址空间。
3、地址转换
(1) 地址重定位
把逻辑地址转换成绝对地址的工作称为“地址重定位”或“地址转换”,也称“地址映射”。重定位的方式有“静态重定位”和“动态重定位”。
(2) 静态重定位
内存在装入程序时,要把程序中的指令地址和数据地址全部转换成绝对地址。由于地址转换工作是在程序开始前集中完成的,所以在程序执行过程中就无需再进行地址转换工作,这种地址转换方式称为静态重定位。
(3) 动态重定位
内存在装入程序时,不进行地址转换,而是直接把程序装入到分配的内存区域中。在程序执行过程中,每当执行一条指令时都由硬件的地址转换机构将指令中的逻辑地址转换成绝对地址。这种方式的地址转换是在程序执行时动态完成的,所以称为动态地址转换。
二、分区管理方案
1、固定分区
固定分区是指系统先把内存划分成若干个大小固定的分区,一旦划分好,在系统运行期间便不再重新划分。为了满足不同程序的存储需求,各分区的大小可以不同。由于每一分区的大小是固定的,就对可容纳程序的大小有所限制。因此,程序在运行时就必须提供对内存资源的最大申请量。
2、可变分区
可变分区是指系统不预先划分固定分区,而是在装入程序时划分内存分区,使为程序分配的分区的大小正好等于该程序的需求量,且分区的个数是可变的。显然,可