请求段页式虚拟存储管理

分段存储管理是基于用户程序结构的存储管理技术,有利于模块化程序设计,便于的扩充、动态链接、共享和保护,但会生成段内碎片浪费存储空间

分页存储管理是基于系统存储器结构的存储管理技术,存储利用率高,便于系统管理,但不易实现存储共享、保护和动态扩充。

把两者结合起来就是「请求段页式存储管理」。这是一种虚拟存储器管理技术,通过将程序分段和分页,并在需要时按需加载段和页,从而优化内存使用和程序执行效率。

基本概念

首先把整个主存分成大小相等的存储块,即页架。并由低地址开始从 0 顺序编号,记为页架号。

然后对逻辑地址按照逻辑关系进行划分

  • 先分段:将进程的逻辑地址空间按程序的自然逻辑关系分成若干个,每个段有外部段名和内部段号;
  • 后分页:将进程的每个按主存页架大小分成若干个,每段都从 0 开始顺序编号。

因此逻辑地址用三个参数表示

其中 s 为段号,p 为页号,d 为页内地址偏移量。以页架为单位进行内存分配;无需将所有段的所有页面一次性全部转入主存页架 。

数据结构

  • 作业表:登记进入系统中的所有作业及该作业段表的起始地址,
  • 段表:包含这个段是否在内存,以及该段页表的起始地址等,
  • 页表:包含该页是否在内存(中断位)、对应内存块号。

地址转换过程

逻辑地址出发,先以段号 和页号 作索引去查快表,如果找到,那么立即获得页 的页框号 ,并与位移 一起拼装得到访问内存的实地址,从而完成了地址转换。

若查快表失败,就要通过段表和页表作地址转换了,用段号 作索引,找到相应表目,由此得到 段的页表起址 ,再以 作索引得到 页对应的表目,得到页框号 ;这时一方面把 页和页框号 置换进快表,另一方面用 生成内存实地址,从而完成地址转换。

如查段表时,发现 段不在内存,产生“缺段中断”,引起系统查找 段在外存的位置,将该段页表调入内存;

如查页表时,发现 段的 页不在内存,产生“缺页中断”,引起系统查找 页在外存的位置,并将该页调入内存,当内存已无空闲页框时,就会导致淘汰页面。

img-2024-04-24 19-52-53.png

特点

优点

  • 基本上结合了段式和页式的优点,克服了两者的缺点 
  • 以页架为单位分配主存,主存利用率比段式高,消除了段式的外部碎片,无紧缩问题; 
  • 段页式的共享和保护实现与段式一样,比页式好,自需段表中的相应表目指向共享段在主存中页表地址即可。 
  • 段页式的动态扩充实现的比段式和页式都好,既不受逻辑相邻的限制,也不受物理相邻的限制。

缺点

  • 和页式一样存在页内碎片,其页内碎片比页式多。页式平均每个程序有一页有碎片,段页式则是平均每段有一页有碎片。 
  • 增加了硬件成本。 
  • 增加了软件复杂性和管理开销。