Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS
生活随笔
收集整理的这篇文章主要介绍了
Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS
- 要点回顾
- 线程切换与TSS
- 内核堆栈
- 调用API进0环
- 实验:分析SwapContext
- 线程切换与FS
- 段描述符结构
- 分析SwapContext
- 总结
要点回顾
线程切换与TSS
描述:Intel设计TSS的目的是为了任务切换,但Windows与Linux并没有使用,而是采用堆栈来保存线程的各种寄存器
思考:一个CPU只有一个TSS,但是线程很多,如何用一个TSS来保存所有线程的ESP0?
内核堆栈
调用API进0环
普通调用:通过TSS.ESP0得到0环堆栈
快速调用:从MSR得到一个临时0环栈,代码执行后仍然通过TSS.ESP0得到当前线程0环堆栈
实验:分析SwapContext
线程切换与TSS相关部分
地址 4059D0 处,EAX 的来源
线程切换对TSS的其它操作
线程切换与FS
描述:
思考:在实际的使用中我们发现,当我们在3环查看不同线程的FS寄存器时,FS的段选择子都是相同的,那么如何实现通过一个FS寄存器指向多个TEB?
段描述符结构
分析SwapContext
总结
总结
以上是生活随笔为你收集整理的Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Windows进程与线程学习笔记(七)—
- 下一篇: Windows进程与线程学习笔记(九)—