目录
1.什么是内存管理及一些基础感念
内存管理是操作系统最重要、最复杂的任务之一。内存管理把内存视为一个资源,它可以分配给多个活动进程,或由多个活动进程共享。为有效地使用处理器和I/O设备,需要在内存中保留尽可能多的进程。
内存管理的基本工具是分页和分段。采用分页技术,每个进程被划分为相对较小的、大小固定的页。采用分段技术可以使用大小不同的块。在单独的内存管理方案中,还可以使用页段结合的技术。
要有效的使用处理器和I/O设备,就需要在内存中保留尽可能多的进程。此外,还需要解除程序在开发时对程序使用内存大小的限制。解决这两个问题的途径是使用虚拟内存技术。采用虚拟内存技术时,所有的地址访问都是逻辑访问(见第3部分),并在运行时转换为实地址。这就允许一个进程位于内存中的任何地址,并且这个地址可随时间变化。虚拟内存技术还允许将进程划分为块。在执行期间,这些块在内存中不需要一定是连续的,甚至在运行时不需要该进程的所有块都在内存中。
虚拟内存管理方案要求硬件和软件的支持。硬件支持由处理器提供,包括把虚拟地址动态转换为物理地址,当被访问的页或段不在内存中时产生一个中断。这类中断触发操作系统中的内存管理软件。
与操作系统支持内存管理相关的设计问题有如下几种:
- 读取策略:进程页可在请求时读取,或使用预先分页策略,按簇一次读取多页。
- 放置策略:对纯分段系统,读取的段必须匹配内存中的可用空间。①
- 置换策略:当内存装满后,必须决定置换哪个页或哪些页。
- 驻留集管理:换入一个特定的进程时,操作系统必须决定给该进程分配多少内存。这既可以在进程创建时静态分配,也可以动态地变化。
- 清除策略:修改过的进程页可在置换时写出,或使用预约式清除策略,按簇一次写出多页。
- 加载控制:加载控制主要关注任何给定时刻驻留在内存中的进程数量。
①放置算法:当把一个进程装入或换入内存时,如果内存中有多个足够大的空闲块,那么操作系统必须确定要为此进程分配哪个空闲块。有三种放置算法,最佳适配(Best-fit):选择与要求大小最接近的块;首次适配(First-fit):从头开始扫描内存,选择大小足够的第一个可用块;下次适配(Next-fit):从上一次放置的位置开始扫描内存,选择下一个大小足够的可用块。
2.基本术语介绍
页框 |
内存中固定长度的块 |
页 |
固定长度的数据块,存储在二级存储器中(如磁盘)。数据页可以临时复制到内存的页框中。如:进程的一部分页写入内存的页框中。 |
段 |
变长数据块,存储在二级存储器中。这个段可以临时复制到内存的一个可用区域中(分段),或可以将一个段分为许多页,然后将每页单独复制到内存中(分页与分段相结合)。 |
虚拟内存 |
在存储分配机制中,尽管备用内存是主存的一部分,但它也可被寻址。程序引用内存使用的地址与内存系统用于识别物理存储站点的地址是不同的,程序生成的地址会自动转换为机器地址。虚拟存储的大小受计算机系统寻址机制和可用的备用内存量的限制,而不受主存储位置实际数量的限制。 |
虚拟地址 |
在虚拟内存中分配给某一位置的地址,它使得该位置可被访问,就好像是主内存中的一部分那样。 |
虚拟地址空间 |
分配给进程的虚拟存储 |
地址空间 |
表示某进程的内存地址范围 |
实地址 |
内存中存储位置的地址 |
重定位 |
进程被换出内存,在写入内存的不同区域,确定其在内存中的位置 |