MST
星途 面试题库

面试题:内存管理之中等难度:虚拟存储如何扩充内存空间

请阐述虚拟存储技术扩充内存空间的基本原理,包括涉及到的主要机制如分页、分段等,并说明它们是如何协同工作以实现内存空间扩充的。
31.3万 热度难度
操作系统内存管理

知识考点

AI 面试

面试题答案

一键面试

虚拟存储技术扩充内存空间基本原理

虚拟存储技术基于局部性原理,程序在运行时,并非需要一次性将全部代码和数据都加载到内存,而是部分活跃的代码和数据在内存中,其余部分可放在外存(如磁盘)。当需要用到外存中的数据时,再将其调入内存。这样在逻辑上给用户提供了一个比实际物理内存大得多的内存空间。

主要机制

  1. 分页
    • 基本概念:将程序的逻辑地址空间和内存的物理地址空间都划分成固定大小的块,程序的块称为页(Page),内存的块称为页框(Page Frame)。页和页框大小通常相等。
    • 地址映射:通过页表来实现逻辑地址到物理地址的映射。页表记录了每个页在内存中的页框号。当程序访问一个逻辑地址时,系统将逻辑地址分成页号和页内偏移量,根据页号在页表中找到对应的页框号,再与页内偏移量组合得到物理地址。
    • 优点:解决了内存碎片问题,提高了内存利用率。因为页的大小固定,分配内存时可以灵活地将不同页放入不同的页框,只要有足够的页框就能满足程序需求。
  2. 分段
    • 基本概念:将程序按照逻辑功能划分为若干个段(Segment),如代码段、数据段、栈段等。每个段有自己的段基址和段长度。
    • 地址映射:通过段表来实现逻辑地址到物理地址的映射。段表记录了每个段的段基址和段长度。当程序访问一个逻辑地址时,系统将逻辑地址分成段号和段内偏移量,根据段号在段表中找到对应的段基址,再加上段内偏移量得到物理地址,同时会检查段内偏移量是否超过段长度,以确保访问的合法性。
    • 优点:便于程序的模块化设计和管理,不同的段可以有不同的保护属性,例如代码段可以设置为只读,防止程序被意外修改。

协同工作实现内存扩充

  1. 分页与分段结合:在现代操作系统中,通常采用段页式管理方式。先将程序按逻辑功能分段,然后每个段再进行分页。这样既具有分段管理的逻辑清晰、便于保护和共享的优点,又具有分页管理能有效利用内存、解决碎片问题的长处。
  2. 内存与外存交互:当程序需要访问的数据或代码不在内存中(缺页或缺段)时,系统触发缺页中断或缺段中断。操作系统根据中断信息,从外存中找到对应的页或段,将其调入内存,同时更新页表或段表。如果内存空间不足,操作系统会采用页面置换算法(如FIFO、LRU等)将内存中暂时不用的页换出到外存,为新调入的页腾出空间,从而实现内存空间的扩充,使得程序能够在有限的物理内存上运行比其大得多的逻辑地址空间的程序。