虚拟存储

简介: 虚拟存储

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

主要原理:

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

工作方式:

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

优点:

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

应用领域:

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

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

相关文章
|
7月前
|
存储 缓存 数据安全/隐私保护
段页存储
段页存储
95 0
虚拟存储 分段分页段页解读(上)
虚拟存储 分段分页段页解读
|
3月前
|
存储 内存技术
逻辑地址和物理地址及逻辑磁盘和物理磁盘
【9月更文挑战第3天】在计算机系统中,逻辑地址与物理地址及逻辑磁盘与物理磁盘是核心概念。逻辑地址由段地址和偏移地址组成,与程序在内存中的实际位置无关;物理地址则是内存中实际的绝对地址,用于直接访问内存数据。物理磁盘指实际存储设备,如硬盘或固态硬盘;逻辑磁盘则是通过分区和格式化创建的存储单元,便于管理和使用。理解这些概念对内存和存储管理至关重要。
138 4
|
6月前
|
存储 算法 调度
虚拟存储器
虚拟存储器
85 0
|
7月前
|
算法 调度
7.虚拟存储器
7.虚拟存储器
|
7月前
|
存储 算法 大数据
认识操作系统段页式存储
存储管理负责高效地分配、管理和回收计算机的内存资源。这一过程对于确保计算机系统的稳定性、性能和可扩展性至关重要。
201 0
|
7月前
|
缓存 算法 Linux
Linux内存管理宏观篇(六)物理内存:分配小内存块
Linux内存管理宏观篇(六)物理内存:分配小内存块
114 1
|
7月前
|
缓存 算法 Linux
Linux内存管理宏观篇(三)物理内存:物理页面
Linux内存管理宏观篇(三)物理内存:物理页面
204 1
|
存储 算法 程序员
虚拟存储 分段分页段页解读(下)
虚拟存储 分段分页段页解读(下)
|
存储 算法 定位技术
4.2虚拟存储器
计算机组成原理之虚拟存储器
552 0