目录
虚拟存储器是操作系统中 commonly used 的内存管理技术,它通过在磁盘和内存之间移动进程页,为进程提供了比实际内存更大的地址空间。虚拟存储器的关键思想是基于程序的局部性原理,即程序在一段时间内只访问其部分代码和数据。
常规存储器管理方式的特征和局部性原理
传统的存储器管理方式是一种将进程的地址空间直接映射到物理内存的方案。它具有以下特点:
- 地址空间连续:进程的地址空间是连续的,从低地址到高地址线性增长。
- 静态内存分配:在内存中为进程分配连续的内存区域,直到进程结束或换出内存。
- 没有虚拟内存:进程的地址空间直接映射到物理内存,因此进程访问的地址就是实际的内存地址。
缺点
传统的存储器管理方式存在以下缺点:
- 内存利用率低:由于进程必须连续地装入内存,导致内存碎片和内部碎片问题,降低了内存的利用率。
- 不能共享内存:每个进程都有自己的内存区域,不允许共享,导致内存浪费。
- 不能实现按需装入:进程必须全部装入内存才能执行,增加了内存压力,特别是对于大型程序。
局部性原理
为了克服传统存储器管理方式的缺点,引入了虚拟存储器技术。虚拟存储器基于程序的局部性原理,即程序在一段时间内只访问其部分代码和数据。局部性原理主要包含以下两种类型:
- 时间局部性:最近被访问过的地址,将来不久还会再次被访问。
- 空间局部性:程序倾向于访问相邻的内存地址。
局部性原理的应用
局部性原理为虚拟存储器的设计提供了理论基础。虚拟存储器通过利用局部性原理,可以有效地提高内存的利用率,并实现按需装入和内存共享等功能。以下是一些具体的应用:
1. 提高内存利用率
虚拟存储器通过分页或分段技术,将进程的地址空间划分为若干小块(页或段),并将这些小块按需加载到内存中。这样可以减少内存碎片问题,提高内存利用率。
2. 实现按需装入
虚拟存储器允许进程在需要时才将相应的页或段加载到内存中,而不是一次性全部加载。这种按需装入技术可以显著减少内存压力,特别是对于大型程序。
3. 支持内存共享
通过虚拟存储器,不同的进程可以共享同一块物理内存。例如,共享库和共享数据段可以被多个进程同时访问,从而减少内存浪费。
4. 提高系统稳定性
虚拟存储器可以通过内存保护机制,防止进程非法访问其他进程的内存区域,从而提高系统的稳定性和安全性。
虚拟存储器的定义与特征
虚拟存储器是一种计算机系统技术,通过在磁盘和内存之间移动进程页,为进程提供比实际内存更大的地址空间。它使每个进程可以拥有一个独立的、完整的地址空间,这种地址空间可以大于实际的物理内存容量。
定义:
"虚拟存储器是通过在磁盘和内存之间移动进程页,为进程提供比实际内存更大的地址空间的技术。"
虚拟存储器的特征
虚拟存储器具有以下几个关键特征:
-
虚拟地址空间
虚拟存储器为每个进程提供一个虚拟的地址空间,这个空间可以大于实际的物理内存。虚拟地址空间通过地址映射机制将虚拟地址转换为物理地址,从而使得每个进程在自己的地址空间内操作数据,而不干扰其他进程。
-
按需装入
虚拟存储器系统只在进程需要时才将所需的页装入内存,这种方式称为按需装入(Demand Paging)。这种方式提高了内存利用率,因为它避免了将不必要的页一次性加载到内存中。
-
共享和保护
虚拟存储器通过页表或段表机制,实现内存的共享和保护:
- 共享:多个进程可以共享相同的代码段或数据段,从而减少内存的冗余使用,提高内存利用率。
- 保护:通过设置页表或段表中的访问权限,可以防止一个进程非法访问另一个进程的内存,增强系统的安全性。
-
动态重定位
在虚拟存储器系统中,进程在内存中的位置可以动态变化,进而实现内存的动态管理。这意味着进程的内存地址不必固定,可以在内存和磁盘之间灵活地移动。
虚拟存储器的实现机制
-
分页(Paging)
- 基本思想:将虚拟地址空间和物理内存都划分为固定大小的页和页框,通过页表实现虚拟地址到物理地址的映射。
- 页表:每个进程拥有一个页表,存储其虚拟页号和物理页框号的映射关系。
- 按需调页:当进程访问一个不在内存中的页时,引发缺页中断,系统从磁盘调入该页。
-
分段(Segmentation)
- 基本思想:将虚拟地址空间划分为不同大小的段,每段有独立的起始地址和长度。
- 段表:每个进程拥有一个段表,存储段的起始地址、长度和访问权限。
-
分页和分段结合
- 基本思想:结合分页和分段两种技术,虚拟地址首先通过分段机制映射到一个逻辑段,然后再通过分页机制映射到物理内存。
- 段页表:综合使用段表和多级页表,在虚拟存储器中组织和管理地址映射。
虚拟存储器的工作过程
- 地址生成:进程生成一个虚拟地址,这个地址包括段号(或页号)和段内偏移(或页内偏移)。
- 地址转换:系统通过段表和页表将虚拟地址转换为物理地址。
- 缺页处理:
- 检测缺页中断:如果页表项指示该页不在内存中,会触发缺页中断。
- 调页机制:操作系统根据缺页中断,从磁盘中调入所需的页,将其装入空闲页框。
- 更新页表:更新页表项,指示该页已驻留在内存中。
- 内存访问:成功转换后,系统根据生成的物理地址访问内存中的数据。
虚拟存储器的优点
- 扩展性:提供比实际物理内存更大的地址空间,支持大内存需求的应用程序。
- 内存利用率高:按需调页和共享内存页技术,提高了内存利用率。
- 进程隔离和安全:通过保护机制,实现进程间的内存隔离,增强系统安全性。
- 简化编程:提供线性、连续的地址空间,简化程序的编写和管理。
虚拟存储器的实现方法
虚拟存储器是一种通过将物理内存与外存(例如磁盘)结合起来,为程序提供比实际物理内存更大的地址空间的技术。它可以有效提高内存的利用率,并支持更大的程序运行。
虚拟存储器的实现主要有两种方法:
1. 分页存储管理
分页存储管理将虚拟地址空间和物理内存都划分成固定大小的页(Page)。每个页都有一个唯一的页号(Page Number)。虚拟地址由页号和页内偏移量(Page Offset)组成。
在分页存储管理中,页表(Page Table)用于存储虚拟页号和物理页框号(Page Frame Number)的映射关系。页表寄存器(Page Table Register)则指向当前正在使用的页表。
当程序访问一个虚拟地址时,CPU首先会将该地址分解为页号和页内偏移量。然后,CPU会使用页表寄存器中的基地址找到相应的页表项,并从中获取物理页框号。最后,CPU会将物理页框号和页内偏移量组合成物理地址,并访问相应的物理内存。
分页存储管理具有以下优点:
- 实现简单,易于管理。
- 可以有效防止内存碎片。
- 支持共享内存。
2. 分段存储管理
分段存储管理将虚拟地址空间划分为大小可变的段(Segment)。每个段都有一个唯一的段名(Segment Name)和长度(Length)。虚拟地址由段名和段内偏移量(Segment Offset)组成。
在分段存储管理中,段表(Segment Table)用于存储段名和物理页框号的映射关系。段表寄存器(Segment Table Register)则指向当前正在使用的段表。
当程序访问一个虚拟地址时,CPU首先会将该地址分解为段名和段内偏移量。然后,CPU会使用段表寄存器中的基地址找到相应的段表项,并从中获取物理页框号。最后,CPU会将物理页框号和段内偏移量组合成物理地址,并访问相应的物理内存。
分段存储管理具有以下优点:
- 可以更好地利用内存空间,减少内存碎片。
- 支持动态增长和收缩的段。
- 可以灵活地实现共享内存和保护。
3. 段页式存储管理
段页式存储管理结合了分页存储管理和分段存储管理的优点。它将虚拟地址空间划分为大小可变的段,每个段又进一步划分为固定大小的页。
段页式存储管理具有以下优点:
- 兼顾了分页存储管理和分段存储管理的优点。
- 可以更灵活地管理内存空间。
硬件支持
虚拟存储器的实现还需要硬件的支持,包括:
- 地址变换机构(Address Translation Mechanism):负责将虚拟地址转换为物理地址。
- 页表(Page Table):存储虚拟页号和物理页框号的映射关系。
- 页表寄存器(Page Table Register):存储当前正在使用的页表的基地址。
- 段表(Segment Table):存储段名和物理页框号的映射关系。
- 段表寄存器(Segment Table Register):存储当前正在使用的段表的基地址。
结语
虚拟存储器是 commonly used 的内存管理技术,它基于程序的局部性原理,为进程提供了比实际内存更大的地址空间。虚拟存储器通过在磁盘和内存之间移动进程页,实现了按需装入、共享和保护。了解虚拟存储器的概述,有助于我们理解操作系统中内存管理的技术细节,并提高系统的性能和稳定性。