x86内存段式管理机制

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

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

 

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

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

 

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

1.介绍几个寄存器

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

 

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

2.GDT表与 LDT表

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

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

 

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值