Presentation is loading. Please wait.

Presentation is loading. Please wait.

段式存储管理(Segmentation)

Similar presentations


Presentation on theme: "段式存储管理(Segmentation)"— Presentation transcript:

1 段式存储管理(Segmentation)

2 段式存储管理 这是一种顺应用户视角的内存管理机制 程序一定是由许多段代码、数据组成。“段”是自然的逻辑单元,例如:
main program, procedure, function, method, object, local variables, global variables, common block, stack, symbol table, arrays

3 用户视角看程序

4 从逻辑地址观察“段” 1 4 2 3 1 2 3 4 用户空间 物理内存空间

5 段式管理的机制 一个逻辑地址划分成两部分: <段号, 段内偏移量>
段表(segment table) – 以段号为索引下标,将其映射至二维的物理地址 段表项内容包括 基地址 (base)– 记录该“段”在物理内存的首地址 界限 (limit) – 记录该“段”的长度

6 段式管理的机制(续) 段表基地址寄存器Segment-table base register (STBR) 指向内存中段表的首地址
段表长度寄存器Segment-table length register (STLR) 记录程序总段数,也表示段表项的总数 合法的段号 s 必须满足 s < STLR

7 示例

8 地址翻译

9 段式管理机制的分析 内存保护 每个段表项都有保护位: 有效位(1位),有效位 = 0  无效段
特权位(2位), read/write/execute

10 段式管理机制的分析(续) 内存分配 段的长度可变(区别于页),内存分配面临dynamic storage-allocation问题
first fit/best fit/worst fit/etc. 碎片,external fragmentation

11 段式管理机制的分析(续) 重定位 可以动态重定位 借助段表实现 内存共享 以“段”为最小单位,支持进程间代码共享
进程必须给予共享段以相同的段号

12 例题 下图所示分别给出了段式或页式两种地址变换示意(假定段式变换对每一段不进行段长越界检查,即段表中无段长信息)。
(1)指出这两种变换各属于何种存储管理。 (2)计算出这两种变换所对应的物理地址。

13 例题 答案: (1)由上图所示中的逻辑地址结构可知:段或页的最大个数为32。那么,如果上图b所示是页式变换,则页表中的块号都超过了块号的最大值32,所以只能是段式变换。而上图a所示恰好满足页式变换(页表中的块号均小于32)。对于页式管理,由逻辑地址的位移量位数可知,一页的大小为2kB。 (2)对上图的页式地址变换,其物理地址为 12× =25162。 对上图的段式地址变换,其物理地址为 =4586。

14 END


Download ppt "段式存储管理(Segmentation)"

Similar presentations


Ads by Google