您的位置: 网站首页 > 公共课 > 计算机软件技术基础 > 第3章 操作系统 > 【3.2 存储管理】

3.2 存储管理

 

3.2  存储管理

3.2.1 基本功能和相关的概念

1.存储管理的基本功能

(1)内存空间的分配和去分配

(2)地址转换

(3)存储空间保护

(4)内存空间的扩充

2.有关存储管理的概念

(1)绝对地址与相对地址

绝对地址又称物理地址或实地址,是指程序在主存储器中的地址编码。

相对地址又称逻辑地址或虚地址,是指程序本身的地址编码,一般从零地址开始。

(2)存储空间与地址空间

存储空间又称物理地址空间,由绝对地址对应的主存空间组成。

地址空间又称逻辑地址空间,由逻辑地址的集合组成。

(3)重定位

  可执行程序装入内存时,逻辑地址与绝对地址一般是不相符的,必须通过地址转换机构将逻辑地址转换成绝对地址,称为重地位。重定位的方式有静态重定位和动态重定位两种。

  静态重定位是在程序装入时完成的,而动态定位是在程序运行时完成的。

  存储管理的形式很多,致使很多同学感到内容很多又很零碎,因此建议大家在学习这部分内容时,不要把各种方式孤立起来,而应用连贯、发展的眼光来看待,因为各种形式之间是有联系的,一般来说,后者是前者的改进与补充。

3.2.2 实存储管理

  失存储管理方式要求把每一个作业放在主存的一片连续区域中,为了满足多道程序的要求,必须把主存的用户区分成若干个连续分区。根据不同的分区划分方式,可以有以下几种管理形式:

1.     固定分区分配

把主存用户区划分成若干大小不等的分区,按作业的大小选择合适的分区。

问题:作业地址空间不可能与分区大小绝对相等,因而出现了“碎片”,浪费了存储空间。

2. 可变分区分配

根据作业实际需求量对用户区进行动态分割,系统设置一张链表或数组,用来登记当时用户区的空闲块,作为动态分配和回收主存空间的依据。可变分区常用的存储空间分配策略有三种。

(1)首次适应算法:选择所碰到的第一个满足作业存储量要求的块分配给用户。

(2)最佳适应算法:选择满足作业需求块中最小的一块分配给用户。

(3)最差适应算法:在空闲块中选出满足作业要求的最大块分配给用户。

问题:经过多次分配和回收以后,用户区中可能会出现很多零碎的空间,不足以放入一个作业,也称为“碎片”,使新作业无法进入内存。

3.可重定位分区分配

为解决可变分区分配的碎片问题,在适当时候对内存进行“紧缩”,即将内存中的作业移向存储区一端,而将空闲块集中到另一端,构成较大的空闲块以便新的作业进入。

由于紧缩工作是在程序执行过程中进行的,因此要对内存中的程序重新定位,称为动态重定位,它需要借助一些硬件设备来完成。

问题:紧缩过程需要耗费时间,不宜频繁进行。

4. 内存“扩充”技术

在上述分区分配方式下,当内存空间小于作业所需的空间时,作业就无法进入内存运行。在不增加物理内存容量时,一般采用“覆盖”和“交换”技术来“扩充”内存。

(1)覆盖

系统提供用户覆盖机构,它将整个作业分为常驻内存和覆盖两部分,用户只要将最大的子程序作为覆盖区告诉系统,即可运行。

问题:要求用户把作业如何分段和作业的可覆盖情况写成覆盖描述文件,同作业一起交给操作系统。

(2)交换

当内存不够时,系统按一定的策略设法腾空一些内存空间,也即采用强制方法把内存中部分内容暂时放到外存中去。

问题:以整个作业进行内外存交换,代价较大。

3.2.3 虚拟存储管理

虚拟存储管理是通过把内、外存统一起来管理,给用户造成一种仿佛系统内具有巨大内存供用户使用的假象。

虚拟存储管理与实存储管理在理念上的差别是:虚拟存储管理认为作业在内存空间中不一定要求连续存放,其次作业在运行时不必全部都同时放在内存中,可以允许有一部分放在外存中,只要保证当时被执行的那部分在内存即可。

