虚拟存储器概述

2024-06-09 01:20
文章标签 概述 虚拟存储器

本文主要是介绍虚拟存储器概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

常规存储器管理方式的特征和局部性原理

缺点

局部性原理

局部性原理的应用

1. 提高内存利用率

2. 实现按需装入

3. 支持内存共享

4. 提高系统稳定性

虚拟存储器的定义与特征

虚拟存储器的特征

虚拟存储器的实现机制

虚拟存储器的工作过程

虚拟存储器的优点

虚拟存储器的实现方法

1. 分页存储管理

2. 分段存储管理

3. 段页式存储管理

硬件支持

结语


        虚拟存储器是操作系统中 commonly used 的内存管理技术,它通过在磁盘和内存之间移动进程页,为进程提供了比实际内存更大的地址空间。虚拟存储器的关键思想是基于程序的局部性原理,即程序在一段时间内只访问其部分代码和数据。

常规存储器管理方式的特征和局部性原理

传统的存储器管理方式是一种将进程的地址空间直接映射到物理内存的方案。它具有以下特点:

  • 地址空间连续:进程的地址空间是连续的,从低地址到高地址线性增长。
  • 静态内存分配:在内存中为进程分配连续的内存区域,直到进程结束或换出内存。
  • 没有虚拟内存:进程的地址空间直接映射到物理内存,因此进程访问的地址就是实际的内存地址。

缺点

传统的存储器管理方式存在以下缺点:

  • 内存利用率低:由于进程必须连续地装入内存,导致内存碎片和内部碎片问题,降低了内存的利用率。
  • 不能共享内存:每个进程都有自己的内存区域,不允许共享,导致内存浪费。
  • 不能实现按需装入:进程必须全部装入内存才能执行,增加了内存压力,特别是对于大型程序。

局部性原理

        为了克服传统存储器管理方式的缺点,引入了虚拟存储器技术。虚拟存储器基于程序的局部性原理,即程序在一段时间内只访问其部分代码和数据。局部性原理主要包含以下两种类型:

  • 时间局部性:最近被访问过的地址,将来不久还会再次被访问。
  • 空间局部性:程序倾向于访问相邻的内存地址。

局部性原理的应用

        局部性原理为虚拟存储器的设计提供了理论基础。虚拟存储器通过利用局部性原理,可以有效地提高内存的利用率,并实现按需装入和内存共享等功能。以下是一些具体的应用:

1. 提高内存利用率

        虚拟存储器通过分页或分段技术,将进程的地址空间划分为若干小块(页或段),并将这些小块按需加载到内存中。这样可以减少内存碎片问题,提高内存利用率。

2. 实现按需装入

        虚拟存储器允许进程在需要时才将相应的页或段加载到内存中,而不是一次性全部加载。这种按需装入技术可以显著减少内存压力,特别是对于大型程序。

3. 支持内存共享

        通过虚拟存储器,不同的进程可以共享同一块物理内存。例如,共享库和共享数据段可以被多个进程同时访问,从而减少内存浪费。

4. 提高系统稳定性

        虚拟存储器可以通过内存保护机制,防止进程非法访问其他进程的内存区域,从而提高系统的稳定性和安全性。

虚拟存储器的定义与特征

        虚拟存储器是一种计算机系统技术,通过在磁盘和内存之间移动进程页,为进程提供比实际内存更大的地址空间。它使每个进程可以拥有一个独立的、完整的地址空间,这种地址空间可以大于实际的物理内存容量。

定义
"虚拟存储器是通过在磁盘和内存之间移动进程页,为进程提供比实际内存更大的地址空间的技术。"

虚拟存储器的特征

虚拟存储器具有以下几个关键特征:

  1. 虚拟地址空间

    虚拟存储器为每个进程提供一个虚拟的地址空间,这个空间可以大于实际的物理内存。虚拟地址空间通过地址映射机制将虚拟地址转换为物理地址,从而使得每个进程在自己的地址空间内操作数据,而不干扰其他进程。

  2. 按需装入

    虚拟存储器系统只在进程需要时才将所需的页装入内存,这种方式称为按需装入(Demand Paging)。这种方式提高了内存利用率,因为它避免了将不必要的页一次性加载到内存中。

  3. 共享和保护

    虚拟存储器通过页表或段表机制,实现内存的共享和保护:

    • 共享:多个进程可以共享相同的代码段或数据段,从而减少内存的冗余使用,提高内存利用率。
    • 保护:通过设置页表或段表中的访问权限,可以防止一个进程非法访问另一个进程的内存,增强系统的安全性。
  4. 动态重定位

    在虚拟存储器系统中,进程在内存中的位置可以动态变化,进而实现内存的动态管理。这意味着进程的内存地址不必固定,可以在内存和磁盘之间灵活地移动。

