ch5 虚拟内存
Objective 覆盖技术 交换技术 虚拟内存 目标 程序局部性原理 基本概念 基本特征 虚拟页式内存管理 覆盖技术 overlay 在固定分区中的主要遇到的问题是进程的大小受到分区的最大大小的限制,这将意味着一个进程将不能跨越另一个进程。为了解决这个问题,早期使用了称为覆盖(overlay) 的解决方案,覆盖技术是为了在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。这样并非所有模块都需要同时存在于内存中,实现了运行大于物理内存大小的程序的技术。 覆盖技术的原理: 将程序按照执行逻辑拆分为多个功能上相对独立的部分(overlays), 那些不会同时执行的模块共享同一块内存区域, 按时间先后来运行(分时)。 必要部分,常驻内存的代码和数据,负责管理,在某个时间片将相应的程序和数据导入或导出内存。 可选部分,在其他程序模块中实现, 平时存放在外存中, 在需要用到时才装入内存; 不存在调用关系的模块不必同时装入到内存, 从而可以相互覆盖, 即这些模块共用一个分区. 覆盖技术实例 覆盖技术说明: 有一个程序,分位A B C D E F G 六个模块,每一个模块占用了一定空间,程序的覆盖树如图所示。 问:当满足加载(和运行)该程序所需物理内存中的大小是多少? 使用覆盖技术,实际上不需要将整个程序放在主内存中。只需要在对应时间片时所需要的部分即可,其逻辑调用关系树可以分为:Root-A-D或者 Root-A-E ; Root-B-F 或 Root-C-G 部分。 Root是常驻内存,因为其需要调用A B C D E F G 六个模块,占用2KB 如图:加载与运行改程序所需的物理内存大小是多少? (a) 12 KB (b) 14 KB (c) 10 KB (d) 8 KB 答:由公式可得,最大运行层所需的物理内存为14KB,即拥有 14KB 大小的分区就可以运行上图任意一个分区...