3.4 存储管理
现代计算机系统中的存储系统通常是多级存储体系,至少有主存(内存)和辅存(外存)两级,有的系统有更多的级数。
主存是由系统实际提供的存储单元组成的一个连续地址空间,处理器可以直接存取。它的存储容量受到实际存储单元的限制。
辅存是指软盘、硬盘、光盘和磁带等一些外部存储部件,常用来存放暂不执行的程序和数据,处理器不能直接访问,需启动I/O设备,才能进行内存、外存交换。
系统中主存的使用一般分系统空间和用户空间两个部分。
把相对地址空间的程序转换成绝对地址空间(物理地址)空间上能够执行的过程称为地址重定位,也称为地址映射或地址映像。地址重定位有两种:静态重定位和动态重定位。
存储管理应该提高存储资源的利用效率,又方便用户使用,存储管理的任务应具有下列功能。
● 分配与回收
● 存储扩充
● 共享与保护
◆实存管理:实存的管理一般有三种分配方式。
● 单一连续分配:一个作业占全部空间,静态分配(不对主存保护,引起冲突)
● 固定分区分配:静态,空间分区
● 可变分区分配:动态分配分区
● 交换:较小的空间运行较大的作业,采用的方法
其中,可变分区分配方法是目前的系统采用得较多的。它将主存空间按用户要求动态地分划成若干个分区。为了消除分配中的外部碎片,系统还需要合并自由区和进行存储拼接或紧凑。
关于实存的存储分配算法主要有4种。
● 最佳适应算法
● 首次适应算法
● 最差适应算法
● 循环首次适应算法
◆虚存管理
虚拟存储(简称虚存)不考虑实际主存的大小和数据存取的实际地址,只考虑相互有关的数据之间的相对位置,其容量由计算机的地址位数决定。
虚拟存储通常涉及存储空间大于计算机系统主存中可利用存储空间时的寻址能力问题。其特点是运行程序访问的地址不是从主存中可以获得的,即运行进程访问的地址与主存可用的地址分离。
运行进程访问的地址称为虚地址,主存中可用的地址称为实地址。一个运行进程可以访问的虚地址范围称为进程的虚地址空间,相应的,可使用的实地址范围称为实地址空间。
虚存的组织方式有3种。
◆分段存储组织
一个作业是由若干个具有逻辑意义的段组成。在分段系统中,允许程序(作业)占据主存中若干分离的分区,每个分区存储一个程序分段。分段系统中的虚地址是一个有序对(段号、段内位移)。系统为每个作业建立一个段表,其内容包括段号与主存起始地址的对应关系、段长和状态。
◆页式存储组织
与段式存储组织相似。主存被划分成若干个定长的页,页式系统中的虚地址是一个有序对(页号、页内位移)。系统为每个进程建立一个页表,其内容包括进程的逻辑页号与物理页号的对应关系、状态等。
◆段页式存储组织
综合了上述两种存储组织的特点。主存被划分成定长的页,段页式系统中虚地址形式是(段号、段内页号、页内位移)。系统为每个进程建立一个段表,再为每个段表建立一个页表。
虚存管理的置换策略有几种算法
● 最优(OPT)算法:选择淘汰不再使用或最远的将来才使用的页。
● 随机(RAND)算法:随机的选择淘汰的页。
● 先进先出(FIFO)算法:选择淘汰主存驻留时间最长的页。
● 最近最少使用(LRU)算法:选择淘汰离当前时刻最近的一段时间使用得最少的页。
虚存管理策略的基础是局部性原理--进程往往不均匀地高度局部化地访问主存。这种局部性表现为时间局部性和空间局部性两种。
根据局部性原理的特性,提出了工作集理论。工作集是指进程频繁访问页面的集合。工作集理论要求,为了使进程能有效的运行,它的页面工作集应驻留在主存中,以防止“颠簸”(又称抖动,即指由于进程频繁的从辅存请求页面而造成的过度的页面调度)现象。