本文以32位操作系统为例来介绍存储器/内存管理--分页存储管理方式。
在此方式下,操作系统会将用户程序的地址(逻辑地址)空间分为若干个段,每个段定义一组逻辑信息。例如程序段、子程序段、数据段、及堆段等,每个段也有自己的段号,每个段内都从0开始编制,并采用一段连续的地址空间,各段的长度并不一定相同。虽然每个段内都分配了一段连续的地址空间,各个段之间则可以离散的分配,不需要连续。
分段管理方式中逻辑地址的地址结构
从该地址结构可以得知,程序允许有64K个段,每个段的最大长度位64KB。
段表
系统为每个进程都建立了一张段映射表,简称段表。每个段表中有多个表项,每个表项记录了该段在内存中的起始地址(基址)和段的长度。段表的作用同样是实现从逻辑地址到物理地址的转换。
地址变换机制
系统同样也设置了段表控制寄存器用于地址变换,其中存放着段表始址和段表长度,在进行地址映射前,操作系统首先会将段号与控制寄存器中的段表长度进行比较,判断时候越界,然后根据控制寄存器中的段表始址找到段表所在的位置,再根据段号找到基址,再加上位移量W便得到了实际的物理地址。