文章标题x86汇编语言从实模式到保护模式-任务切换
来源:互联网 发布:安全阀计算软件 编辑:程序博客网 时间:2024/05/19 18:47
任务切换
LTR r/m16
这条指令的操作数可以是16位通用寄存器,也可以是指向一个16位单元的内存地址,其内容都是16位的TSS选择子。
执行这条指令,将TSS选择子加载到TR寄存器之后,处理器用该选择子访问GDT中对应的TSS描述符,将段界限和段基地址加载到任务寄存器TR的描述符高速缓存器部分。同时,处理器将该TSS描述符中的B位置“1”,也就是标志位“忙”,但并不执行任务切换
真正实现任务切换可以使用远过程调用指令CALL,或者远跳转指令JMP。在这两种情况下,CALL和JMP指令的操作数是任务的TSS描述符选择子。以下是两个例子:
CALL 0x0010:0x00000000
JMP 0x0010:0x000000
用于发起任务切换,call指令和jmp指令也有不同之处。使用call指令发起的任务切换类似于因中断发起的任务切换。这就是说,由call指令发起的任务切换是嵌套的,当前任务(旧任务)TSS描述符的B位保持原来的“1”不变,EFLAGS寄存器的NT位也不发生变化;新任务TSS描述符的B位置“1”,EFLAGS寄存器的NT位也置“1”,表示此任务嵌套于其他任务中。同时,TSS任务链域的内容改为旧任务的TSS描述符选择之。
用CALL指令发起的任务切换,可以通过iret指令返回到前一个任务。此时,旧任务TSS描述符的B位,以及EFLAGS寄存器的NT位都恢复到“0”
CALL far [es:ecx+0x14]
es:ecx指向新任务的TCB,TCB内偏移为0x14的地方,是任务的TSS基地址,再往后是TSS选择子。当处理器发现得到的是一个TSS选择子,就会执行任务切换。
第一步:因为当前正在执行的任务是由任务寄存器TR指示的,把CPU中的每个寄存器的内容保存到由TR寄存器指向的TSS中
第二步:处理器用得到的TSS选择子访问GDT,取得新任务的TSS描述符,并从该TSS中恢复CPU各个寄存器的内容,将TSS描述符中的B位置“1”,EFLAGS寄存器的NT位置“1”
第三步:将新任务的TSS选择子加载到TR寄存器中。将TSS描述符加载到任务寄存器TR的描述符高速缓存器部分,处理器即将开始执行新的任务
- 文章标题x86汇编语言从实模式到保护模式-任务切换
- 任务切换的方法——《x86汇编语言:从实模式到保护模式》读书笔记37
- 任务切换——《x86汇编语言:从实模式到保护模式》读书笔记38
- 处理器在实施任务切换时的操作——《x86汇编语言:从实模式到保护模式》读书笔记39
- 《X86汇编语言:从实模式到保护模式》读书笔记之引言
- X86汇编语言从实模式到保护模式(一)
- 《x86汇编语言:从实模式到保护模式》读书笔记之后记
- 任务和特权级保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记27
- 任务和特权级保护(二)——《x86汇编语言:从实模式到保护模式》读书笔记32
- 任务和特权级保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记34
- 任务和特权级保护(四)——《x86汇编语言:从实模式到保护模式》读书笔记35
- 任务和特权级保护(五)——《x86汇编语言:从实模式到保护模式》读书笔记36
- 进入保护模式(一)——《x86汇编语言:从实模式到保护模式》读书笔记12
- 进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14
- 进入保护模式(三)——《x86汇编语言:从实模式到保护模式》读书笔记17
- x86分页机制——《x86汇编语言:从实模式到保护模式》读书笔记42
- 存储器的保护(二)——《x86汇编语言:从实模式到保护模式》读书笔记19
- 存储器的保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记18
- 业务上云,去争取更大的胜利!
- jq获取同一类名的但处于不同父元素下的当前元素的索引值问题
- HTTP状态码对照表
- bean标签scope属性
- 安卓6.0注意的权限问题
- 文章标题x86汇编语言从实模式到保护模式-任务切换
- c++ string 转 int
- C++Primer第五版 第七章习题答案(31~40)
- Serverless,下一个趋势?
- 真正解决ASP.NET每一个页面首次访问超级慢的问题
- Android中自定义设置日期
- 使用FormAuthenticationFilter中的重要方法实现了表单验证
- 工控协议Fuzzing开源工具Aegis
- java用jacob批量word转xml