Skip to content

基本分段

考情分析

分段常与分页对比出题,属于 🔥🔥 中高频考点。

分页对用户完全透明,但程序天然就有"代码段""数据段""栈段"这样的逻辑边界——能不能按这种自然结构来划分内存,让共享和保护更直观?

分段的思想

分页是从系统管理角度出发的(固定大小、对用户透明),而分段是从用户视角出发——按照程序的自然逻辑结构划分。

一个程序可以分为:代码段、数据段、栈段等。每个段有自己的段名(段号)段内偏移。打个比方,如果分页是把一本书按固定页数裁成等大的小册子,分段就是按章节来拆——每章长短不一,但语义完整。

逻辑地址结构

逻辑地址 = 段号 S + 段内偏移 W

|← 段号 S →|← 段内偏移 W →|

与分页不同:各段的长度不固定

段表

段号段基址段长
040K10K
180K20K
2120K15K

地址变换

注意:分段需要检查两次越界(段号越界 + 段内偏移越界)。

交互可视化

加载可视化中...

分页 vs 分段

比较维度分页分段
划分依据系统自动按固定大小划分用户按逻辑结构划分
页/段大小固定不固定
地址空间一维(页号+偏移)二维(段号+偏移)
碎片有内碎片有外碎片
共享不方便(代码可能跨页)方便(一个段就是一个逻辑单元)
动态增长不支持支持(段可以增长)
对用户透明(用户感知不到分页)可见(用户知道段的存在)

分段方便共享和保护

由于段是按逻辑功能划分的,共享一个函数只需共享对应的代码段,保护也可以按段设置权限。分页中同一个函数可能跨越多个页面,共享和保护都不方便。

易错

分页和分段的碎片类型经常混淆:

  • 分页:有碎片(最后一页可能不满),无外碎片
  • 分段:有碎片(段间空隙),无内碎片
  • 段页式:有碎片(段内最后一页不满),无外碎片

记忆技巧:固定大小划分(分页)→内碎片;可变大小划分(分段)→外碎片。

考研高频考点

  • 🔥🔥🔥 分页与分段的对比(选择题必考)
  • 🔥🔥🔥 分段的地址变换过程(两次越界检查)
  • 🔥🔥 分段方便共享和保护的原因
  • 🔥🔥 分段是二维地址空间
  • 🔥 分段有外碎片无内碎片

分段方便共享但有外碎片,分页消除外碎片但不方便共享——能不能两者兼得?下篇来看段页式管理。

真题练习

相关真题(3题)

2019Q28选择题2分

分段共享:共享段在不同进程中可以有不同段号

2016Q28选择题2分

分段地址转换:段长300<段内地址400,产生越界异常

2010Q28选择题2分

分段地址:32位地址-8位段号=24位段内偏移,最大段长2²⁴