手机版

百科生活 投稿

虚拟存储技术,虚拟存储管理系统的基础是程序的什么理论(浅析虚拟内存原理<图文演示>)

百科 2025-12-23 15:20:19 投稿 阅读:9901次

关于【虚拟存储技术】:虚拟存储(虚拟存储技术),今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

  • 内容导航:
  • 1、什么是虚拟内存呢?浅析虚拟内存原理(图文演示)
  • 2、虚拟存储(虚拟存储技术)
  • 3、贡嘎机场T3航站楼投入运营。
  • 4、感受奥运运动员的青春气质

1、什么是虚拟内存呢?浅析虚拟内存原理(图文演示)

前言:存为了更加高效并且少出错,现代操作系统提供了一种对主存的抽象概念,叫做虚拟内存。虚拟内存是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互,他为每个进程提供了一个大的,一致和私有的地址空间,虚拟内存提供三个能力:它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在主存和磁盘之间来回传送数据,通过这种方式高效使用了主存他为每个进程提供了一致的地址空间,从而简化了内存管理它保护了每个进程的地址空间不被其他进程破坏。

物理和虚拟寻址

计算机主存被组织成一个由M个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址,每一个字节的地址为0,接下来的字节地址为1,在下一个为2,以此类推,给定这种简单的结构,CPU访问内存的最自然的方式就是使用物理地址,我们把这种方式称为物理寻址。

现在操作系统都是用虚拟寻址的寻址形式。CPU通过生成一个虚拟地址来访问内存,这个虚拟地址在送到内存之前会被转换成适当的物理地址,将虚拟地址转换成物理地址这一过程成为地址翻译。需要硬件系统个操作系统之间的紧密配合,CPU芯片上的叫做内存管理单元的专用硬件,利用存放在主存中的查询表来动态翻译虚拟地址,该表的内容由操作系统管理。

地址空间:地址空间是一个由非负整数组成的有序集合。一个地址空间大小是由表示最大地址所需要的位数描述的,例如一个包含N=2^n个地址的虚拟地址空间就叫做一个n位地址空间。现在操作系统通常支持32位或者64位寻地址空间。

地址空间区分了数据对象和他们的属性,一旦认识到这种区别,我们就可以将其推广,允许每个数据对象有多个独立的地址空间,其中每个地址都选自不同的地址空间,这是虚拟内存的基本思想。主存中的每个字节都以一个选自虚拟地址空间和一个选自物理地址空间的物理地址。

虚拟内存作为缓存的工具:

虚拟内存被组织成一个有存放在磁盘上的N个连续的字节大小的单元组成的数组,每字节都有唯一的虚拟地址,作为数组的索引,磁盘上的内容被缓存在主存中,和存储器层次结构中的其他缓存一样,磁盘上的数据被分割成块,这些块被分割成磁盘和主存之间的传输单元,VM系统通过将虚拟内存分割成称为虚拟页的大小固定的块来处理这个问题,每个虚拟页的大小为P=2^p字节,类似的,物理内存被分割成物理页,大小为p字节。被称为页帧。

在任意时刻,虚拟页面都分为三个不相交的子集:

  1. 未分配的:VM系统还未分配的页,未分配的块没有任何数据和他们相关联,因此,也就不占用任何磁盘空间。
  2. 缓存的:当前已经缓存在物理内存中的已经分配的页
  3. 为缓存的:未缓存到物理内存中已分配的页

DRAM缓存的组织结构:

SRAM为CPU和主存之间的L1,L2,L3高速缓存DRAM表示虚拟内存系统的缓存,他在主存中缓存虚拟页DRAM要比SRAM慢10倍,而磁盘要比DRAM慢大约100000倍,因此DRAM不命中比起SRAM不命中要昂贵的多。因为DRAM缓存不命中是由磁盘来服务的。

在习惯说法中,DRAM缓存不命中,我们称为缺页。

一次缺页的处理过程:

虚拟存储技术,虚拟存储管理系统的基础是程序的什么理论(浅析虚拟内存原理<图文演示>)

