【存储器管理功能】
内存管理即对存储器进行管理,主要完成以下任务:
- 内存分配:为每道程序分配内存空间,以提高存储器的利用率,根据分配方式分为:静态分配、动态分配
- 内存保护:确保每道用户程序只在自己的内存空间中运行,通过界限寄存器来存放正在执行进程的内存上下界,在程序运行时,对每条指令的访问地址进行越界检查
- 地址映射:实现进程的逻辑地址到内存物理地址的映射,在程序编译时形成的目标程序地址是逻辑地址,都是从 0 开始,而真正调入内存某个空间存放的地址是物理地址
- 内存扩充:用虚拟存储技术来从逻辑上扩充内存容量,以解决内存容量不足的问题,利用内存扩充机制,来实现请求调入功能与页面置换功能
【存储器的层次结构】
层次结构
对于通用计算机,存储层次至少应具有三层:CPU 寄存器、主存、辅存
根据具体的功能,可细分为:寄存器、高速缓存、主存储器、磁盘缓存、固定磁盘、可移动存储介质
在存储层次中,层次越高,存储介质的访问速度就越快,价格也就越昂贵,相对所配置的存储容量也就越小
主存储器
主存储器又称内存、主存、可执行存储器,是计算机系统中的主要部件,用于保存进程运行时的程序和数据
通常,处理机都是从主存储器中取得指令和数据,并将所取得的指令放入指令寄存器中,将数据放入数据寄存器中,反之,也可将寄存器中的内容放入主存
由于主存访问速度远低于 CPU 执行指令的速度,为缓和这一矛盾,在及计算机系统中引入了寄存器与高速缓存
寄存器
寄存器与处理机具有相同的速度,因此对寄存器的访问速度是最快的,完全能与 CPU 协调工作,但价格十分昂贵,因此容量并不是很大
在当前的计算机中,寄存器的数目有数十至上百个,字长一般是 32 位或 64 位
高速缓存
高速缓存是介于寄存器与存储器之间的存储器,主要用于备份主存中常用的数据,以减少处理机对主存的访问次数,从而大幅度提高程序执行速度
高速缓存的容量远大于寄存器,只比主存小二到三个数量级左右,访问速度快于主存
由于高速缓存的速度越高价格越贵,因此在计算机中设置了二级或多级告诉缓存,紧靠内存的一级高速缓存速度最高,容量最小,最低级的高速缓存容量速度最慢,容量最大
磁盘缓存
由于目前磁盘的 I/O 速度远低于对主存的访问速度,为缓和两者在速度上的不匹配,因此设置了磁盘缓存,主要用于暂时存放频繁使用的一部分磁盘数据与信息,以减少访问磁盘的次数
但磁盘缓存与高速缓存不同,其本身并不是一种实际存在的存储器,而是利用主存中的部分空间暂时存放从磁盘中读写的信息
【存储方式】
连续分配存储方式
连续分配存储方式是最早出现的一种存储器分配方式,曾被广泛应用于上世纪 60~80 年代的 OS 中,该分配方式为一个用户分配一个连续的内存空间,即程序中代码或数据的逻辑地址相邻,体现在内存空间分配时物理地址的相邻
连续分配方式根据发展,可分为四类:
- 单一连续分配:将内存分为用户区和系统区,同一时刻下只允许一个程序在用户区运行
- 固定分区分配:将整个用户空间划分为若干固定大小的区域,在每个区域中只装入一道作业
- 动态分区分配:根据进程的实际需要,动态地为之分配内存空间
- 动态可重定位分区分配:在动态分区分配的基础上,加了紧凑功能,且设置重定位寄存器,在程序执行期间,随着对每条指令或数据的访问自动执行重定位
离散分配存储方式
连续分配存储方式会形成许多碎片,虽然可通过紧凑的方法将许多碎片拼接成可用的大块空间,但须付出很大的开销
如果允许将一个进程分散地装入到许多不相邻的分区中,便可充分地利用内存空间,无须再进行紧凑操作
基于上述思想,产生了离散分配存储方式,根据离散分配存储方式在分配地址空间的基本单位的不太,可分为三类:
- 分页存储管理:将用户程序的地址分为若干固定大小的区域(页),再将内存空间划分为同样大小的若干区域,从而将用户程序的任一页放入任一块中
- 分段存储管理:将用户程序的地址空间划分为若干大小不同的段,每段定义成一组相对完整的信息。在分配时,以段为单位,这些段在内存中可以不相邻
- 段页式存储管理:分页与分段两种存储方式相结合的产物