1. 分页与分段的本质区别,目的、大小、碎片类型与地址结构如何对比,段页式如何结合两者?
分页与分段的本质区别是什么?目的、大小、碎片类型与地址结构如何对比?段页式如何结合两者?
- 分页:固定大小页,消除外部碎片,页是物理划分,无逻辑意义。
- 分段:按逻辑意义划分(代码/数据/栈),大小可变,有内部碎片。
- 地址结构:分页为页号+页内偏移;分段为段号+段内偏移。
分页(paging)把内存划分为固定大小的页/页框,目的是消除外部碎片、便于按需分页与虚拟内存,页大小固定(如 4KB),地址结构为"页号 + 页内偏移",通过页表映射,页本身无逻辑含义,可能产生内部碎片(页内未用空间)。分段(segmentation)按程序逻辑结构(代码、数据、栈)划分,段大小可变,有逻辑意义,便于共享与保护,地址结构为"段号 + 段内偏移",但段长度不同会产生外部碎片,且难以按需分页管理。段页式(segmented paging)先按逻辑分段,再在段内分页,程序按段访问,物理上按页框分配,既保留段的逻辑与共享语义,又消除外部碎片、支持按页换入换出,地址结构为"段号 + 段内页号 + 页内偏移"。现代 OS 以分页为主(硬件 MMU 支持),分段多用于保护模式或段页式作为补充。
记忆要点:分页"固定大小、消外部碎片、无逻辑";分段"逻辑意义、可变大小、有外部碎片";段页式"分段+分页、兼得两者"。碎片类型是高频考点(分页→内部、分段→外部)。