跳转至

段页式存储管理

段页式存储管理结合了段式存储管理分页存储管理的优点,适应了不同需求的同时,也克服了单一管理方式的一些局限。

概念与优点

  • 段式存储管理:支持用户的编程需求,将程序分为多个逻辑段,每个段具有独立的意义,如主程序、子程序、数据等。然而,段式存储管理要求每个段占据主存的连续区域,这在实际中可能会导致内存碎片问题。
  • 分页存储管理:将内存分为大小相同的页面,解决了内存碎片问题,但它忽略了程序的逻辑结构。
  • 段页式存储管理:结合了两者的优点。它允许用户以段为单位组织程序,但每个段内部又分为多个页,从而使得段在物理内存中不必是连续的。这样既能保持段式存储的逻辑清晰性,也能享受分页管理在内存分配上的便利。

  • 段页式存储管理的逻辑地址格式如下:

逻辑地址格式

在段页式存储管理中,逻辑地址被划分为三部分:

  • 段号 (S):指定逻辑地址对应的段。
  • 页号 (P):指定段内的页面。
  • 页内地址 (W):指定在页面中的具体地址。

段表与页表

  • 每个作业的主存映像表包括一个段表和多个页表
  • 段表包含每个段的页表的起始地址和长度。
  • 每个页表包含段内每个页的逻辑页号与主存物理块号的对应关系。

地址转换过程

  • 段表查询:首先根据逻辑地址中的段号访问段表,找到该段的页表起始地址
  • 页表查询:然后根据逻辑地址中的页号查询相应的页表,获取该页的物理块号
  • 物理地址计算:最后,结合页内地址,得到最终的物理地址。

访问主存次数

在段页式存储管理中,由于需要进行三次主存访问:

  • 第一次访问段表,获取页表的起始地址;
  • 第二次访问页表,获取该页的物理块号;
  • 第三次通过页内地址计算物理地址并存取信息。

地址越界检测

  • 如果段号超出段表的最大值,或页号超出相应段的页表范围,系统会产生地址越界的程序中断。