您的位置  > 互联网

虚拟内存的局部性原理是什么?(附下载)

它使应用程序认为自己拥有连续的可用内存(连续的完整地址空间),但实际上,它通常被划分为多个物理内存碎片,有的在需要时临时存储在外部磁盘存储上。 数据交换。 使用虚拟内存技术的系统比不使用虚拟内存技术的系统更容易编写大型程序并且更有效地使用真实物理内存(例如RAM)。

需要注意的是:虚拟内存并不仅仅意味着“用磁盘空间扩展物理内存”——它只是扩展内存级别以包含硬盘驱动器。 将内存扩展到磁盘只是使用虚拟内存技术的结果。 其功能还可以通过将所有不活动的程序及其数据覆盖或交换到磁盘来实现。 虚拟内存的定义是基于地址空间的重新定义,即将地址空间定义为“连续的虚拟内存地址”,以“欺骗”程序认为自己正在使用一大块“连续”的地址。

1. 局部性原则

要真正理解虚拟内存技术的思想,我们首先要理解计算机中著名的局部性原理。 著名的Bill Joy(SUN的CEO)说:“当我在读研究生的时候,我经常开玩笑说缓存是计算机科学中唯一重要的思想。事实上,高速缓存技术确实极大地影响了计算机系统的性能设计 “快表、页缓存、虚拟内存技术都是广义上的缓存技术。 这项技术所依赖的原理就是局部性原理。 局部性原则既适用于程序结构,也适用于数据结构(更进一步说,《goto语句是有害的》著名论文也是基于对程序局部性原理的深刻理解)。

1)时间局部性:如果程序中的一条指令被执行过一次,那么该指令可能很快就会被再次执行; 如果某个数据已经被访问过,那么该数据可能很快就会被再次访问。 时间局部性的典型原因是程序中存在大量循环操作。

2)空间局部性:一旦程序访问某个存储单元,其附近的存储单元也会很快被访问。 即一段时间内程序访问的地址可能集中在一定范围内。 这是因为指令通常是顺序存储和执行的,而数据一般以向量、数组、表等形式存储在簇中。

时间局部性是通过将最近使用的指令和数据保存到高速缓存存储器中并使用高速缓存层次结构来实现的。 空间局部性通常通过使用更大的缓存并将预取机制集成到缓存控制逻辑中来实现。 虚拟内存技术实际上建立了“内存和外存”的两级内存结构,利用局部性原理实现高速缓存。

2、虚拟内存的定义及特点

基于局部性原理,当程序被加载时,可以将程序的一部分加载到内存中,而程序的其余部分可以留在外部内存中开始程序执行。 程序执行过程中,当所访问的信息不在内存中时,操作系统将需要的部分转移到内存中,然后继续执行程序。 另一方面,操作系统将内存中暂时未使用的内容换出到外部存储,从而释放空间来存储将要传输到内存中的信息。 这样,系统似乎就为用户提供了一块比实际内存大得多的内存,称为虚拟内存。

之所以称为虚拟内存,是因为这种内存实际上并不存在,但是由于系统提供了部分加载、请求加载和替换功能(对用户完全透明),所以给用户一种它存在的感觉。 比实际物理内存大得多的内存。 虚拟内存的大小是由计算机的地址结构决定的,并不是内存和外存的简单相加。 虚拟内存具有以下三个主要特点:

1)多路复用是指作业运行时不需要一次性将所有内存加载到内存中,而是允许分多次加载到内存中运行。

2)可互换性是指作业运行时内存不需要常驻,但允许在作业运行过程中换入换出。

3)虚拟性是指对内存容量进行逻辑扩展,使得用户看到的内存容量远大于实际内存容量。

3、虚拟内存技术的实现

在虚拟内存中,一个作业可以多次加载到内存中。 当采用连续分配方式时,相当一部分内存空间会处于临时或“永久”空闲状态,造成内存资源的严重浪费,并且无法进行逻辑上的内存容量扩展。 因此,虚拟内存的实现需要基于离散分配的内存管理方法。 虚拟内存的实现方式有以下三种:

1)请求分页存储管理。

2)请求分段存储管理。

3)请求段页存储管理。

无论哪种方式,都需要一定的硬件支持。 通常需要的支持在以下几个方面:

1)一定数量的内存和外部存储。

2)页表机制(或段表机制),作为主要数据结构。

3)中断机制,当用户程序要访问的部分还没有调入内存时,产生中断。

4)地址转换机制,逻辑地址到物理地址的转换。

4、虚拟存储地址变换

常见的替换算法有4种。

① 随机算法:使用软件或硬件随机数生成器来确定被替换的页面。

②先进先出:先加载到主存的页面先被替换。

③最少使用算法(LRU,):替换最长时间未使用的页面。

④ 最优算法:替换使用时间最长的页面。 这是一种理想化的算法,只能作为衡量其他算法优劣的标准。

虚拟内存的效率是系统性能评价的重要组成部分。 它与主存容量、页面大小、命中率、程序局部性和替换算法等因素有关。