[040][x86汇编语言]第十五章 任务切换 B位 、NT位、TSS指针域 变化规则

学习笔记

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

EFLGAS标志寄存器的格式

EFLAGS标志寄存器的格式.png

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

不同任务切换对B位(TSS描述符)、NT位(EFLAGS寄存器)和任务链接域(TSS内容)的影响
  • call指令发起的切换是嵌套的,通过iret指令返回到前一个任务
假设任务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指令,不会形成任务的嵌套
使用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用于保存旧任务的各种状态数据(如TSS格式图所示);
  • TSS描述符已经加载至GDT
  • TSS本身已加载至内存
任务嵌套示意图 处理器 TSS.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,654评论 8 114
  • 本文试图用有限的篇幅来阐述80386保护模式重要知识点。本文不是一个系统全面的知识介绍,您可能需要了解相关的803...
    JeffreyLi阅读 6,625评论 0 10
  • 做开发这么久了,多线程一直都在用,却没有好好总结过.如今年底了,准备总结一波.也方便以后自己再回来看. 我不太喜欢...
    番茄炒西红柿啊阅读 2,726评论 0 0
  • 生活中,我是一个坚持奋斗,刻苦学习的学生;在家里,我是一个孝敬父母,听话懂事好孩子;在同学间,我是一个脸上天...
    Goodboy_阅读 1,345评论 0 1