x86内存段式管理机制

段式管理:主存按段来进行分配和管理。这种方式中不按固定的长度对主存进行划分,而是按程度模块(也叫段)的大小来对主存进行划分。程序中的一个模块、数组、表格等分别对应主存中的一个段。

段式管理的长处是主存的段与程序模块相对应,易于管理和维护。

 

段式管理 在实地址模式下与保护地址模式下是不同的操作方法。其中不同的段式管理方式也是intel x86的实地址模式与保护地址模式的本质区别。

在实地址模式下,线性地址 = 段寄存器的值*4+偏移量。  这种方式主要是把内存的寻址空间从64KB(2的16次方) 增加到1MB。

 

下面主要介绍保护地址模式

1.介绍几个寄存器

段寄存器CS,SS,DS,ES,FS,GS其中每一个寄存器对应一个相应的段描述符寄存器。“段描述符”也一个全新的数据结构。

 

x86内存段式管理机制_第1张图片

段寄存器有的内容叫作“段选择子”,形式如上图所示。

2.GDT表与 LDT表

GDT(global descriptor table)此表保存了系统中所有段的信息,每个表子项为8字节。叫做“段描述符”,所此GDT表也叫全局段描述符表。有一个GDTR寄存器,用于保存GDT表在内存中的首地址。

LDT(local descriptor table)保存了一个进程(任务)所用到的所有的段的信息,表子项也是“段描述符”。

 

x86内存段式管理机制_第2张图片

在页式存管中CR3用于保存页面目录的基地址。但请注意此地址为物理地址。

在段式存管中GDTR用于保存段描述符表的基地址,当只用到了段式存管,没有用页式存管时,GDTR的内容为物理地址。

如果使用了页式存管,则GDTR的内容为线性地址,还需要通过页式存管进行变换,CPU才能找到GDT表真正的物理地址。

你可能感兴趣的:(x86内存段式管理机制)