[040][x86汇编语言]第十五章 任务切换 B位 、NT位、

2018-06-28  本文已影响19人  AkuRinbu

学习笔记

《x86汇编语言:从实模式到保护模式》
https://www.jianshu.com/p/d481cb547e9f

EFLGAS标志寄存器的格式

EFLAGS标志寄存器的格式.png

不同任务切换对B位(TSS描述符)、NT位(EFLAGS寄存器)和任务链接域(TSS内容)的影响

不同任务切换对B位(TSS描述符)、NT位(EFLAGS寄存器)和任务链接域(TSS内容)的影响
假设任务1是整个系统的第一个任务

当任务1开始执行时,
  其TSS描述的B位是1,
  EFLAGS寄存器的NT位是0,表示不嵌套于其他任务。

使用call指令,从 任务1 切换到 [新]任务2 时,
  任务1,仍旧为“忙”,B位=1,NT位不变;
  [新]任务2,也变成“忙”,B位=1,NT位=1(表示嵌套与任务1中),
         并且 任务2 的TSS指针域(任务域链接)指向任务1。

通过 iret指令 返回到 任务1
  [新]任务2,B位=0 ,NT位=0,TSS指针域不变;
使用jmp指令,从任务1 切换到 [新]任务2
任务1,B位=0(表示不忙),NT位(不变);
[新]任务2,B位=1(忙),NT位(从新任务的TSS中加载);

任务嵌套 (CALL指令)

任务相关参考图

TSS(Task State Segment)任务状态段的结构
与任务相关的各部分逻辑示意图
https://www.jianshu.com/p/adb70daa6d2c

任务嵌套中TSS的作用

任务嵌套示意图 处理器 TSS.png
上一篇下一篇

猜你喜欢

热点阅读