Chinaunix首页 | 论坛 | 博客

  • 博客访问: 134675
  • 博文数量: 46
  • 博客积分: 2310
  • 博客等级: 大尉
  • 技术积分: 505
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-18 19:13
文章存档

2011年(14)

2010年(32)

我的朋友

分类: LINUX

2010-01-26 21:19:44

处理器提供了4个内存管理寄存器(GDTR、LDTR、IDTR和TR),用于指定分段内存管理所使用的系统表的基地址。处理器为这些寄存器加载和保存提供了特定的指令。
 
 
GDTR、LDTR、IDRTR和TR都是段基址寄存器,这些段中包含分段机制的重要信息表,GDTR、IDTR和LDTR用于寻址存放段描述符的段。TR用于寻址一个特殊任务状态段TSS(Task State Segment)。TSS段中包含当前窒息感任务的重要信息。
1.全局描述符表寄存器GDTR
GDTR寄存器中用于存放全局描述符表GDT的32位线性基地址和16位表长度值。基地址指定GDT表中字节0在线性地址空间中的地址,表长度指明GDT表的字节长度值。指令LGDT和SGDT用于加载和保存GDTR寄存器的内容。在机器刚加电或处理器复位后,默认基地址设置为0,而长度被设置成0XFFFF,在保护模式初始化过程中必须给GDTR加载一个新值。
2.中断描述符表寄存器IDTR
与GDTR的作用类似,IDTR寄存器用于存放中断描述符表IDT的32位线性基地址和16位表长度值,指令LIDT和SIDT分别用于加载和保存IDTR寄存器的内容。在机器刚加电或者处理复位后,基地址被默认设置为0,而长度值设置为0XFFFF。
3.局部描述符表寄存器LDTR
LDTR寄存器中用于存放局部描述符LDT的32位线性基地址、16位段限长和描述符属性值。LLDT和SLDT分别用于加载和保存LDTR寄存器的段描述符部分。包含LDT表的段必须在GDT表中有一个段描述符项,当使用LLDT指令把含有LDT表段的选择符加载进LDTR时,LDT段描述符的段基地址、段限长度以及描述符属性会被自动加载到LDTR中。当进行任务切换时,处理器会把新任务的段选择符合段描述符自动加载近LDTR中。在机器刚加电或者处理复位后,基地址被默认设置为0,而长度值设置为0XFFFF。
4.任务寄存器TR
TR寄存器用于存放当前任务TSS段的16位段选择符、32位基地址、16位段长度和描述符属性值。它引用GDT表中一个TSS类型的描述符。指令LTR和STR分别用于加载和保存TR寄存器的段选择符部分。当使用LTR指令把选择符加载近任务寄存器时,TSS描述符中的段基地址、段限长度以及描述符属性会被自动的加载到任务寄存器中。当执行任务切换时,处理器会把新任务TSS的段选择符和段描述符自动加载到TR寄存器中。
 
 
阅读(3559) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~