处理器在实施任务切换时的操作——《x86汇编语言:从实模式到保护模式》读书笔记39
处理器在实施任务切换时的操作——《x86汇编语言:从实模式到保护模式》读书笔记39
处理器可以通过以下四种方法实施任务切换:
1. call指令或者jmp指令的操作数是GDT内的某个TSS描述符的选择子;
2. call指令或者jmp指令的操作数是GDT或者LDT内某个任务门的选择子;
3. 一个异常或者中断发生时,中断号指向IDT内的某个任务门;
4. 在EFLAGS寄存器的NT位置位的情况下,当前任务执行了一个iret指令。
对于这四种方法,首先都可以得到一个TSS描述符的选择子:
对于1,指令的操作数直接就是TSS选择子;
对于2和3,任务门里包含了TSS选择子;
对于4,当前任务的TSS的任务链接域内就是TSS选择子。
这个TSS选择子就决定了要切换到哪个任务。
在任务切换时,处理器执行以下操作:
1. 取得新任务的TSS描述符的选择子(如上文所述)。
2. 检查是否允许从当前任务切换到新任务。
(1)数据访问的特权级检查规则适用于JMP和CALL指令,当前任务的CPL和新任务段选择子(TSS描述符的选择子或者任务门的选择子)的RPL必须在数值上<=目标TSS描述符或者任务门的DPL;
(2)异常、中断(int n
指令发起的中断除外)和IRET指令引起的任务切换忽略目标任务门或者TSS描述符的DPL;
(3)对于int n
指令发起的中断,要检查DPL,要求在数值上,CPL<=任务门描述符的DPL;
3. 检查新任务的TSS描述符是否已经标记为有效(P=1),并且界限也有效(>=103);
4. 检查新任务是否可用。对于以CALL,JMP,异常或者中断发起的任务切换,要求B=0;对于IRET发起的任务切换,要求B=1;
5. 检查当前任务和新任务的TSS,以及所有在任务切换时用到的段描述符已经安排到系统内存中;
6. 如果任务切换是由JMP或者IRET发起的,处理器清除当前任务的B标志;如果是由CALL指令、异常或者中断发起的,当前任务的B位保持原来的状态(=1);
7. 处理器建立EFLAGS寄存器的一个临时副本。如果任务切换由IRET指令发起,则清除副本中的NT标志;如果是由CALL、JMP、异常或者中断发起的,则保持副本中NT标志不变。
8. 保存当前任务的状态到它的TSS中:所有通用寄存器、段寄存器中的段选择子、刚才那个EFLAGS的副本,以及EIP;
9. 加载新任务的EFLAGS寄存器。如果任务切换是由CALL、异常或者中断发起的,处理器把EFLAGS的NT标志置位;如果是由IRET或JMP发起的,NT位不变。
10. 如果任务切换是由CALL、JMP、异常或者中断发起的,处理器将新任务TSS描述符中的B标志置位;如果由IRET发起,B保持原来的状态(=1);
11. 用新任务的TSS选择子和TSS描述符加载TR;
12. 新任务的TSS状态数据被加载到处理器:包括LDTR寄存器、CR3、EFLAGS、EIP、通用寄存器、段选择子;
13. 与段选择子相对应的描述符在验证后也被加载;
14. 开始执行新任务。
注意:任务切换时,新任务的特权级别是由其段寄存器CS的低2位决定的,该寄存器的内容取自新任务的TSS。
最后,再次给出那个表格,因为它太重要了。
处理器在实施任务切换时的操作——《x86汇编语言:从实模式到保护模式》读书笔记39相关推荐
- 任务切换——《x86汇编语言:从实模式到保护模式》读书笔记38
任务切换--<x86汇编语言:从实模式到保护模式>读书笔记38 本文及后面的几篇博文是原书第15章的学习笔记. 本章依然使用第13章的主引导程序. 1. 协同式多任务与抢占式多任务 有两种 ...
- X86汇编语言从实模式到保护模式17:协同式任务切换
目录 1. 多任务和任务切换概述 1.1 多任务系统 1.2 任务切换含义 1.2.1 切换任务上下文 1.2.2 上下文是什么 1.3 任务切换方式概述 1.3.1 协同式任务切换 1.3.2 抢占 ...
- ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构
★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...
- 任务切换的方法——《x86汇编语言:从实模式到保护模式》读书笔记37
任务切换的方法--<x86汇编语言:从实模式到保护模式>读书笔记37 1. 中断门和陷阱门 在实模式下,内存最低端的1M是中断向量表,保存着256个中断处理过程的段地址和偏移.当中断发生时 ...
- [书]x86汇编语言:从实模式到保护模式 -- 第15章 任务切换
# 执行结果 # TODO:字符串显示函数的滚屏部分应该是有bug. # file_02: c15_core.asm ; FILE: c13_core.asm ; DATE: 20200104 ; T ...
- x86汇编语言从实模式百度云_Intel x86 CPU 32位保护模式杂谈之任务切换 上
目录: 什么是任务 任务由什么组成 任务门描述符是什么东东?有了TSS描述符为什么要有任务门描述符? 参考文献 什么是任务 任务(task)是处理器可以分配.执行.挂起的工作单位,笔者认为和我们操作系 ...
- 32位x86处理器编程导入——《x86汇编语言:从实模式到保护模式》读书笔记08
在说正题之前,我们先看2个概念. 1.指令集架构(ISA) ISA 的全称是 instruction set architecture,中文就是指令集架构,是指对程序员实际"可见" ...
- X86汇编语言从实模式到保护模式11:指令格式及操作尺寸
目录 1. 80286的16位保护模式 1.1 80286寄存器 1.2 80286段描述符 1.3 80286保护模式内存访问 2. 指令操作尺寸 2.1 指令操作尺寸的概念 2.2 16位处理器的 ...
- [书]x86汇编语言:从实模式到保护模式 -- 第17章 中断、任务切换、分页机制、平坦模型
# 任务切换 内核任务.用户任务1.用户任务2,之前的轮询切换 利用RTC芯片的硬件中断来实现任务切换 计算机主板上有实时时钟芯片RTC,可以设置RTC芯片,使得它每次更新CMOS中的时间信息后,发出 ...
最新文章
- sql server 2008数据复制
- MySQL事务隔离级别详解
- java junit Assert断言用法示例: Assert.assertEquals(期望的结果,运算的结果)
- 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结
- 我弥留之际 - 许立志 (珍藏)
- (JAVA)正则表达式
- Ubuntu下MySQL root密码忘记的解决方法
- 冒泡排序及其三种优化方案
- mac更新之后vmware fusion下vmware tools报错
- php对blob视频加密,blob 视频加密
- JAVA 疯狂讲义 学习笔记
- ets交易软件测试简历,ETS工具使用指南
- 面试常见的26个问题
- 获取apk运行占手机RAM大小
- 《天下少年英雄》隐私政策
- 笔记本w ndows未能启动,Windows未能启动原因可能是最近更改了硬件或软件解决方法...
- Android系统应用开发
- 阿里p9 Python工程师,进阶书籍推荐
- 程序员的自我修养-读后感
- 基本面量化与美林时钟模型