Intel64和IA-32架构软件开发人员手册笔记1

本文是Intel64和IA-32架构软件开发人员手册的第一部分笔记,主要介绍了系统级体系结构,包括全局和局部描述符表、系统段、段描述符和门、任务状态段、中断和异常处理、内存管理和系统资源。内容涵盖段选择器、段描述符、任务状态段(TSS)、中断描述符表(IDT)、分页机制、控制寄存器以及操作系统模式等核心概念。
摘要由CSDN通过智能技术生成

#读书笔记1
##1.1系统级体系结构概览
###1.1.1 Global and Local Descriptor Tables
在受保护模式下所有的内存访问都必须经过全局描述符表(GDT)或者是局部描述符表(LDT),表中的项为段描述符。
段描述符包含段的基本地址信息、访问权限、类型和使用信息。
每一个段描述符都有相关联的段选择器,段选择器向使用它的程序提供GDT或者LDT的索引、全局或本地标志(用于选择DT)、访问权限信息。
访问段中字节的必要条件:段选择器和偏移量
段选择器提供对该段(在GDT或LDT中)的段描述符的访问。从段描述符中,处理器获得线性地址空间中段的基本地址。
偏移量提供字节相对于基本地址的位置。
注:该段必须是处理器当前操作拥有访问权限的段
许多段选择器都显示为指向段的直接指针。然而,从段选择器到相关段的实际路径总是通过GDT或LDT。
GDT的基地址保存在GDTR寄存器中,LDT的地址保存在LDTR寄存器中

在IA-32e子模式中,GDTR和LDTR寄存器都扩展到64位宽。
全局和本地描述符表在64位模式下展开,以支持64位的基本地址(16字节的LDT描述符包含64位的基本地址和各种属性)。
在兼容模式下,不展开描述符。

###1.1.2System Segments, Segment Descriptors, and Gates
除代码段、数据段、堆栈段以外,还定义了两个系统段:任务状态段(TSS)和局部描述符表(LDT)※定义了段描述符
GDT不被认为是一个段,因为它不是通过段选择器和段描述符来访问的。
门:一组特殊描述符,包括调用、中断、陷阱、任务
门的作用:为需要更高权限等级的系统过程和处理程序提供受保护的通道,给予这些程序以更高的权限
门一般比当前程序拥有更高的权限等级,通过门调用能获得更多的权限
如果调用需要更改特权级别,处理器会切换到目标特权级别的堆栈。新堆栈的段选择器是从当前正在运行的任务的TSS中获得的。
门还帮助了16位和32位代码段之间的转换,反之亦然。

在IA-32e模式下,以下描述符是16字节描述符(扩展为允许64位):LDT描述符、64位TSS、调用门、中断门和陷阱门。调用门帮助64位模式和兼容模式之间的转换。
IA32e模式不支持任务门。
在特权级别更改时,处理器不会从TSS读取堆栈段选择器。反而将它们设置为NULL。

###1.1.3Task-State Segments and Task Gates

TSS定义了任务执行环境的状态
任务执行状态包括 通用寄存器、段寄存器、EFLAGS寄存器、EIP寄存器、段选择器和三个堆栈指针(每个堆栈对应一个特权等级)
TSS还包括与任务关联的LDT的段选择器和分页结构层次体系的基地址。
所有受保护模式下的程序执行都发生在任务的上下文中(称为当前任务)。当前任务的TSS的段选择器存储在任务寄存器中。
切换任务的最简单方法是调用或跳转到新任务。这里,在CALL或JMP指令中给出了新任务的TSS的段选择器
在切换任务时,处理器执行以下操作:
1.将当前任务的状态存储在当前TSS中。
2.使用新任务的段选择器加载任务寄存器。
3.通过GDT中的段描述符访问新的TSS
4.将新任务的状态从新的TSS加载到通用寄存器、段寄存器、LDTR、控制寄存器CR3(页结构层级的基地址)、EFLAGS寄存器和EIP寄存器
5.开始执行新任务。

任务也可以通过任务门访问。任务门类似于调用门,只是它提供对TSS的访问(通过段选择器),而不是代码段。

在IA-32e模式下不支持硬件任务切换。然而,TSS仍然存在。TSS的基地址由它的描述符指定。
64位TSS包含以下对64位操作很重要的信息:
1.每个特权级别的堆栈指针地址
2.中断堆栈表的指针地址
3.IO许可位映像的偏移地址(相对TSS的基地址)
在IA-32e模式下,任务寄存器被扩展为能容纳64位基地址。

###1.1.4Interrupt and Exception Handling

外部中断、软件中断和异常都是通过中断描述符表(IDT)处理的。
IDT存储一组门描述符,它们提供对中断和异常处理程序的访问,IDT的线性地址包含在IDT寄存器(IDTR)中。
IDT中的门描述符可以是中断、陷阱或任务门描述符。
为了访问中断或异常处理程序,处理器首先通过INT、INTO、INT 3或BOUND指令从内部硬件、外部中断控制器或软件接收一个中断向量(中断号)。中断向量提供IDT的索引。
如果所选的门描述符是中断门或陷阱门,则以类似于通过调用门调用过程的方式访问关联的处理程序过程。如果描述符是任务门,则通过任务开关访问处理程序。

在IA-32e模式下,中断描述符被扩展到16字节以支持64位的基地址。这适用于64位模式和兼容模式。IDTR寄存器被扩展为容纳64位的基本地址。不支持任务门

###1.1.5Memory Management

系统架构支持内存的直接物理寻址或虚拟内存寻址(通过分页)。
当使用物理寻址时,线性地址被视为物理地址。
当使用分页时:所有代码、数据、堆栈和系统段(包括GDT和IDT)都可以使用物理内存中最近访问的页面进行分页。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值