如上图所示:CPU引用了vp3一个字,vp3并未缓存在内存中(DRAM)中,地址翻译硬件会从内存中读取PTE3,从有效位推断vp3未被缓存,并触发一个缺页异常,缺页异常调用内核中的缺页异常处理程序,该程序会选择一个牺牲页,在此例中就是vp4,如果vp4被修改了,那么内核就会将其复制回磁盘,无论哪种情况,内核都会修改vp4的页表条目PTE4,反应vp4不再缓存在主存中这一事实。

接下来,内核从磁盘复制vp3到内存中的原来vp4的位置,更新PTE3,随后返回,当异常处理程序返回时,他会重新启动导致缺页的指令,该指令会将导致缺页的虚拟地址发送给地址翻译硬件,现在vp3已经被缓存到主存中了,那么页命中也能由地址翻译硬件处理了。

下面是完成却也异常处理的示意图:

虚拟存储技术,虚拟存储管理系统的基础是程序的什么理论(浅析虚拟内存原理<图文演示>)

在虚拟内存的说法中,块被称为页,在磁盘和内存之间传送页的活动叫做页面调度。页从磁盘换入DRAM和从DRAM换出磁盘,一直到最后时刻,也就是当不命中发生时,才换入页面的这种策略,称为按需页面调度。调用malloc会使磁盘新的页面在磁盘上产生。

局部性

尽管在整个运行期间程序引用的不同页面的总数可能超出物理内存总大小,但是局部性原则保证了在任意时刻,程序趋向在一个较小活动页面上工作,这个集合叫做工作集,或者常驻集合,在初始开销,将工作集页面调度到主存之后,接下来对这个工作集的引用将导致命中,而不会产生额外开销。只要程序有好的时间局部性,虚拟内存系统就能工作相当好,如果工作集的大小超出了物理内存的大小,程序将产生一种不幸的状态,叫做抖动,这个时候页面会被不停的换进与换出。使得程序性能下降。

按需页面调度和独立的虚拟地址空间的结合,对系统中内存的使用和管理造成了深远的影响,VM简化了连接与加载,代码和数据共享,以及应用程序的内存分配。

简化链接:独立的地址空间允许每个进程的内存映像使用相同的基本格式,而不管代码和数据实际存放在物理内存何处。

简化加载:虚拟内存还使得容易向内存中加载可执行文件和共享对象文件。

将一组连续的虚拟页映射到任意一个文件中的任意位置表示法称为内存映射。

简化共享:独立的地址空间为操作系统提供了一个管理用户进程和操作系统的自身之间共享的一致机制。一般而言,每个进程都有自己私有的代码、数据、堆以及栈区,是不和其他进程共享的,在这种情况下,操作系统创建页表,将相应的虚拟页映射到不连续的物理页面。

在一些情况下,还是需要进程来共享数据和代码,比如每个进程必须调用相同的操作系统内核代码,而每个C程序都会调用C标准库中的程序,操作系统通过将不同进程中适当的页面映射到相同的物理页面,从而安排多个进程共享这部分代码的副本,而不是每个进程单独拥有内核或者C标准库。

简化内存分配:虚拟内存为用户提供了简化内存分配的机制,当一个运行在用户进程中的程序要求分配额外的堆空间的话,操作系统分配相应适当的数字个连续个虚拟内存页面,并且将它们映射到物理内存中任意位置的k个任意的物理页面,由于页表的工作方式,没必要分配连续的物理页面,而是随机分散在物理内存中。

虚拟内存作为内存保护的工具:

现代计算机系统必须为操作系统提供手段来控制对内存系统的访问,不应该允许一个进程修改他的只读代码段,而且也不用改允许他读或者修改任何内核中的代码或者数据结构。不应该允许他读或者写其他进程的私有内存,并且不允许他修改与其他进程共享的虚拟页面,除非共享者都显式地允许他这么做。

每次CPU生成一个地址时,地址翻译硬件都会读一个PTE,所以通过在PTE上添加一些额外的许可位来控制对一个虚拟页面的访问十分简单。

虚拟存储技术,虚拟存储管理系统的基础是程序的什么理论(浅析虚拟内存原理<图文演示>)

2、虚拟存储(虚拟存储技术)

虚拟存储(虚拟存储技术)

云和虚拟化

