内存管理与虚拟存储技术解析
立即解锁
发布时间: 2025-08-14 01:36:58 阅读量: 7 订阅数: 25 


计算机系统与网络通信精要
### 内存管理与虚拟存储技术解析
#### 1. 内存管理概述
内存管理是对程序和数据在内存中的有计划组织。其主要目标是让程序能尽可能简单地找到可用空间,以便加载和执行,同时满足各种缓冲区所需的额外空间。次要目标是最大化内存使用,尽量减少内存浪费。
在现代,几乎所有的内存管理都采用虚拟存储技术,它能让系统看起来拥有比实际物理内存大得多的内存空间。不过,在虚拟存储技术出现之前,有效的内存管理是一个难题。可能存在要运行的程序数量超过物理内存空间容纳能力的情况,甚至单个程序也可能因过大而无法完全装入内存。而且,大多数程序编写时都假设会连续加载到一个单独的空间,这就要求每个空间都足够大来容纳相应的程序,这使得内存管理模块需要进行复杂的调度。
另外,调度和内存管理之间也存在潜在关系。内存的大小限制了可调度和分派的进程数量。例如,如果内存只能容纳一个进程,那么调度算法就只能是单任务处理。随着更多程序能装入内存,系统效率会提高,因为原本进程阻塞时浪费的时间现在可以被有效利用。但当进程数量进一步增加到一定程度后,每个进程的驻留时间会开始增加,因为可用的 CPU 时间要分配给更多进程,且新进程还在不断加入。不过,在合理范围内,能随时加载新进程是理想的,尤其是在交互式系统中,轻微的速度下降通常比告知用户没有可用资源继续工作要好。
#### 2. 传统内存管理技术 - 内存分区
内存分区是最简单的内存管理形式,它将内存空间划分为多个独立的分区。在虚拟存储技术引入之前,这是常用的方法,如今仅在小型嵌入式系统中使用,因为这些系统中同时运行的程序数量少且易于控制,每个分区用于一个单独的程序。
内存分区有两种不同形式:
- **固定分区**:将内存划分为固定大小的空间,例如 MINOS 内存就采用固定分区管理。
- **可变分区**:使用最佳适配、首次适配或最大适配算法,在有足够内存空间的地方加载程序。最佳适配算法使用能容纳程序的最小空间;首次适配算法直接选择第一个能容纳程序的可用空间;最大适配算法(有时也称为最差适配)使用最大的可用空间,理论上这样能为其他程序留下最大可能的空间。
然而,分区方法并不适合现代计算系统,原因主要有两点:
- **内存碎片化**:无论采用哪种分区方法,都会导致内存碎片化。碎片化意味着内存的使用方式使得存在一些小块的可用内存,如果将它们合并起来,足以加载一个或多个额外的程序。内部碎片化指分配给程序但程序不需要且无法在其他地方使用的内存,固定分区会导致内部碎片化;外部碎片化指未分配但太小而无法使用的内存,可变分区在一段时间后会导致外部碎片化,因为用一个程序替换可用空间中的另一个程序几乎总会留下一些剩余空间,最终可能需要内存管理器移动程序来回收这些空间。
- **难以找到足够大的空间**:现代大多数程序的大小足够大,对内存进行分区会使找到足够大的空间来同时容纳普通用户日常期望运行的所有程序和数据变得更加困难。
下面是内存分区相关情况的表格总结:
| 分区类型 | 特点 | 适用于 | 问题 |
| ---- | ---- | ---- | ---- |
| 固定分区 | 内存划分为固定大小空间 | 小型嵌入式系统 | 内部碎片化 |
| 可变分区 | 根据算法选择可用空间加载程序 | 小型嵌入式系统 | 外部碎片化 |
#### 3. 虚拟存储技术
传统的内存管理方案存在三个主要问题:
- **碎片化导致难以找到可用空间**:随着系统运行,碎片化使得找到足够大的开放空间来容纳新程序变得越来越困难。
- **地址调整问题**:程序通常假设从内存位置 0 开始加载和执行,但实际上只有一个程序能在该位置加载,其他程序必须从其他地址开始加载,这就需要操作系统的程序加载器仔细调整受影响指令的地址字段。
- **内存不足**:通常没有足够的内存来同时加载所有想要执行的程序及其资源。
虚拟存储(或虚拟内存)是解决内存管理问题的几乎被普遍接受的解决方案。它结合了操作系统软件和专用硬件来模拟满足现代系统管理需求的内存,主要实现方法是分页。
#### 4. 分页和帧
- **帧**:假设将内存划分为块,这些块称为帧。通常所有帧的大小相等,一般为 1KB - 4KB。帧的大小是根据特定硬件架构的设计参数永久
0
0
复制全文
相关推荐









