段式存储管理是实现内存访问控制的一种方式,相比于直接根据地址访问,段式访问增加了一些额外的过程以及对一些寄存器的含义进行了重新定义。参考Linux内核源代码情景分析,简要记录如下。
对段寄存器进行了重新定义,使用其高13位,然后低三位用于状态权限的控制,根据高13位指定的位置,结合低位中的描述符来确定是使用全局描述符表指针还是本地描述符表指针,在这个数据结构中以寄存器中的结果为索引找到对应的GDTR表项,根据表项来决定访问的物理地址。
后续发展形成分页存储管理,分页存储管理和分段存储管理是两码事,只不过考虑到之前的基础,分页弄到了分段之后,在分段形成线性地址后再经过分页映射形成物理地址。
在分页中用到CR系列寄存器来进行分页的控制的初始地址的给出。对地址中的位置含义进行了重新定义。在分两层的情况下,分为高10位,中间10位,低12位,高10位指明了页目录项目,中间10位指向页表项,低12位指向偏移地址。因此在每一次的映射过程中低12位就可以用作控制信息的存储。
在分段中通过将地址不变的映射为线性地址再进行分页映射。