第四章 存储器管理
第0节 存储管理概述 一、存储器的层次结构
1、在现代计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。但是,在现有技术条件下,任何一种存储装置,都无法从速度、容量、是否需要电源维持等多方面,同时满足用户的需求。实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。
2、各种存储器
? 寄存器、高速缓存Cache:少量的、非常快速、昂贵、需要电源维持、CPU可直接访问;
? 内存RAM:若干(千)兆字节、中等速度、中等价格、需要电源维持、CPU可直接访问;
? 磁盘高速缓存:存在于主存中;
? 磁盘:数千兆或数万兆字节、低速、价廉、不需要电源维持、 CPU不可直接访问;
由操作系统协调这些存储器的使用。
二、存储管理的目的
1、尽可能地方便用户;提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。(注意cpu和主存储器,这两类资源管理的区别)
2、存储管理的主要功能: ? 地址重定位
? 主存空间的分配与回收 ? 主存空间的保护和共享 ? 主存空间的扩充 三、逻辑地址与物理地址
1、逻辑地址(相对地址,虚地址):用户源程序经过编译/汇编、链接后,程序内每条指令、每个数据等信息,都会生成自己的地址。
?
一个用户程序的所有逻辑地址组成这个程序的逻辑地址空间(也称
地址空间)。这个空间是以0为基址、线性或多维编址的。
2、物理地址(绝对地址,实地址):是一个实际内存单元(字节)的地址。
?
计算机内所有内存单元的物理地址组成系统的物理地址空间,它是
从0开始的、是一维的;
?
将用户程序被装进内存,一个程序所占有的所有内存单元的物理地
址组成该程序的物理地址空间(也称存储空间)。 四、地址映射(变换、重定位)
当程序被装进内存时,通常每个信息的逻辑地址和它的物理地址是不一致的,需要把逻辑地址转换为对应的物理地址----地址映射;
地址映射分静态和动态两种方式。 1、静态地址重定位
是程序装入时集中一次进行的地址变换计算。 物理地址 = 重定位的首地址 + 逻辑地址 ? 优点:简单,不需要硬件支持;
? 缺点:一个作业必须占据连续的存储空间;装入内存的作业一般不再移动;不能实现虚拟存储。 2、动态地址重定位:
在程序执行的过程中,每当Cpu访问一个内存地址之前对要访问的地址进行地址变换计算。
? 优点:一个作业可以使用非连续存储空间;能实现虚拟存储;有利于程序段的共享。 ? 缺点:需要硬件支持。 五、存储分配与回收
在程序运行开始时、运行过程中,OS根据一定的存储管理方法,在内存中为程序及其数据找到合适的位置,将它们装入内存; 程序运行结束后,OS收回程序释放的内存资源,并进行适当的整理,以便再分配给其他的程序使用。 六、存储保护
为多道并发程序共享内存提供保障,使在内存中的各道程序“各行其道”,只能访问属于自己的区域(自己的物理地址空间),避免各道程序间相互干扰,特别是当一道程序发生错误时,不致于影响其他程序的运行。通常由硬件完成保护功能,由软件辅助实现。 存储保护可以实现:
? 保护系统程序区不被用户侵犯(有意或无意的);
? 不允许用户程序读写不属于自己地址空间的数据(系统区地址空间、其他用户程序的地址空间)。
存储保护的过程:
每个进程都有自己独立的进程空间。如果一个进程在运行时所产生的要访问的地址在其地址空间之外,称为发生了地址越界。每当程
序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断,由操作系统进行相应处理。 七、存储共享
? 内存共享:多道环境中,两个或多个并发进程共用内存中相同区域。 ? 目的:节省内存空间,提高内存利用率,实现进程通信(数据共享)。 ? 共享内容:
代码共享(要求代码为纯代码); 数据共享。 八、存储“扩充”
为了给大作业提供方便,由OS把内存和外存统一管理起来,实现自动覆盖。当一个大作业在执行时,有一部分逻辑地址空间的内容在内存,另一部分在外存。当要访问的信息不在内存时,由os(而不是程序员安排的I/O指令)自动把它们从外存调入内存。从效果上看,这样的os好象为这个用户作业提供了一个容量比实际内存大的存储器,从而实现了存储“扩充”。扩充后的存储器称为虚拟存储器。 九、存储管理方法 1、连续分配方式
(1) 单一连续存储区管理(单道环境下) (2) 分区式存储管理 2、离散分配方式 (1) 分页式存储管理 (2) 分段式存储管理