虚拟存储器的实现机制
  1. 分页(Paging)

    • 基本思想:将虚拟地址空间和物理内存都划分为固定大小的页和页框,通过页表实现虚拟地址到物理地址的映射。
    • 页表:每个进程拥有一个页表,存储其虚拟页号和物理页框号的映射关系。
    • 按需调页:当进程访问一个不在内存中的页时,引发缺页中断,系统从磁盘调入该页。
  2. 分段(Segmentation)

    • 基本思想:将虚拟地址空间划分为不同大小的段,每段有独立的起始地址和长度。
    • 段表:每个进程拥有一个段表,存储段的起始地址、长度和访问权限。
  3. 分页和分段结合

    • 基本思想:结合分页和分段两种技术,虚拟地址首先通过分段机制映射到一个逻辑段,然后再通过分页机制映射到物理内存。
    • 段页表:综合使用段表和多级页表,在虚拟存储器中组织和管理地址映射。

虚拟存储器的工作过程
  1. 地址生成:进程生成一个虚拟地址,这个地址包括段号(或页号)和段内偏移(或页内偏移)。
  2. 地址转换:系统通过段表和页表将虚拟地址转换为物理地址。
  3. 缺页处理
    • 检测缺页中断:如果页表项指示该页不在内存中,会触发缺页中断。
    • 调页机制:操作系统根据缺页中断,从磁盘中调入所需的页,将其装入空闲页框。
    • 更新页表:更新页表项,指示该页已驻留在内存中。
  4. 内存访问:成功转换后,系统根据生成的物理地址访问内存中的数据。

虚拟存储器的优点
  1. 扩展性:提供比实际物理内存更大的地址空间,支持大内存需求的应用程序。
  2. 内存利用率高:按需调页和共享内存页技术,提高了内存利用率。
  3. 进程隔离和安全:通过保护机制,实现进程间的内存隔离,增强系统安全性。
  4. 简化编程:提供线性、连续的地址空间,简化程序的编写和管理。

虚拟存储器的实现方法

        虚拟存储器是一种通过将物理内存与外存(例如磁盘)结合起来,为程序提供比实际物理内存更大的地址空间的技术。它可以有效提高内存的利用率,并支持更大的程序运行。

虚拟存储器的实现主要有两种方法:

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 的内存管理技术,它基于程序的局部性原理,为进程提供了比实际内存更大的地址空间。虚拟存储器通过在磁盘和内存之间移动进程页,实现了按需装入、共享和保护。了解虚拟存储器的概述,有助于我们理解操作系统中内存管理的技术细节,并提高系统的性能和稳定性。

这篇关于虚拟存储器概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043857

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

Java 多线程概述

多线程技术概述   1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间。线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换、并发执行,一个进程最少有一个线程,线程实际数是在进程基础之上的进一步划分,一个进程启动之后,进程之中的若干执行路径又可以划分成若干个线程 2.线程的调度 分时调度:所有线程轮流使用CPU的使用权,平均分配时间抢占式调度

java集合的概述

集合就是一个容器,我们可以把多个对象放入的容器中。就像水杯(假设容量可以不断扩大)一样,你可以往水杯中不断地添加水,既然是水杯,你就不能往里添加沙子,也就是说集合中添加的对象必须是同一个类型的(引用类型,而不能是基本类型)。 看到集合的介绍会让我们的想起数组,那么集合和数组有什么区别呢? 首先,数组的大小是固定的,而集合理论上大小是不限的。 其次,数组既可以存储基本数据类型的数据,也可以存储

【CSS in Depth 2 精译_023】第四章概述 + 4.1 Flexbox 布局的基本原理

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 第三章 文档流与盒模型(已

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

Unity Adressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统,并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址(Addressable)时,您可以使用该资源的地址从任何地方加载它。无论资源是在本地应用程序中可用还是存储在远程内容分发网络上,Addressable 系统都会定位并返回该资源。 您

Flutter 中的低功耗蓝牙概述

随着智能设备数量的增加,控制这些设备的需求也在增加。对于多种使用情况,期望设备在需要进行控制的同时连接到互联网会受到很大限制,因此是不可行的。在这些情况下,使用低功耗蓝牙(也称为 Bluetooth LE 或 BLE)似乎是最佳选择,因为它功耗低,在我们的手机中无处不在,而且无需连接到更广泛的网络。因此,蓝牙应用程序的需求也在不断增长。 通过阅读本文,您将了解如何开始在 Flutter 中开

类和对象的概述以及this指针的应用

定义 类是一种用户自定义的复合数据类型,即包括表达属性的成员变量,也包括表达行为的成员函数                                                                                                                                         类可用于表达那些不能直接与内置基