段页式存储管理
段页式存储管理结合了段式存储管理和分页存储管理的优点,适应了不同需求的同时,也克服了单一管理方式的一些局限。
概念与优点
- 段式存储管理:支持用户的编程需求,将程序分为多个逻辑段,每个段具有独立的意义,如主程序、子程序、数据等。然而,段式存储管理要求每个段占据主存的连续区域,这在实际中可能会导致内存碎片问题。
- 分页存储管理:将内存分为大小相同的页面,解决了内存碎片问题,但它忽略了程序的逻辑结构。
-
段页式存储管理:结合了两者的优点。它允许用户以段为单位组织程序,但每个段内部又分为多个页,从而使得段在物理内存中不必是连续的。这样既能保持段式存储的逻辑清晰性,也能享受分页管理在内存分配上的便利。
-
段页式存储管理的逻辑地址格式如下:
逻辑地址格式
在段页式存储管理中,逻辑地址被划分为三部分:
- 段号 (S):指定逻辑地址对应的段。
- 页号 (P):指定段内的页面。
- 页内地址 (W):指定在页面中的具体地址。
段表与页表
- 每个作业的主存映像表包括一个段表和多个页表。
- 段表包含每个段的页表的起始地址和长度。
- 每个页表包含段内每个页的逻辑页号与主存物理块号的对应关系。
地址转换过程
- 段表查询:首先根据逻辑地址中的段号访问段表,找到该段的页表起始地址。
- 页表查询:然后根据逻辑地址中的页号查询相应的页表,获取该页的物理块号。
- 物理地址计算:最后,结合页内地址,得到最终的物理地址。
访问主存次数
在段页式存储管理中,由于需要进行三次主存访问:
- 第一次访问段表,获取页表的起始地址;
- 第二次访问页表,获取该页的物理块号;
- 第三次通过页内地址计算物理地址并存取信息。
地址越界检测
- 如果段号超出段表的最大值,或页号超出相应段的页表范围,系统会产生地址越界的程序中断。