作者:佚名 文章来源:技术服务中心 点击数: 更新时间:2015-07-06 14:46:37
计算机虚拟存储器及其管理技术
虚拟存储器及其管理技术是现代操作系统的重要特征之一,它将外存资源与内存资源进行统一管理,解决了用较小容量的内存运行大容量的软件问题。本节将给出虚拟存储器的概念,并讨论虚拟存储器管理的三种方法:分页存储管理、分段存储管理和段页存储管理。
一. 虚拟存储器
从操作系统的角度看,计算机系统的资源分为两大类:一类是硬件资源,包括微处理器、存储器和输入输出设备;另一类是软件资源,即程序和数据。这些资源构 成了系统程序和用户作业赖以活动的物质基础和工作环境。针对这些资源,操作系统的资源管理程序分为4个部分:处理器管理、存储器管理、外部设备管理和文件 管理。
早期开发的操作系统只支持单任务、单用户系统,对存储器的管理比较简单。如MSDOS就是在8086/8088环境下开发的磁 盘操作系统,只支持单任务、单用户操作;它可管理的内存空间最大为1MB,其中供用户程序占用的空间只有640KB,并且在内存管理上采用静态分配方式, 不支持虚拟存储器;在运行程序时,必须把用户程序一次调入内存。而目前使用的Windows操作系统突破了DOS内存1MB的限制,内存最大可达 4096MB,支持多任务、多用户操作,采用动态内存分配管理方式,并且具有虚拟存储器管理功能。
虚拟存储器(简称虚存)实际上是一 种由操作系统的存储管理软件对内存和外存资源进行统一分配和程序调度的存储器管理技术。它将内存和外存统一编址,形成一个比内存空间大许多的存储空间,称 为虚拟存储空间。虚拟地址空间的大小由CPU存储管理体系结构决定,并由外部存储器支持。虚拟存储器的地址称为虚拟地址或逻辑地址(用户在编制程序时使用 的地址)。用户在编制程序时可以不受内存空间大小的限制,在虚拟存储空间内自由编程,使得具有较小内存空间的系统能够运行大容量程序。
虚拟存储器的工作原理是:在执行程序时,允许将程序的一部分调入内存,其他部分保留在外存。即由操作系统的存储管理软件先将当前要执行的程序段(如主程 序)从外存调入内存,暂时不执行的程序段(如子程序)仍保留在外存,当需要执行存放在外存的某个程序段时,由CPU执行某种程序调度算法将它们调入内存。
二. 分页存储管理
1.分页存储管理的基本原理
分页存储管理的基本原理是:将内存空间和虚存空间分别等分为大小相等的若干页,页的大小为2n个字节,如210(1KB)、211(2KB)、 212(4KB)等,并且为每个页按顺序指定一个页号,即0页、1页、2页……为了叙述方便,这里把内存的页(物理页或绝对页)称为页面。例如,若内存空 间为8KB,虚存空间为16KB,页的大小为1KB,则内存空间可分为8个页面,其页面号为0~7;虚存空间可分为16个页,其页号为0~15。当运行程 序时,以“页”为单位进行地址映射。即操作系统以页为单位把逻辑页从外存调入内存,存放在物理页面上,供CPU执行。
2.分页存储管理的地址转换
在分页存储管理中,需要解决的关键问题是:选择哪一个物理页存放调入的逻辑页如何将逻辑地址转换为物理地址为了解决这些问题,系统为每一个页建立一个页 表,保存在内存中,存放页的若干信息,如页号、容量、是否装入内存、存放在内存的哪一个页面上等。CPU访问某页时,首先要查找页表,判断要访问的页是否 在内存,若在内存为命中,否则为未命中;然后将未命中的页按照某种调度算法由外存调入内存,并根据逻辑页号和存放的物理页面号的对应关系,将逻辑地址转换 为物理地址。分页存储管理的地址转换示意图。
存储单元的物理地址由页面号和页内地址两部分组成,如(a)所示。8KB内存的页内地址 由地址线A9~A0提供,可寻址1KB的页内存储空间,地址范围为0~1023;页面号由高3位地址线A12~A10提供,8个页面的页面号为0~7。由 此可以看出,页面存储单元的物理地址为:页的大小×页面号+页内地址。
虚拟地址(逻辑地址)的确定方法与物理地址的确定方法完全相 同,也是由页号和页内地址两部分组成,如(b)所示。16KB虚存空间可分为16页,页内地址由虚拟地址线A9~A0提供,其页号0~15由虚拟在进行地 址转换时,由于逻辑页和物理页的大小相等,它们的页内地址是相同的,所不同的是页号,只要将逻辑地址的页号转换为物理地址的页面号即可。在中,给出1号逻 辑页中某条指令访问数据的逻辑地址为1024×1+4521476,它存入内存7页面上所对应的物理地址为1024×7+4527620。
三. 分段存储管理
分段存储器管理的基本工作原理是:按程序的逻辑结构,以段为单位划分,各个段的长度因程序而异。为了说明逻辑段的各种属性,系统为每一个段建立一个段表 (驻留在内存),记录段的若干信息,如段号、段起点、段长度和段装入等。CPU通过访问段表,判断该段是否已调入内存,并完成逻辑地址与物理地址之间的转 换。分段地址转换示意图。逻辑地址由段号S和段内地址W组成,段号S相当于逻辑段的段名,它表示该逻辑段的起始地址。在进行地址转换时,操作系统用S检索 段表,段表中记录的信息1表明该段已调入内存,b是S段装入内存的起始地址,因此该逻辑地址对应的物理地址为b+W。
在分段存储管理方式中,由于段的分界与程序的自然分界相对应,所以具有逻辑独立性,易于程序的编译、管理、修改和保护,也便于多道程序共享。但是,因为段的长度参差不齐,起点和终点不定,给内存空间分配带来了麻烦,容易在段间留下不能利用的“零头”,造成浪费。
四. 段页存储管理
段页存储管理是将分页存储管理和分段存储管理结合起来的一种折中方案。它首先将程序按其逻辑结构划分为若干个大小不等的逻辑段,然后再将每个逻辑段划分 为若干个大小相等的逻辑页;主存空间也划分为若干个同样大小的物理页。每个程序段对应一个段表,每页对应一个页表,系统以页为单位进行地址映射,CPU通 过段表和页表提供的信息,完成逻辑地址与物理地址之间的转换。为段页地址转换示意图。
段页存储管理方式综合了段式管理和页式管理的优点,但需要经过两级查表才能完成地址转换,时间开销大。