# 虚拟内存

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/12835.html | 发布：2022-11-18 | 更新：2022-11-18 | 分类：投稿分享

程序规模的增长远大于存储器容量的发展的速度，为了让更多的程序运行在有限的内存中，理想情况下，我们希望有更大、更快、更便宜的非易失性存储器。

 

在实际中的存储器情况如下：

 

![虚拟内存](https://www.mfisp.com/wp-content/uploads/2021/10/20221118003135jhmTAB.jpeg)

 

从图中我们可以得出，把容量小、速度快的存储器我们希望放在靠近CPU的地方，让CPU可以更快的运行；由于内存相对于寄存器的速度较慢，因此寄存器和内存之间还有一层Cache，Cache目的是缓存内存的数据使得CPU尽量可以从Cache中获得内存数据，而不用每次访问主存，这样保证了CPU访问数据的效率更高。

 

![虚拟内存](https://www.mfisp.com/wp-content/uploads/2021/10/20221118003225l5f1PV.jpeg)

 

操作系统支持存储器可以达到更大、更快、更便宜好用的理想状态，但是数据随着掉电会丢失的影响的情况还存在。

 

如果程序太大，超过了内存的容量，可以采用**手动的覆盖技术**，只把需要的指令和数据保存至内存中；

 

如果程序太多，超过了内存的容量，可以采用**自动的交换技术**，把暂时不能执行的程序送到外存中；

 

如果想要在有限容量的内存中，以更小的页力度为单位装入更多更大的程序，可以采用**自动的虚拟存储技术**。

 

## 覆盖技术

 

如果是程序太大, 超出了内存的容量, 可以采用手动的覆盖(overlay)技术, 只把需要的指令和数据保存在内存当中。

 

目的 : 是在**较小的可用内存中运行较大的程序**, 常用于多道程序系统, 与分区存储管理配合使用

 

**原理 :**

 

把程序按照其自身逻辑结构, 划分为若干个功能上相互独立的程序模块, 那些不会同时执行的模块共享同一块内存区域, **按时间先后来运行**。(分时共享内存区域)

 

必要部分(常用功能)的代码和数据常驻内存;

 

可选部分(不常用功能)在其他程序模块中实现, 平时存放在外存中, 在需要用到时才装入内存;

 

不存在调用关系的模块不必同时装入到内存, 从而可以相互覆盖, 即这些模块共用一个分区。

 

也就是说,程序松耦合的部分可以按需装入内存,不需要的时候放在外存中,多个不常用部分共用一个分区.

 

**A(20k)**| **B(50k)** ____ C(30k) | ____ D(30k) ____ E(20k) **F(40k)**

 

因此不需要将整个程序190k的数据全部放入内存中, 而是划分为常驻区(20k) 覆盖区0(50k)覆盖区1(40k) 压缩至了110k的内存空间使用

 

缺点 :

 

由程序员来把一个大的程序划分为若干个小的功能模块, 并确定各个模块之间的覆盖关系, 费时费力, 增加了编程的复杂度;

 

覆盖模块并从外存装入内存, 实际上是以时间延长来换取空间节省。

 

Turbo Pascal的Overlay系统单元支持程序员控制的覆盖技术。

 

## 交换技术

 

**目标**：多道程序在内存中运行时，让正在运行的程序或需要运行的程序获得更多的内存资源。

 

**实现方法**：

 

可将暂时不能运行的程序送到外存，从而获得空闲内存空间；

 

操作系统把一个进程的整个地址空间的内容保存到外存中（患处swap out），而将外存中的某个进程的地址空间读入到内存中（换入swap in）。换入和换出内容的大小为整个程序的地址空间。

 

**交换技术实现中的几个问题**：

 

交换时机的确定：何时需要发生交换？只当内存空间不够或有不够的危险时换出；

 

交换区的大小：必须足够大以存放所有用户进程的所有内存映像的拷贝；必须能对这些内存映像进行直接存取；

 

程序换入时的重定位：换出后再换入的内存位置一定要在原来的位置上吗？最好采用动态地址映射方法

 

## 覆盖与交换技术的比较

 

1.覆盖只能发生在那些相互之间没有调用关系的程序模块之间，因此程序员必须经常手动指定程序内各模块的逻辑覆盖结构；

 

2.交换技术是以在内存中的程序大小为单位来进行的，它不需要程序员给出各个模块之间的逻辑覆盖技术。

 

3.**总的来说，交换发生在内存中程序与管理程序或操作系统之间，而覆盖技术发生在运行程序的内部。**

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
