386内存管理MMU描述符表(分为GDT和LDT。GDT为整个软硬件系统服务,由操作系统定义,管理所有用户程序)虽操作系统定义,但描述表的定义必须建立在硬件基础上,按照此方式,能够寻找到对应的内存地址

内存管理——描述符表(分为GDT和LDT。GDT为整个软硬件系统服务,由操作系统定义,管理所有用户程序。)虽然操作系统定义,但是描述表的定义必须建立在硬件基础上(GDT可以被放在内存的任何位置),按照此方式,能够寻找到对应的内存地址,

分段和分页 都需要类似的需找内存地址的硬件基础

分段

 分页

段描述符表是一个段描述符数组。最多可容纳8192(2^16 / 8)个8字节的描述符。分为GDT和LDT。GDT为整个软硬件系统服务,由操作系统定义,管理所有用户程序。

# 进入保护模式之前必须先定义GDT表。由于是在实模式下定义,因此GDT在0x0~0xFFFFF之间,可以进入保护模式后重新定义。

# GDTR保存了GDT表的起始地址和GDT的界限值。

# 如果有多个LDT,GDT中必须拥有所有LDT的段描述符。

GDT(百度百科)

全局描述表(GDT Global Descriptor Table):在保护模式下一个重要的数据结构。

中文名

全局描述表

外文名

Global Descriptor Table

GDT可以被放在内存的任何位置,那么当程序员通过段寄存器来引用一个段描述符时,CPU必须知道GDT的入口,也就是基地址放在哪里,所以Intel的设计者们提供了一个寄存器GDTR用来存放GDT的入口地址,程序员将GDT设定在内存中某个位置之后,可以通过LGDT指令将GDT的入口地址装入此寄存器,从此以后,CPU就根据此寄存器中的内容作为GDT的入口来访问GDT了。

GDT是保护模式所必须的数据结构,也是唯一的--不应该,也不可能有多个(这个数据结构表有且就有一个,但是表格的内容可以有很多项的,2^13=8192个描述符)。另外,正象它的名字(Global Descriptor Table)所揭示的,它是全局可见的,对任何一个任务而言都是这样。

除了GDT之外,IA-32还允许程序员构建与GDT类似的数据结构,它们被称作LDT(Local Descriptor Table),但与GDT不同的是,LDT在系统中可以存在多个,并且从LDT的名字可以得知,LDT不是全局可见的,它们只对引用它们的任务可见,每个任务最多可以拥有一个LDT。另外,每一个LDT自身作为一个段存在,它们的段描述符被放在GDT中。

参考资料
Combined Volume Set of Intel® 64 and IA-32 Architectures Software Developer’s Manuals
-----------------------------------
内存管理——描述符表
https://blog.51cto.com/u_15127559/4415562

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值