虚拟存储管理把作业的相对地址称为“虚拟地址”,作业的地址空间为“虚拟地址空间”;把分配给该作业的物理地址称为“实在地址”,该存储空间为“实在地址空间”。作业在运行时,只要时时保证作业的实在地址与虚拟地址的对应关系,而并不在乎虚拟地址空间与实在地址空间大小是否相等,实际上实在地址空间远比虚拟地址地址空间小。虚拟存储器的容量取决于内存与外存的容量。一个虚拟存储器的最大容量由计算机的地址结构确定。

1. 分页存储管理

(1)基本思路

·页  把作业的逻辑地址空间分成若干个长度相等的区域,称为页。

·页架(块)  把内存空间划分成若干个与页面长度相等的区域,称为页架。程序装入内存时,每页对应一个页架,这些页架可以是不连接的,也不要求所有页面同时装入内存中。

·页表  系统为每道作业建立一张页面映射表,简称页表,记录相应页在内存中对应的页架号。

(2)地址转换

采用动态重定位。

·地址变换机构自动将逻辑地址分解为页号p和页内位移d。

·以页号为索引去检索页表,得到该页对应的页架号p’。

·将页内位移d拼接在页架号后,得到相应的物理地址。

·检索页表时,若对应该页的状态为“0”,说明该页当时不在内存中,则发出缺页中断,把该页面调入内存后再进行地址转换工作。

(3)页面更换

当系统将缺页从外存调入内存时,发现已无可用的物理空间时,则须从内存中淘汰一个页面以腾出空间装入缺页。若被淘汰的页面选择不当,可能会出现刚被淘汰的页面马上又要被访问,使系统花费大量的时间忙于进行频繁的页面交换,降低系统效率,甚至导致系统瘫痪,这种现象称为抖动现象。

常用的淘汰算法有:

·先进先出法(FIFO)

选择在内存中驻留时间最久的页面予以淘汰。

·最近最久未使用法(LRU)

选择离当前时间最久未使用过的页面淘汰。

(4)优缺点

·优点  虚存量大,用户不必担心内存不够;不要求作业连续存放,有效地解决了“碎片”问题。

·缺点  要求硬件支持,增加了成本;要处理页面中断,系统开销较大,处理不当还可能产生“抖动”。

2. 分段存储管理

(1)基本思路

·段  作业中每一个模块称为段,每段占有连续的地址空间,其逻辑地址是二维的,由段号和段内地址组成。

·段表  系统为每个作业建立一张段表,记录该段在内存中的起始地址和段长。各段可存放在内存不同的分区中,也不要求所有的段同时调入内存中。

(2)地址转换

采用动态重定位

·地址转换机构取出逻辑地址的段号和段内地址。

·根据段号检索段表,找到该段的对应表目。

·将该段的起始地址与段内地址想加得到绝对地址。

·若对应该段状态为“0”,说明该段不在内存,需要通过中断调入。

(3)段的共享

由于段是有完整的逻辑意义,可以提供给多个作业共享。若多个作业段表中的某一项指向内存的同一地址,则内存中以该地址为起始地址的那一段便被共享了。

(4)优缺点

·优点  方便用户编程,便于共享与保护,便于动态链接和增长。

·缺点  增加硬件成本,由于段的长度不等,会出现与分区管理相同的“碎片”问题。

3.段页式存储管理

(1)基本思路

将段式与页式管理结合起来,克服各自存在的一些问题。它把作业分成若干段,每个段分成若干页。为了实现地址转换,必须为每个作业配置一张段表和若干张页表。

(2)地址转换

作业的逻辑地址是二维的,包括段号和段内地址,其中段内地址又包含页号和页内地址。

·地址转换机构取出逻辑地址,再将段内地址细分为页号和页内地址。

·根据段号检索段表,取出相应的页架号。

·把页架号与页内地址合并得到物理地址。

(3)优缺点

·优点  具有分段分页的优点。

·缺点  更增加硬件成本与软件复杂性。