软考知识点——虚拟存储器基本工作原理
【摘要】 虚拟存储器是一种通过软硬件结合的技术,将主存(物理内存)和辅存(如硬盘)结合起来,为用户提供一个比实际物理内存大得多的地址空间,从而允许程序在逻辑上使用比物理内存更大的存储空间。以下是其基本工作原理的详细阐述: 一、核心思想:逻辑扩展与按需调入虚拟存储器的核心思想在于逻辑上扩展内存容量,并通过按需调入和动态置换机制,实现大容量程序的运行。具体而言:逻辑扩展:为用户程序提供一个远大于物理内存的...
虚拟存储器是一种通过软硬件结合的技术,将主存(物理内存)和辅存(如硬盘)结合起来,为用户提供一个比实际物理内存大得多的地址空间,从而允许程序在逻辑上使用比物理内存更大的存储空间。以下是其基本工作原理的详细阐述:
一、核心思想:逻辑扩展与按需调入
虚拟存储器的核心思想在于逻辑上扩展内存容量,并通过按需调入和动态置换机制,实现大容量程序的运行。具体而言:
- 逻辑扩展:为用户程序提供一个远大于物理内存的连续地址空间(称为虚拟地址空间),程序可在此空间内自由寻址,无需关心物理内存的实际限制。
- 按需调入:当程序访问的虚拟地址未映射到物理内存时,系统自动从辅存(如硬盘)中调入所需页面(或段)到物理内存,确保程序继续执行。
- 动态置换:当物理内存不足时,系统根据置换算法(如FIFO、LRU)选择部分页面(或段)换出到辅存,为新调入的页面腾出空间。
二、关键技术:分页、分段与段页式
虚拟存储器通过分页、分段或段页式管理技术,实现虚拟地址到物理地址的映射:
-
分页管理:
- 基本原理:将虚拟地址空间和物理内存均划分为固定大小的页(Page)和页框(Frame),通过页表记录虚拟页号与物理页框号的映射关系。
- 地址转换:CPU生成的虚拟地址由页号和页内偏移量组成。系统通过页表将页号转换为物理页框号,再结合页内偏移量得到物理地址。
- 特点:内存利用率高,但可能产生内部碎片(最后一页未填满)。
-
分段管理:
- 基本原理:按程序的逻辑结构(如代码段、数据段、堆段、栈段)将虚拟地址空间划分为若干段(Segment),每段有独立的长度和访问权限,通过段表记录段号与物理内存起始地址的映射关系。
- 地址转换:CPU生成的虚拟地址由段号和段内偏移量组成。系统通过段表将段号转换为物理内存起始地址,再结合段内偏移量得到物理地址。
- 特点:符合程序逻辑,便于共享和保护,但可能产生外部碎片(段长度不固定)。
-
段页式管理:
- 基本原理:结合分段和分页的优点,先将虚拟地址空间按逻辑结构划分为段,再将每段划分为页。系统通过段表记录段号与页表起始地址的映射关系,页表记录页号与物理页框号的映射关系。
- 地址转换:CPU生成的虚拟地址由段号、页号和页内偏移量组成。系统先通过段表找到页表起始地址,再通过页表找到物理页框号,最后结合页内偏移量得到物理地址。
- 特点:兼具分段和分页的优点,但地址转换过程较复杂。
三、地址转换流程:从虚拟到物理的映射
以分页管理为例,虚拟地址到物理地址的转换流程如下:
- CPU生成虚拟地址:CPU执行指令时生成虚拟地址,该地址由页号和页内偏移量组成。
- 访问页表:系统根据页号访问页表,查找对应的物理页框号。
- 检查访问权限:页表中还记录了页面的访问权限(如读、写、执行),系统检查当前访问是否合法。
- 生成物理地址:将物理页框号与页内偏移量结合,生成物理地址。
- 访问物理内存:系统根据物理地址访问物理内存,读取或写入数据。
四、页面置换算法:优化内存使用效率
当物理内存不足时,系统需通过页面置换算法选择部分页面换出到辅存。常见的页面置换算法包括:
- 先进先出(FIFO):选择最早进入内存的页面换出。实现简单,但可能产生“Belady异常”(增加页框数反而导致缺页率上升)。
- 最近最少使用(LRU):选择最近最长时间未被访问的页面换出。性能较好,但实现开销较大。
- 时钟(Clock):LRU的近似算法,通过设置访问位和修改位,模拟页面访问情况,选择合适的页面换出。实现简单且性能接近LRU。
- 最优置换(OPT):选择未来最长时间不会被访问的页面换出。理论最优,但无法实际实现,仅用于评估其他算法的性能。
五、工作集模型:预测程序内存需求
为减少缺页率,系统需预测程序未来的内存需求。工作集模型通过跟踪程序最近一段时间内访问的页面集合(称为工作集),来预测程序未来的内存需求。系统根据工作集的大小动态调整分配给程序的物理页框数,确保工作集始终驻留在内存中,从而减少缺页率。
六、实际应用:提升系统性能与多任务处理能力
虚拟存储器在实际应用中具有显著优势:
- 提升系统性能:通过按需调入和动态置换机制,虚拟存储器允许程序在逻辑上使用比物理内存更大的存储空间,从而运行更大规模的程序或处理更复杂的数据。
- 增强多任务处理能力:虚拟存储器为每个任务提供独立的虚拟地址空间,使得多个任务可以同时运行而不会相互干扰。系统通过时间片轮转或优先级调度等机制,在多个任务之间切换执行,实现多任务处理。
- 简化内存管理:虚拟存储器将用户程序与物理内存隔离,用户程序无需关心物理内存的实际分配情况,只需在虚拟地址空间内寻址即可。这简化了内存管理过程,提高了编程的灵活性和可移植性。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)