分页、分段管理方式中最大的优缺点
优点 | 缺点 | |
---|---|---|
分页管理 | 内存空间利用率高,不会产生外部碎片,只会有少量的页内碎片 | 不方便按照逻辑模块实现信息的共享和保护 |
分段管理 | 很方便按照逻辑模块实现信息的共享和保护 | 如果段长过大,为其分配很大的连续空间会很不方便。另外,段式管理会产生外部碎片 |
分段+分页的结合——段页式管理方式
将进程按逻辑模块分段,再将各段分页(如每个页面4KB)
再将内存空间分为大小相同的内存块/页框/物理块
将各页面分别装入各内存块中
段页式系统的逻辑地址结构由段号、页号、页内地址(页内偏移量)组成
段内地址分为页号和页内偏移量
段页式管理的地址结构是二维的。
- 段号的位数决定了每个进程做多可以分几个段
- 页号位数决定了每个段最大由多少页
- 页内偏移量决定了页面大小、内存块大小是多少
段表、页表
在段页式管理中,一个进程对应一个段表,这个段表中的每个段又对应一个页表,因此一个进程对应一个段表,但可能对应多个页表。
在段页式管理中,每个段表项由段号、页表长度、页表存放块(页表起始地址)组成。每个段表项长度相等,段号是隐含的。
每个页面对应一个页表项,每个页表项由页号、页面存放的内存块号组成。每个页表项长度相等,页号是隐含的。
如何实现地址变换
- 由逻辑地址得到段号、页号、页内偏移量
- 段号与段表寄存器中的段长度比较,检查是否越界
- 由段表始址、段号找到对应段表项
- 根据段表中记录的页表长度,检查页号是否越界
- 由段表中的页表地址、页号得到查询页表,找到相应页表项
- 由页面存放的内存块号、页内偏移量得到最终的物理地址
- 访问目标单元
需要三次访存
- 查段表
- 查页表
- 访问目标单元
可引入快表机制,以段号和页号为关键字查询快表,即可直接找到最终的目标页面存放位置。引入快表后仅需一次访存。