Skip to content
难度基础(★)
建议时长45分钟

2.6.3 段式存储

本课核心知识点整理
本课核心知识点手绘流程图(SVG)

本节导学

页式按固定大小切分,段式按程序逻辑切分。一个段可以对应主程序、子程序、数据段、栈段等自然逻辑单位,每段长度可以不同。正因为段长不同,段式存储更贴近程序员的逻辑视角,也更便于按模块进行共享和保护。

软件设计师目前对段式考得不如页式多,重点通常是合法段地址判断:逻辑地址中的段号要存在,段内偏移量不能超过该段段长。合法后,物理地址才等于段基址加段内偏移量。

段表记录什么

段式地址通常由两部分组成:

text
段号 + 段内偏移量

段表为每个段记录至少两个关键信息:

字段作用
段基址该段在主存中的起始物理地址
段长该段允许访问的长度,用于越界检查

段的起始位置不固定,长度也不固定,所以必须通过段表记录每段在主存中的实际位置和范围。

为什么必须先判越界

段内偏移量表示“从该段起点向后偏移多少”。如果偏移量超过段长,就说明访问跑出了该段范围,可能读到其他段或无效空间。此时不能继续计算物理地址,而应判为非法段地址。

合法性判断:

0段内偏移量<段长

合法后再计算:

物理地址=段基址+段内偏移量

注意通常是“小于段长”,不是“小于等于段长”。如果某段长度为 30K,合法偏移范围是 0 到 30K-1。

与页式的对比

维度页式段式
划分依据固定大小程序逻辑意义
单位大小页大小固定段长可变
地址结构页号 + 页内地址段号 + 段内偏移量
表项核心页帧号段基址、段长
主要考点页内地址位数、查页表越界判断、基址加偏移

做题路线

  1. 先根据段号查段表,确认段号存在。
  2. 取出该段段长和段基址。
  3. 比较段内偏移量与段长;偏移量大于等于段长则非法。
  4. 合法时再用段基址加段内偏移量得到物理地址。
  5. 不要把页式的“页内地址不变、页号查页表”套到段式题里。

例题

单选
段式存储按什么划分程序?
单选
段式地址转换中,用于越界检查的是:
单选
段式存储合法时,物理地址等于:

自查要点

  1. 段式为什么更贴近程序逻辑?
  2. 段长在地址转换中起什么作用?
  3. 段式和页式最大的区别是什么?