云计算是通过互联网服务提供动态、可扩展资源的计算模式。经过多年的发展,IT已经成为企业IT技术的重要支撑。虚拟化是云计算的核心技术之一。一台计算机被抽象成多台逻辑计算机,即虚拟机。每个虚拟机都是一个独立且安全的环境,可以运行不同的操作系统,而不会相互影响。

虚拟化技术给资源的使用和调度带来了极大的便利。云计算系统可以根据负载情况及时调度资源,提高资源利用率,保证应用和服务不会因为资源不足而影响服务质量。但是,虚拟化也是有代价的,资源的抽象带来了性能的损失,这也是虚拟化一直在努力解决的问题。

虚拟化的资源抽象可以简单地分为三部分:CPU虚拟化、内存虚拟化和设备虚拟化。其中,设备虚拟化已经能够实现、存储等设备通过到虚拟机而不损失性能;在硬件特性的支持下,CPU虚拟化具有与裸机相同的执行普通指令的性能。但是与裸机相比,内存虚拟化还是有很大的区别,这是目前值得关注的问题。

内存虚拟化

虚拟内存:说到内存虚拟化,就不得不提到虚拟内存的概念。在早期的操作系统中,只有一个物理地址,空之间的空间是有限的,因此进程在使用内存时必须小心避免覆盖其他进程的内存。为了避免这个问题,虚拟内存的概念被抽象出来,以确保每个进程都有一个连续且独立的虚拟内存空。进程直接通过虚拟地址使用内存。中央处理器访问内存时发送的虚拟地址被硬件内存管理单元截获并转换为物理地址。VA和PA之间的映射由页表管理。转换时MMU会自动查询页表。

虚拟化:类似于虚拟内存的概念,一台主机上的每台虚拟机都认为自己占用了整个物理地址空空间,因此需要再次对内存进行抽象,即虚拟内存,保证每台虚拟机都有独立的地址空空间。这样,虚拟机和物理机都有VA和PA的概念,即GVA(来宾虚拟地址)和GPA(来宾物理地址),以及HVA(主机虚拟地址)和HPA(主机物理地址)。虚拟机中的程序使用GVA,最终需要转换为HPA。两个VA到PA( GVA到GPA,HVA到HPA)的映射也是通过页表来管理的,GPA到HVA的映射一般是几个连续的线性映射,由虚拟机的VMM(Virtual Machine Monitor)来管理。

进程内存访问需要从VA转换为PA。引入内存虚拟化后,转换路径发生了很大变化。本来我们只需要把VA转换成PA,虚拟化后转换过程就变成了GVA -> GPA -> HVA ->HPA。路径变长变复杂后,给内存访问的安全性和性能带来了挑战,这也是内存虚拟化需要实现的目标:1)安全性,即地址转换的合法性,虚拟机不能访问不属于自己的内存;2)性能,即地址翻译的高效率,包括建立翻译关系的低成本和翻译过程本身的低成本。

经典方案

为了实现内存虚拟化的目标,已经提出了许多虚拟化方案。SPT(影子页表)和EPT(扩展页表)是两种典型的方案,也是大家最熟悉的方案。让我们以此为起点,看看它们是如何工作的,然后讨论其他虚拟化方案。

SPT:由于原硬件只支持一层页表转换,在虚拟机或物理机上直接将VA转换为PA无法完成从GVA到HPA的转换。因此,SPT建立了一个快捷方式,即影子页表,直接管理从GVA到HPA的映射,如下图所示。每个影子页表实例对应于虚拟机中的一个进程。影子页表的建立需要VMM在虚拟机中查询进程的页表。

由于影子页表管理从GVA到HPA的直接映射,SPT地址转换路径相当于物理机路径,直接查询一层页表即可完成地址转换。使用四级页表时,转换过程如下图所示。

优点:SPT地址转换过程成本低,与物理机相当。

缺点:

1)建立地址转换关系非常昂贵。为了保证地址转换的合法性,所有转换关系的建立,也就是虚拟机进程的页表修改,都会被截获并困在特权VMM中进行执行。

2)影子页表本身需要占用内存,一个影子页表只对应虚拟机中的一个进程,整体上会占用更多的内存资源。

EPT:后期硬件增加了嵌套页表对虚拟化的支持,让硬件自动完成两层页表的转换。EPT是基于硬件支持的解决方案。在管理从GVA到GPA的虚拟机页表的基础上,增加了扩展页表来管理GPA到HPA的映射,如下图所示。这两层页表相互独立,两层映射关系的转换由硬件自动完成。

