赞
踩
B站:《王道考研 操作系统》
《现代操作系统》
虚拟存储技术是内存空间扩充的相关技术,在传统存储管理方式的基础上,结合内存扩充技术从逻辑上扩充内存容量。
一次性:作业必须一次性全部装入内存后才能开始运行,造成两个问题:①作业很大时,不能全部装入内存;②当大量作业要求运行时,无法容纳所有作业,只有少量作业能运行,导致多道程序并发度下降。
驻留性:一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。但在一个时间段内,只需要访问作业的一小部分数据即可正常运行,这就导致了内存中会驻留大量的、暂时用不到的数据,浪费了宝贵的内存资源。
上述问题可以通过虚拟存储技术解决,可以只装入部分程序到内存就开始运行,虚拟存储技术是基于局部性原理的:
时间局部性 :如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)
空间局部性 :一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问(因为很多数据在内存中都是连续存放的,并且程序的指令也是顺序地在内存中存放的)。
高速缓冲技术:时间局部性是通过将近期会频繁访问到的指令和数据放到更高速的缓存存储器中,暂时用不到的数据放在更低速存储器中。空间局部性通常是使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现。
虚拟内存技术实际上就是建立了“内存一外存”的两级存储器的结构,利用局部性原理实现髙速缓存。
基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,然后就可以让程序开始执行。
在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。
若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。在操作系统的管理下,在用户看来似乎有一个比实际内存大得多的内存,这就是虚拟内存。
虚拟内存的重要意义是它定义了一个连续的虚拟地址空间,把内存扩展到硬盘空间是使用虚拟内存的必然结果。实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
虚拟内存为每个进程提供了一个一致的、私有的地址空间,它让每个进程产生了一种自己在独享主存的错觉(每个进程拥有一片连续完整的内存空间)。
虚拟内存的实现需要建立在离散分配的内存管理方式的基础上,与传统离散内存管理技术的区别是新增了两大功能:
请求分页存储管理与基本分页存储管理的主要区别在于新增了请求调页和页面置换功能,根本区别在于是否将程序所需的全部地址空间都装入内存。请求分页是目前最常用的一种实现虚拟存储器的方法。请求分页存储管理系统中,在作业开始运行之前,仅装入当前要执行的部分页即可运行。
缺页中断是因为当前执行的指令想要访问的目标页面未调入内存而产生的,因此属于内中断。一条指令在执行期间,可能产生多次缺页中断。
基本流程:
相应的地址变换机构:
每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率。但是,最佳置换算法是无法实现的。
每次选择淘汰的页面是最早进入内存的页面。把调入内存的页面根据调入的先后顺序排成一个队列,需要换出页面时选择队头页面即可。
每次淘汰的页面是最近最久未使用的页面。赋予每个页面对应的页表项中,用访问字段记录该页面自上次被访问以来所经历的时间t。当需要淘汰一个页面时,选择现有页面中 t 值最大的,即最近最久未使用的页面。
最佳置换算法性能最好,但无法实现;先进先出置换算法实现简单,但算法性能差;最近最久未使用置换算法性能好,是最接近OPT算法性能的,但是实现起来需要专门的硬件支持,算法开销大。
时钟置换算法是一种性能和开销较均衡的算法,又称CLOCK算法,或最近未用算法(LFU)。
为每个页面设置一个访问位和修改位,再将内存中的页面都通过链接指针链接成循环队列。
访问位为1,表示最近访问过,访问位为0,表示最近没访问过。
在其它条件都相同时,应优先淘汰没有修改过的页面,避免I/O操作。修改位=0,表示页面没有被修改过,修改位=1,表示页面被修改过。改进型CLOCK置换算法选择一个淘汰页面最多会进行四轮扫描。
对比:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。