2.6.3 段式存储
本课核心知识点整理
本节导学
页式按固定大小切分,段式按程序逻辑切分。一个段可以对应主程序、子程序、数据段、栈段等自然逻辑单位,每段长度可以不同。正因为段长不同,段式存储更贴近程序员的逻辑视角,也更便于按模块进行共享和保护。
软件设计师目前对段式考得不如页式多,重点通常是合法段地址判断:逻辑地址中的段号要存在,段内偏移量不能超过该段段长。合法后,物理地址才等于段基址加段内偏移量。
段表记录什么
段式地址通常由两部分组成:
text
段号 + 段内偏移量段表为每个段记录至少两个关键信息:
| 字段 | 作用 |
|---|---|
| 段基址 | 该段在主存中的起始物理地址 |
| 段长 | 该段允许访问的长度,用于越界检查 |
段的起始位置不固定,长度也不固定,所以必须通过段表记录每段在主存中的实际位置和范围。
为什么必须先判越界
段内偏移量表示“从该段起点向后偏移多少”。如果偏移量超过段长,就说明访问跑出了该段范围,可能读到其他段或无效空间。此时不能继续计算物理地址,而应判为非法段地址。
合法性判断:
合法后再计算:
注意通常是“小于段长”,不是“小于等于段长”。如果某段长度为 30K,合法偏移范围是 0 到 30K-1。
与页式的对比
| 维度 | 页式 | 段式 |
|---|---|---|
| 划分依据 | 固定大小 | 程序逻辑意义 |
| 单位大小 | 页大小固定 | 段长可变 |
| 地址结构 | 页号 + 页内地址 | 段号 + 段内偏移量 |
| 表项核心 | 页帧号 | 段基址、段长 |
| 主要考点 | 页内地址位数、查页表 | 越界判断、基址加偏移 |
做题路线
- 先根据段号查段表,确认段号存在。
- 取出该段段长和段基址。
- 比较段内偏移量与段长;偏移量大于等于段长则非法。
- 合法时再用段基址加段内偏移量得到物理地址。
- 不要把页式的“页内地址不变、页号查页表”套到段式题里。
例题
单选
段式存储按什么划分程序?
单选
段式地址转换中,用于越界检查的是:
单选
段式存储合法时,物理地址等于:
自查要点
- 段式为什么更贴近程序逻辑?
- 段长在地址转换中起什么作用?
- 段式和页式最大的区别是什么?