段间跳转之任务门
任务门#
任务门的门描述符在IDT中断描述符表中或GDT全局描述符表中,任务门描述符结构简单就第四个字节的高16位为隐藏的段选择子,此段选择子指向GDT表中的一个TSS段描述符。
任务门实现任务切换#
可以用jmp far,call far 或者int n来使用任务门。
我觉得有了TSS段描述符还要使用门描述符的目的是为了支持抢占式多任务操作系统。例如用 int n指令来使用任务门进行任务切换。
- 当需要任务切换时CPU产生中断信号,然后在中断描述符表中取出任务门描述符。
- 利用任务门描述符在取出位于GDT全局描述符表中的TSS段描述符。
- 利用TSS段描述符填充TR段寄存器的不可见部分,然后将旧的任务的TSS段选择子保存到TSS段中。
- 利用TSS段中的寄存器值更改各个寄存器,然后将GDT表中当前使用的TSS段描述符的TYPE位的B位置1,表示当前任务状态忙。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】