分页存储管理能够有效地提高内存利用率,而分段存储管理能够很好地满足用户需要。把这两种管理技术有机地结合起来,“各取所长”,就形成新的存储管理系统——段页式存储管理系统。
段页式存储管理的基本原理如下。
①等分内存。把整个内存分成大小相等的内存块,内存块从0开始依次编号。
②进程的地址空间采用分段方式。把进程的程序和数据等分为若干段,每段有一个段名。
③段内分页。把每段划分成若干页,页面的大小与内存块相同。每段内的各个页面都分别从0开始依次编号。
④逻辑地址结构。一个逻辑地址表示由三部分组成:段号(s)、段内页号(p)和页内地址d,记作v=(s,p,d),如图6-21所示。
图6-21 段页式存储逻辑地址结构
⑤内存分配。内存的分配单位是内存块。
⑥段表、页表和段表地址寄存器。为了实现从逻辑地址到物理地址的转换,系统要为每个进程建立一个段表,还要为该进程段表中的每段建立一个页表。这样,进程段表的内容不再是段长和该段在内存的起始地址,而是页表长度和页表地址。为了指出运行进程的段表地址,系统有一个段表地址寄存器,它指出进程的段表长度和段表起始地址。(www.xing528.com)
在段页式存储管理系统中,面向用户的地址空间是段式划分,而面向物理实现的地址空间是页式划分。也就是说,用户程序逻辑上划分为若干段,每段又分成若干页面。内存划分成对应大小的块。进程映像对换是以页为单位进行的,使得逻辑上连续的段存放在分散的内存块中。
图6-22是段页式系统的地址转换机构。段页式系统的地址转换过程如下:
图6-22 段页式系统的地址转换机构
①地址转换硬件将段表地址寄存器的内容B与逻辑地址(即有效地址)中的段号s相加,得到访问该进程段表的入口地址(第s段)。
②将段s表项中的页表长度与逻辑地址中的页号p进行比较。如果页号p小于页表长度,则表示未越界,向下正常进行;否则,发中断。
③将该段的页表基址与页号p相加,得到访问段s的页表中第p页的入口地址。
④从该页表的对应页表项中读出该页所在的物理块,再用块和页内地址d拼接成访内地址。
⑤如果对应的页未在内存中,则发缺页中断,系统进行缺页中断处理。如果该段的页表未在内存中建立起来,则发缺段中断,然后由系统在内存中为该段建立页表。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。