《intel开发手册卷3》读书笔记1

1、CPU工作模式

        1)实模式:8086的寄存器只有16位,我们也习惯于称8086的工作模式为1·6位模式。后续的CPU为了保持兼容性,在芯片上了电以后,还必须运行于16位模式之下。这种模式还有个正式的名字叫做实模式。在实模式下,程序是不能通过内存管理单元间接访问物理内存的,而是直接访问物理内存。访问方式是通过“段寄存器:段内偏移”这种形式,计算方式为:

        物理地址 = 段寄存器 << 4 + 段内偏移

实模式的特点是直接操作物理内存,但是内存管理容易出错,要十分小心,代码编写和调试都很困难。

        2)保护模式:经过十年的发展,X86 CPU 迎来了历史上使用最广泛、影响力最大的 32 位 CPU,这就是 i386 芯片。i386 与 8086 的一个很大的不同,就是它采用了全新的保护模式。这个体现在,i386 中的段式管理机制,相比 8086 发生了重大变化;同时,i386 芯片在段式管理的 基础上,还引入了页式管理。i386 在完成各种初始化动作以后,就会开启页表,从此程序员就不必再直接操作物理内存 的地址空间了,代替它的是线性地址空间。而且由于段和页都能提供对内存的保护,安全 性也得到了提升,所以这种工作模式被称为保护模式(Protection Mode)。i386 的保护 模式是一种段式管理和页式管理混合使用的模式。比实模式,i386 中的保护模式, 采用了页式管理,但它没有彻底放弃 8086 的段式管理,而是将段寄存器中的值由段基址 变成了段选择子。段选择子本质是 GDT 表的下标值,段基址都转移到 GDT 中去了。

除了段页式内存管理这个不同之外,保护模式和实模式的区别还体现在中断描述符表(IDT)上。IDT 是保护模式的一个重要组成部分,它保存着 i386 中断服务程序的入口地 址。 X86 架构的 CPU 在上电以后, 为了与 8086 保持兼容,还是运行在 16 位实模式下,也就是说所有访存指令访问的都是物 理内存地址。在启动操作系统后,才会切换到保护模式下进行工作
2、GDT和LDT
当在保护模式下运行时,所有内存访问都会通过全局描述符表 (GDT) 或可选的本地描述符表 (LDT),如图 2-1 所示。这些表包含称为段描述符的条目。段描述符提供段的基地址以及访问权限、类型和使用信息。每个段描述符都有一个关联的段选择器。段选择器为使用它的软件提供了 GDT 或 LDT 的索引(其关联段描述符的偏移量)、全局/局部标志(确定选择器是指向 GDT 还是 LDT)以及访问权限信息。 要访问段中的字节,必须提供段选择器和偏移量。段选择器提供对段(在 GDT 或 LDT 中)的段描述符的访问。从段描述符中,处理器获得线性地址空间中段的基地址。然后,偏移量提供相对于基地址的、字节级别的 偏移量。该机制可用于访问任何有效的代码、数据或堆栈段,前提是可以从处理器运行的当前特权级别 (CPL) 访问该段。 CPL被定义为当前执行代码段的保护级别。
GDT 不被视为段,因为它不通过段选择器和段描述符来访问。 TSS 和 LDT 具有为其定义的段描述符

TSS(见图2-1)定义了任务执行环境的状态。它包括通用寄存器、段寄存器、EFLAGS 寄存器、EIP 寄存器以及带有三个堆栈段(每个特权级别一个堆栈)的堆栈指针的段选择器的状态。 TSS 还包括与任务关联的 LDT 的段选择器以及分页结构层次结构的基地址。

保护模式下的所有程序执行都发生在任务(称为当前任务)的上下文中。当前任务的 TSS 的段选择器存储在任务寄存器中。切换到任务最简单的方法是调用或跳转到新任务。这里,新任务的 TSS 的段选择器在 CALL 或 JMP 指令中给出。在切换任务时,处理器执行以下操作:

        1) 将当前任务的状态存储在当前TSS中。

        2) 将新任务的段选择器加载到任务寄存器中。

        3.)通过GDT 中的段描述符访问新的TSS。

        4)将新任务的状态从新 TSS 加载到通用寄存器、段寄存器、LDTR、控制寄存器 CR3(分页结构层次结构的基地址)、EFLAGS 寄存器和 EIP 寄存器中。

        5)开始执行新任务。

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

外部中断、软件中断和异常都是通过中断描述符表(IDT)来处理的。IDT 存储门描述符的集合,提供对中断和异常

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值