存储技术
虚拟存储器是存储管理中一个特别重要的概念,你要认真掌握虚存的定义和特征。此外,你还要知道为何要引入虚存、实现虚存技术的物质基础、虚存容量受到哪两方面的限制。
虚拟存储器的概念
(1)引入虚拟存储器的好处
①用户编制程序时不必考虑内存容量的限制,只要按照实际问题的需要来确定合适的算法和数据结构就可简化程序设计的任务。
②由于每个进程只有一部分装入内存,因而占用内存空间较少,在一定容量的内存中就可同时装入更多的进程,也相应增加了CPU的利用率和系统的吞吐量。
为了给用户(特别是大作业用户)提供方便,操作系统应把各级存储器统一管理起来。就是说,应该把一个程序当前正在使用的部分放在内存中,而其余部分放在磁盘上,在这种情况下启动进程执行。操作系统根据程序执行时的要求和内存的实际使用情况,使用对换技术随机地对每个程序进行换入/换出。
(2)对换技术
对换技术也称作交换技术。它的实现方式就类似于日常生活中几个单位租用一个会议厅那样,甲单位租用时间到了,就退出会议厅,由乙单位使用;乙单位到时后,也退出去,由丙单位使用,等等。如甲单位还需使用,就再租用,由管理者安排占用时间。
多道程序环境中也采用对换技术。此时,内存中保留多个进程。当内存空间不足以容纳要求进入内存的进程时,系统就把内存中暂时不能运行的进程(包括程序和数据)换出到外存上,腾出内存空间,把具备运行条件的进程从外存换到内存中。在UNIX/Linux系统中对内存的管理就利用了这种多道程序的对换技术。
(3)虚拟存储器的概念
虚拟存储器(VirtualMemory)是用户能作为可编址内存对待的虚拟存储空间,它使用户逻辑存储器与物理存储器分离,是操作系统给用户提供的一个比真实内存空间大得多的地址空间。就是说,虚拟存储器并不是实际的内存,它的大小比内存空间大得多;用户感觉所能使用的“内存”非常大,这是操作系统对逻辑内存的扩充。
实现虚拟存储技术的物质基础是二级存储器结构和动态地址转换机构。经过操作系统的改造,将内存和外存有机地联系在一起,在用户面前呈现一个足以满足编程需要的特大内存空间。
虚拟存储器实质上是把用户地址空间和实际的存储空间区分开来,当作两个不同的概念。动态地址转换机构在程序运行时把逻辑地址转换成物理地址,以实现动态定位。
应注意,虚拟存储器虽然给用户提供了特大地址空间,用户在编程时一般不必考虑可用空间有多大,但虚拟存储器的容量不是无限大的。它主要受到两方面的限制:
①指令中表示地址的字长。机器指令中表示地址的二进制位数是有限的,如果地址单元以字节编址,且表示地址的字长是16位,则可以表示的地址空间最大是64KB。如果表示地址的字长是32位,则可以表示的地址空间最大是4GB。
②外存的容量。从实现观点来看,用户的程序和数据都必须完整地保存在外存(如硬盘)中。然而,外存容量、传送速度和使用频率等方面都受到物理因素的限制。就是说,磁盘的容量有限,并非真正“无穷大”,其传送速度也不是“无限快”,所以,虚拟空间不可能无限大。
虚拟存储器的特征
虚拟存储器的特征可以用16个字来概括:虚拟扩充、部分装入、离散分配、多次对换。
对于虚拟存储器这个基本概念应从以下4个方面进行理解,这些也是虚拟存储器所具有的基本特征:
①虚拟扩充
虚拟存储器不是扩大物理内存空间,而是扩充逻辑内存容量。就是说,用户编程时所用到的地址空间可以远大于实际内存的容量。例如,实际内存只有1MB,而用户程序和数据所用的空间却可以达到10MB或者更多。所以,用户“感觉”内存扩大了。
②部分装入
每个进程不是全部一次性地装入内存,而是分成若干部分。当进程要执行时,只需将当前运行需要用到的那部分程序和数据装入内存。以后在运行过程中用到其他部分时,再分别把那些部分从外存调入内存。
③离散分配
一个进程分成多个部分,它们没有被全部装入内存。即使装入内存的那部分也不必占用连续的内存空间。这样,一个进程在内存的部分可能散布在内存的不同地方,彼此并不连续。这样做,不仅可避免内存空间的浪费,而且为进程动态调入内存提供方便。
④多次对换
在一个进程运行期间,它所需的全部程序和数据分成多次调入内存。每次调入一部分,只解决当前需要,而在内存的那些暂时不被使用的程序和数据,可换出到外存的对换区;甚至把暂时不能运行的进程在内存的全部映像都换出到对换区,以腾出尽量多的内存空间供可运行的进程使用。被调出的程序和数据在需要时可以重新调入内存中。
虚拟存储器根据地址空间的结构不同可以分为分页虚拟存储器和分段虚拟存储器两类。本课程只介绍分页虚拟存储器。
责任编辑人:CC
全部0条评论
快来发表一下你的评论吧 !