操作系统中的存储器管理是至关重要的,它涉及到如何有效地利用有限的内存资源来支持多个程序并发执行。本章主要探讨了虚拟存储器的概念及其在实际操作系统中的应用,包括基本的存储分配方式以及请求分页和请求分段系统。
虚拟存储器的基本概念是允许程序的一部分在内存中运行,其余部分则存储在外存,通常是磁盘上。这种技术通过请求调入和页面/段的置换策略实现了逻辑内存容量的扩展,使得系统能够运行比实际内存更大的程序。虚拟存储器的运行速度接近内存,但成本接近外存,因为它依赖于快速的磁盘I/O操作。时间局部性原理是虚拟存储器设计的基础,它指出程序在短时间内访问的地址往往集中在一定范围内。
请求分页系统是虚拟存储器的一个实例,它允许程序在启动时并不需要完全加载到内存,而是按需调入。当访问的页不在内存时,产生缺页中断,操作系统负责将所需页从外存调入内存,并可能淘汰其他不再使用的页。在请求分页系统中,每个进程都有一个页表,其中包含页号、块号、状态位(表示页是否在内存)、修改位(记录页是否被修改过)以及外存地址。如果内存满且无空闲块,需要选择一个页进行淘汰,通常依据某种页面置换算法,如LRU(最近最少使用)或FIFO(先进先出)。
请求分段系统与请求分页类似,但它以逻辑段而不是页作为基本单位。每个段代表程序的一部分,例如函数或数据结构。段表包含段名、段长、存取方式、访问字段、修改位、存在位、增补位以及外存地址。当访问的段不在内存时,产生缺段中断,操作系统会调入相应的段。与分页系统相比,分段系统更利于数据的组织和共享,但也可能导致内部碎片。
地址变换是虚拟存储器的关键操作,无论是分页还是分段系统,都需要将逻辑地址转换为物理地址。在请求分页系统中,如果页不在内存,需要通过缺页中断处理机制将页面调入内存。而在请求分段系统中,如果段不在内存,则产生缺段中断,需要调入段并可能涉及内存的拼接和段的淘汰。
在选择页面淘汰策略时,需要考虑全局性能,如最小化页面替换次数和减少I/O等待时间。在实际操作系统中,还可能有其他因素如最近未使用页面、最长时间未使用页面等作为选择淘汰页的依据。练习题中的情况要求将逻辑地址转换为物理地址,这需要查找页表中的相应条目,然后根据页号和块号计算物理地址。
存储器管理是操作系统设计中的核心部分,虚拟存储技术通过有效的页面/段管理和地址变换策略,实现了内存资源的有效利用和程序的高效执行。