4.3.4 分段存储管理

2025-06-03 19:27:47 更新

(一)原理

在分段存储管理方式中,作业地址空间被划分为若干个段,每个段是一组完整的逻辑信息,例如主程序段、子程序段、数据段及堆栈段等,每个段都有自己名字,都是从0开始编址的一段连续地址空间,各段长度不等。

逻辑地址:段号(名)+段内地址。允许一个作业最多有64KB个段,每个段最大长度为64 KB。

(二)段表

为每个段分配一个连续分区,进程中各个段可以离散分配到主存不同分区中。

在系统中为每个进程建立一张段映射表。每个段在表中占有一个表项,记录该段的主存起始地址(基址)和段长度,进程执行时,查找段表找到每个段所对应主存区。

段表实现从逻辑段到物理主存区的映射。

(三)地址变换

为了实现从逻辑地址到物理地址的变换功能,系统中设置了段表寄存器,用于存放段表始址和段表长度。

进行地址变换时,系统将逻辑地址中的段号S与段表长度Z进行比较。

若s>L,表示段号太大,访问越界,产生越界中断信号;

若未越界,则根据段表始址和该段段号,计算出该段对应段表项位置,读出该段在主存的起始地址,

然后检查段内地址d是否超过该段的段长SL。

若超过,即d>SL,发出越界中断信号;

若未越界,则将该段基址S'与段内地址d相加,得到要访问的主存物理地址。