由于虚拟机中各级页表(gL4、gL3、gL2、gL1)的内容都只是GPA,在查询下一级时,必须先将页表(nL4、nL3、nL2、nL1)转换为HPA,这使得整个转换路径非常长。当两层页表为四级时,转换过程如下图所示。

优点:地址转换关系建立成本低,独立EPT页表的存在保证了地址转换的合法性,因此虚拟机的页表可以自行修改,无需VMM干预。

缺点:转换过程的成本非常高。在最坏的情况下,它需要24(4+4+4 * 4)次硬件查找转换。

两种经典方案在安全性上有坚实的保证,但在性能上各有缺陷。SPT在建立翻译关系上付出了巨大的代价,以保证地址翻译的合法性,而EPT消除了建立翻译关系的开销,但翻译路径更长。

其他探索

关于内存虚拟化,工业界和学术界还有很多探索。基本思路类似于SPT或EPT,可分为三类:

1)一层页表方案。与SPT类似,使用一层页表直接管理从GVA到HPA的映射。

2)两层页表方案。与EPT类似,两个独立的页表分别用于管理从GVA到GPA和GPA到HPA的映射。

3)混合方案。结合前两种方案进行动态选择。

直接分页:一层页表方案,是早期硬件只支持一层页表时Xen的半虚拟化方案。与SPT相比,的区别是从GVA到GPA的虚拟机页表没有单独维护,虚拟机知道自己处于虚拟化环境,即知道自己的页表内容是HPA。虚拟机页表修改也需要陷,但主动陷可以批量,而SPT是被动拦截陷。读页表只能得到HPA,需要查一个M2P(机器到物理)表才能得到GPA。

直接分页也使用一层页表来管理从GVA到HPA的映射,地址转换的路径与SPT相同。使用四级页表时,最差只需查表4次。

优点:地址转换过程成本低,与物理机相当。

缺点:

1)地址转换关系的建立非常昂贵,所有的页表修改都需要主动受困;

2)虚拟机需要做半虚拟适配,虚拟机需要感知自己的页表管理从GVA到HPA的映射。

直接段:两层页表方案,是学术界基于新硬件的方案。GVA到GPA的映射管理与EPT相同,也采用多级页表。但是从GPA到HPA的映射采用了分段机制,当GPA转换为HPA时,只需要通过硬件增加一个偏移量。

虽然GPA不等于HPA,但是它们之间的映射关系非常简单。只有直接段硬件需要添加偏移。与物理机的路径相比,整个转换路径差别不大,只是多了几个硬件偏移量。使用虚拟机四级页表时,转换路径如下图所示,其中DS代表GPA到HPA转换的硬件支持。

优点:地址翻译关系建立成本低,翻译过程成本也很低。

缺点:

1)需要硬件支持GPA到HPA段的映射,现有硬件不具备此功能;

2)需要分配一大段连续内存,即主机不能有太多内存碎片。

扁平化EPT:两层页表方案,也是学术界提出的基于新硬件的方案。它与整个EPT非常相似。唯一不同的是EPT管理从GPA到HPA的多级页表的使用,一般为4级,每级512个条目。而平面EPT使用的是只有一个级别的平面页表,有超过512个条目。

和EPT一样,各级虚拟机中页表的内容都是GPA。查询下一级时,需要通过平面扩展页表(nL4)将页表转换为HPA。因为平面扩展页表只有一级,所以转换路径比EPT短得多。在虚拟机中使用四级页表时,转换路径如下图所示。最坏的情况下,查表只需要9(4+1+4 * 1)次。

优点:地址翻译关系建立成本低,翻译过程成本也低。与Direct Segment相比,它需要更少的内存分配,只需要少量的连续内存作为平面扩展页表(8G虚拟机只需要16M)。

缺点:需要硬件来支持平面扩展页表。当前的硬件仅支持条目为512的多级扩展页表。

混合SPT和EPT:早些时候学术界提出的混合方案,只是SPT和EPT之间的动态分时切换。监控和采集虚拟机运行时的TLB未命中和页面故障数据,当达到设定阈值时,在SPT和EPT之间切换,如下图所示:

