为什么需要进行存储管理?
存储管理是操作系统的重要组成部分,它负责管理计算机系统的重要资源主存储器。由于任何程序、数据必须占用主存空间后才能执行,因此存储管理直接影响系统的性能。
主存储空间一般分为两部分:一部分是系统区,存放操作系统常驻内存部分;另一部分是用户区,存放用户的程序和数据等。存储管理主要是对用户区域进行管理,当然也包括对辅存的管理。目的是要尽可能地方便用户使用和提高主存储器的效率。
存储管理的四个核心功能包括:
(1)内存空间的管理
记录每个内存单元的使用情况设置相应的内存分配表,根据不同的内存划分形式可以采用不同的数据结构:
位示图:用一位(bit)表示一个空闲页面(0:空闲,1:占用)。
空闲页面表:包括首页面号和页面个数,连续若干的页面作为一组登记在表中。
空闲块表:空闲块首址和空闲块长度,没有记录的区域即为进程所占用。
空闲块链表:将所有的空闲块链成一个链表。
(2)地址变换(重定位)
用户编程时使用的地址称为逻辑地址。而当程序运行时,它将被装入主存储器地址空间的某些部分,此时程序和数据的实际地址一般不可能同原来的逻辑地址一致,我们把程序在内存中的实际地址称为物理地址。
为了保证程序的正确运行,必须把程序和数据的逻辑地址转换为物理地址,这一工作称为地址转换或重定位。
静态重定位:当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换。一般在装入内存时由重定位装入程序完成。
动态重定位:在程序运行过程中要访问数据时再进行地址变换,即在逐条指令执行时完成地址映射。一般为了提高效率,此工作由硬件地址映射机制来完成。
(3)内存扩充
内存的容量是受实际的存储单元限制的,而运行的程序又不受内存大小的限制,这就需要有效的存储管理技术来实现内存的逻辑扩充,这种扩充不是增加实际的存储单元,而是通过虚拟存储技术、覆盖技术、交换技术等技术来实现的。
1. 覆盖技术
目标是在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。
其原理核心在于:一个程序的几个代码段或数据段,按照时间先后来占用公共的内存空间。将程序的必要部分(常用功能)的代码和数据常驻内存;可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中(覆盖文件),在需要用到时才装入到内存;不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖。(即不同时用的模块可共用一个分区)。
2. 交换技术
将暂时不能执行的程序送到外存中,从而获得空闲内存空间来装入新程序,或读入保存在外存中而目前到达就绪状态的进程。交换单位为整个进程的地址空间。
3. 虚拟存储技术
把内存与外存有机的结合起来使用,从而得到一个容量很大的“内存”,这就是虚拟存储。当进程运行时,先将一部分程序装入内存,另一部分暂时留在外存,当要执行的指令不在内存时,由系统自动完成将它们从外存调入内存工作。
(4)内存共享和保护
1. 内存共享
当多个进程都要调用某子程序时,只把一个装入内存,让两个进程共享该子程序,提高内存的利用率。
2. 内存保护
防止地址越界:每个进程都有自己独立的进程空间,如果一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界。即当程序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断。
防止操作越权:对于允许多个进程共享的存储区域,每个进程都有自己的访问权限。如果一个进程对共享区域的访问违反了权限规定,则发生操作越权。
本节资料

