虚拟存储

简介: 虚拟存储

虚拟存储是一种计算机系统技术,它为每个进程提供一个独立且连续的逻辑地址空间,这个空间远大于实际物理内存的容量。虚拟存储的核心思想是将物理内存与进程视角的内存(即虚拟内存)分离,通过硬件(如内存管理单元,MMU)和操作系统协作,使得进程可以访问一个似乎无限大的内存空间,而实际上只有其活动部分(经常访问的部分)驻留在物理内存中,其余部分则存储在外部存储设备(如硬盘)上。以下是虚拟存储的主要原理、工作方式、优点及应用领域:

主要原理:

  1. 逻辑地址与物理地址的映射
  • 每个进程有自己的逻辑地址空间,进程通过虚拟地址访问内存。操作系统通过页表(或段页表)将虚拟地址转换为物理地址。虚拟地址到物理地址的映射通常是多对一或一对多的关系,允许不同进程共享物理内存,同时保证了各自逻辑空间的隔离。
  1. 页面调度与替换
  • 当进程试图访问不在物理内存中的虚拟页面时,会发生页故障(Page Fault)。操作系统捕获此异常,选择一个牺牲页面(通常是最近最少使用,LRU算法决定)写回硬盘(换出),然后将所需的页面从硬盘加载到空闲的物理内存位置(换入),更新页表,并重新执行引发页故障的指令。
  1. 内存映射文件
  • 虚拟存储不仅用于管理进程内存,还支持将磁盘文件直接映射到虚拟地址空间,形成内存映射文件。这样,对文件的访问就如同访问内存一样快速,无需传统的I/O操作,提高了数据访问效率。

工作方式:

  • 地址空间划分
  • 进程启动时,操作系统为其分配一个连续的虚拟地址空间,并初始化页表。地址空间通常划分为代码段、数据段(静态、堆、栈)和未映射区域。
  • 页表管理
  • 操作系统维护每个进程的页表,记录虚拟页面与物理页面之间的映射关系。页表可能有多级(如二级、三级页表),以支持大容量虚拟地址空间。
  • 内存分配与回收
  • 进程动态申请或释放内存时,操作系统调整页表,并在必要时执行页面调度操作。
  • 页故障处理
  • 遇到页故障时,操作系统暂停进程,执行以下操作:
  • 检查访问是否合法(例如,是否越界、是否有权限);
  • 如果合法,选择一个牺牲页面换出到硬盘(如果尚未换出);
  • 将所需页面从硬盘加载到空闲物理内存;
  • 更新页表,将新加载页面与虚拟地址关联;
  • 重启被暂停的指令,此时所需页面已在物理内存中。
  • 缓存一致性与预取
  • 现代系统中,硬件和操作系统可能还采用缓存一致性协议和预取机制,确保多核环境下的数据一致性,并提前将可能需要的页面加载到高速缓存或内存中,以优化性能。

优点:

  1. 内存抽象
  • 隐藏了物理内存细节,为进程提供一致、独立的视图,简化编程模型。
  1. 内存扩充
  • 通过将部分数据暂时存储在外存,使得应用程序可以使用远超实际物理内存容量的地址空间。
  1. 内存保护
  • 通过页表中的访问权限位实现对每个页面的读写执行权限控制,防止非法访问和数据破坏。
  1. 内存共享
  • 同一物理内存可以被映射到多个进程的不同虚拟地址,实现数据或代码的共享。
  1. 内存交换
  • 在多任务环境下,操作系统可以根据需要将暂时不用的进程换出到外存,以便为其他进程腾出物理内存。

应用领域:

  • 通用操作系统
  • 几乎所有现代操作系统(如Windows、Linux、macOS等)都采用了虚拟存储技术作为其内存管理的基础。
  • 服务器与云计算
  • 在服务器环境中,虚拟存储支持大量并发进程和多用户共享资源,是虚拟化技术(如VMware、KVM、Docker等)的关键组成部分。
  • 嵌入式系统
  • 部分高端嵌入式系统也采用了虚拟存储,以支持复杂的多任务处理和资源隔离。
  • 数据库管理系统
  • 数据库系统常利用虚拟存储进行大规模数据缓存、事务管理及日志记录等,提高数据访问速度和系统可靠性。
  • 科学计算与大数据处理
  • 虚拟存储有助于处理远超过物理内存容量的大规模数据集,通过智能调度和缓存策略,实现高效的数据访问和分析。

总之,虚拟存储是现代计算机系统中不可或缺的一部分,它通过逻辑地址与物理地址的映射、页面调度与替换机制,实现了内存抽象、扩充、保护、共享等功能,极大地提升了系统性能、可靠性和资源利用率,广泛应用于各类操作系统、服务器、虚拟化技术、数据库系统以及科学计算等领域。

相关文章
|
6月前
|
存储 缓存 数据安全/隐私保护
段页存储
段页存储
76 0
|
6月前
|
存储 Unix 程序员
操作系统基础:虚拟内存【下】
操作系统基础:虚拟内存【下】
|
6月前
|
存储 算法
操作系统基础:虚拟内存【上】
操作系统基础:虚拟内存【上】
|
5月前
|
存储 算法
探索现代操作系统中的虚拟内存管理技术
在数字时代的浪潮中,操作系统的心脏——虚拟内存管理技术,正以它独有的韵律跳动。本文将带你穿梭于操作系统的迷宫,揭开虚拟内存如何巧妙地扩展有限的物理内存之谜。从分页机制的精妙设计到交换空间的策略运用,我们将一探究竟。你将看到,虚拟内存不仅仅是一个存储数据的地方,它是速度与效率的协调者,是多任务处理的幕后英雄。随着技术的演进,虚拟内存管理不断优化,为应用程序提供了一片更为广阔的运行天地。让我们一同走进这个充满智慧的世界,感受操作系统中虚拟内存管理的魅力所在。
52 1
|
5月前
|
存储 算法 调度
虚拟存储器
虚拟存储器
59 0
|
6月前
|
算法 调度
7.虚拟存储器
7.虚拟存储器
|
6月前
|
算法
探索现代操作系统的虚拟内存管理
【4月更文挑战第25天】 操作系统的心脏——虚拟内存管理,是确保多任务并发执行和系统稳定性的关键。本文将深入剖析虚拟内存的核心机制,包括分页、分段、请求调页以及交换技术。我们将探讨虚拟内存如何允许操作系统使用有限的物理内存来模拟更大的地址空间,以及这一过程对性能的影响。此外,文章还将介绍一些高级话题,比如内存分配策略、页面置换算法以及虚拟内存的优化方法。
|
6月前
|
存储 算法 大数据
认识操作系统段页式存储
存储管理负责高效地分配、管理和回收计算机的内存资源。这一过程对于确保计算机系统的稳定性、性能和可扩展性至关重要。
178 0
|
6月前
|
缓存 算法 Linux
Linux内存管理宏观篇(三)物理内存:物理页面
Linux内存管理宏观篇(三)物理内存:物理页面
176 1
|
存储 算法 Unix
第八章 磁盘存储器的管理 【操作系统】
第八章 磁盘存储器的管理 【操作系统】
307 0