当TLB失败率高于阈值T1且页面故障频率低于阈值T2时,从EPT切换到SPT。

当TLB失败率低于阈值T1且页面故障频率高于阈值T2时,从标准普尔切换到EPT。

优势:有机会充分利用SPT和EPT的优势,取得更好的表现。

缺点:

1)页表切换阈值设置困难,硬件配置可能影响阈值;

2)在SPT和EPT之间切换也代价高昂,主要是SPT的破坏和重建。

摘要

一层页表的明显优势是地址转换过程成本低,和物理机一样。要解决的问题是降低地址转换建立的成本。一个可能的方向是放弃一些安全性,让页表的修改变轻;另一个更实际的方向是在适当的场景中使用它,也就是说,使用页面表修改不频繁的负载。

双层页表的优点是地址转换开销小,虚拟机可以独立修改页表。要考虑的问题是缩短翻译路径。这个方向其实是很可行的,但是在新硬件的支持下,短期内不太可能出现符合要求的新硬件。

混合页表设计的初衷是充分利用两种类型页表的优势,但动态模式切换非常困难,负载甚至硬件的差异都可能影响切换效果。也许对已知负载的方向优化是一个可行的方向。

从长远来看,在新硬件的加持下,两层页表(尤其是Flat EPT)是一个相对完善的解决方案,地址转换可以非常高效,而不牺牲安全性和通用性。但短期来看,新硬件还为时过早,进一步探索和优化一层页表方案更具实用性。我们将继续探索内存虚拟化道路上的更多可能性。欢迎加入OpenAnolis龙蜥社区讨论交流。

关于:陶志恒(君川),2020年加入阿里巴巴云操作系统-云原生底层系统团队,目前从事性能优化方向。

原文:http://click.aliyun.com/m/1000287430/

本文为阿里巴巴云原创内容,未经许可不得转载。

评论2

请登录评论~

评论

有用户1310762158点赞转发。

回复·4天前AlexText喜欢转发它

回复·4天前

让世界看到中国青年的战斗力。光明网154评论14小时前

3、贡嘎机场T3航站楼投入运营。

中国经济网52评论1天前

4、感受奥运运动员的青春气质

人民网660评论19小时前刚刚看到这里,点击刷新阿郝

阿里巴巴云计算有限公司

关注TA的热门作品

Snowflake 如日中天是否代表 Hadoop 已死?大数据体系到底是什么?

144阅读5天前

快速界定故障:Socket Tracer 监控实践

32阅读6天前

当 Java 遇上机密计算,又一段奇幻之旅开始了

40三天前阅读

阿里云马涛:什么是操作系统的云原生?

44阅读5天前

获国际架构顶会ATC2021论文!Fuxi2.0去中心化的调度架构详解

34阅读4天前

查看更多头条以获得改变。

一个

于月仙的丈夫发了讣告。

2

人民日报评论阿里侵害女员工事件

厦门华联辞退了参与侵权的阿里员工。

英国学者:美国的“抗疫”是荒谬的。

报告北京市1例肺炭疽病例。

星星哀悼于月仙

专家:当地疫情可能在8月底前解决。

中俄联合军事演习开始

全禅父亲:不接受房产现金等捐赠。

10

《乡村爱情》里没有谢大脚。

精彩视频变化11:26

孟晚舟事件新进展!

52万部剧

八点半

孩子们终于放假,回到阔别1月的小院,来个大扫除,住着倍儿舒服

18万部剧

06:28

立秋,家人团聚吃饺子,妈妈擀皮,奶奶包,宸宸跟着打下手

23万部剧

十点二十八分

马霞:用离岸人民币给美元釜底抽薪

24万部剧

09:51

中美正面交锋,白宫一再出笨招?3大信号表明:美国最多扛30年

7万部剧

本文关键词:虚拟存储器名词解释,虚拟存储的实现是基于程序局部性原理,虚拟存储管理系统的基础是程序的什么理论,虚拟存储系统,虚拟存储技术的基础是。这就是关于《虚拟存储技术,虚拟存储管理系统的基础是程序的什么理论(浅析虚拟内存原理<图文演示>)》的所有内容,希望对您能有所帮助!

本文链接:https://bk.89qw.com/a-342834

最近发表
网站分类