页式管理系统能有效地提高内存利用率,而分段存储管理能反映程序的逻辑结构并有利于段的共享。
如果能将这两种存储管理方法结合起来, 就形成了段页式存储管理方式。
在段页式系统中,作业的地址空间首先被分成若干个逻辑段,每段都有自己的段号,然后再将每一段分成若干个大小固定的页。对内存空间的管理仍然和分页存储管理一样,将其分成若干个和页面大小相同的存储块,对内存的分配以存储块为单位。
在段页式系统中,作业的逻辑地址分成三部分:段号、页号和页内偏移量
段号s | 页号P | 页内偏移量W |
---|
为了实现地址变换,系统为每个进程建立一张段表,而每个分段有一个页表。
段表表项中至少包括段号、页表长度和页表起始地址,页表表项中至少包括页号和块号。
此外,系统中还应有一个段表寄存器,指出作业的段表起始地址和段表长度。
注意:在一个进程中,段表只有一个,而页表可能有多个。
在进行地址变换时,首先通过段表查到页表起始地址,然后通过页表找到页帧号,最后形成物理地址。
进行一次访问实际需要三次访问主存,这里同样可以使用块表以加快查找速度,其关键字由段号、页号组成,值是对应的页帧号和保护码。
第一次查找段表寄存器,获得段表起始地址F
第二次查找段表,获得页表起始地址D
第三次查找页表,获得物理地址E