虚拟存储器有哪些特征,核心属性梳理

虚拟存储器有哪些特征,它依托请求分页、请求分段或者段页式的地址映射机制,把内存和外存组合成逻辑上连续的大容量存储空间,能够让进程使用远超物理内存大小的逻辑地址空间,对上层程序保持地址透明,依靠缺页中断完成数据调入调出,会产生一定的访问延迟,适合多道程序操作系统运行内存需求偏大的进程,不适合对访问时延波动高度敏感的实时控制程序,这类程序要求每一次内存访问的耗时保持稳定,页面置换带来的延迟容易干扰任务时序。

虚拟存储器的逻辑地址特征

逻辑地址空间独立于物理内存,每个进程拥有专属的地址空间,进程内部编写代码时不需要关心物理内存实际容量与分配位置。地址转换由内存管理单元自动完成,程序里使用的地址全部是虚拟地址,只有在指令执行或者访问数据的时候,硬件才会把虚拟地址翻译成对应的物理地址。进程之间的虚拟地址相互隔离,一个进程无法直接通过虚拟地址访问另一个进程的数据,能够降低越权访问的可能性。

地址空间足够大。

虚拟存储器的请求调入特征

虚拟存储器不会在进程创建阶段就把全部程序和数据载入物理内存,只预先装入当前需要执行的部分内容,其余内容保留在外存的交换分区或者文件区域。处理器访问尚未载入内存的页面或者段时,触发缺页中断,操作系统接管中断流程,从外存读取对应内容送入空闲物理块,更新页表或者段表中的有效位,中断返回之后继续执行被打断的指令。如果系统没有空闲物理块,就会启动页面置换算法,选择一部分已经载入内存的数据移向外存,腾出空间。

虚拟存储器的置换与局部性特征

整套机制能够生效的基础是程序局部性原理,分为时间局部性和空间局部性,时间局部性指刚被访问过的内容,短时间内再次被访问的概率较高,空间局部性指访问某个地址之后,相邻地址被访问的概率随之上升。操作系统利用这个规律,在页面置换的时候保留近期访问频次更高的页面,降低缺页中断出现的频次。如果程序的访问模式高度随机,缺少局部性,缺页率会持续走高,系统会陷入频繁换入换出的抖动状态,整体吞吐能力明显下滑。

虚拟存储器的透明与共享特征

对应用层程序而言,虚拟存储器的底层调度过程不可见,开发者不用手动编写外存和内存之间的数据搬运代码,这套调度全部由操作系统和硬件协同完成。多个进程也可以映射同一段虚拟地址到相同的物理内存区域,以此实现内存共享,常用于动态链接库、只读资源这类场景,多个进程读取同一份副本,减少物理内存资源的重复占用。共享区域会设置配套的访问权限,区分只读、可读写与可执行。

虚拟存储器的性能边界特征

虚拟内存的访问速度无法等同于物理内存,命中内存时速度接近物理内存,发生缺页时需要等待慢速外存传输数据,单次访问耗时会增加数十倍。系统可以调整交换空间的大小,但交换空间不是无限扩容的资源,外存本身存在容量上限,同时持续的交换读写会增加存储设备的磨损。Windows和Linux主流操作系统都默认开启虚拟内存功能,你可以手动调整交换文件或者交换分区的尺寸,但不建议直接关闭,关闭之后大内存占用的进程更容易触发内存分配失败而终止运行。

下表对比虚拟存储器和常规物理内存的几项关键差异,方便快速区分两者属性。

对比维度虚拟存储器物理内存
存储介质内存加外存联合构成仅为主存芯片
地址可见性程序使用虚拟地址硬件直接使用物理地址
容量上限受限于地址位宽与外存空间受限于硬件插槽与芯片规格
访问延迟存在波动,缺页时延迟更高延迟稳定,数值偏低

虚拟存储器还带有权限控制特征,页表项或者段表项会记录每一块虚拟地址对应的访问权限,标记这块区域是否允许读取、写入或者执行。一旦程序尝试执行不符合权限规则的操作,系统立刻触发保护中断,终止异常进程,阻止错误代码破坏其他内存区域的数据。这项保护机制和地址隔离配合,能够提升系统运行的稳定程度,约束程序越界操作的行为。

它的实现依赖硬件支持,单纯依靠软件无法高效完成虚拟地址转换,内存管理单元是必不可少的硬件组件,配套快表用来缓存最近用过的地址映射记录,减少访问页表带来的额外开销。快表命中的时候,地址转换速度更快,如果快表失效,就需要遍历内存中的页表完成映射查找,额外消耗一次内存访问周期。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于虚拟存储器有哪些特征的文章欢迎访问:百科