4GB的地址范围是0到0xFFFFFFFF;
分段机制就是把虚拟地址空间中的虚拟地址组织成一些长度可变的称为段的内存单元。
80386虚拟地址空间中的虚拟地址(逻辑地址)由一个段部分和一个偏移部分构成。
段是虚拟地址到线性地址转换机制的基础。
每个段由以下几个参数定义:
段基地址,Base Address:指定段在线性地址空间中的开始地址;基地址是线性地址,对应于段中偏移0处;
段限长,Limit:虚拟地址空间中段内最大可用偏移位置;它定义了段的长度;
段属性,Attributes: 指定段的特性,例如:是否可读,可写,可作为一个程序执行,段的特权级等;
偏移量大于段限长的虚拟地址是无意义的,如果使用会导致异常;
若访问一个段并没有得到段属性许可也会导致异常;
多个段映射到线性地址中的范围可以部分重叠或覆盖;
段的基地址、段限长以及段的保护属性存储在一个称为段描述符(Segment Descriptor)的结构项中。
Linux内核完全剖析 p90
参阅,
https://blog.csdn.net/bcbobo21cn/article/details/106126764
在16位的情况下有实模式和保护模式;到32位,80386引入了32位保护模式;只有保护模式才有段描述符;