缝合怪!!!
分页、分段的对比
分段+分页=段页式管理
先将进程按逻辑模块分段,再将各段分页
段页式管理的逻辑地址结构
段号+页号+页内偏移量
段号的位数:决定了每个进程最多可以分为几个段。
页号的位数:决定了每个段最大有多少页。
页内偏移量:决定了页面的大小、内存块大小。
段页式管理的地址结构是二维的。
段表、页表
每个段对应一个段表项,每个段表项由段号、页表长度、页表存放块号(页表起始地址)组成,段号是隐含的。
每个页面对应一个页表项,每个页表项由页号、页面存放的内存块号组成。每个页表项长度相等,页号是隐含的。
地址变换
在进程上处理及之前,会从PCB中拿出段表始址F和段表长度M放到段表寄存器中。
- 根据逻辑地址得到段号S、页号P、页内偏移量W。
- 对比段号和段表长度检查是否越界。
- 根据段号和段表始址、段表项长度计算出段表项的存放地址为F+S* 段表项长度。
- 检查页号是否越界。
- 根据页表存放块号、页号查询对应的页表项。
- 根据内存块号、页内偏移量拼接最终得到物理地址。