Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS
生活随笔
收集整理的這篇文章主要介紹了
Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Windows進(jìn)程與線程學(xué)習(xí)筆記(八)—— 線程切換與TSS/FS
- 要點(diǎn)回顧
- 線程切換與TSS
- 內(nèi)核堆棧
- 調(diào)用API進(jìn)0環(huán)
- 實驗:分析SwapContext
- 線程切換與FS
- 段描述符結(jié)構(gòu)
- 分析SwapContext
- 總結(jié)
要點(diǎn)回顧
線程切換與TSS
描述:Intel設(shè)計TSS的目的是為了任務(wù)切換,但Windows與Linux并沒有使用,而是采用堆棧來保存線程的各種寄存器
思考:一個CPU只有一個TSS,但是線程很多,如何用一個TSS來保存所有線程的ESP0?
內(nèi)核堆棧
調(diào)用API進(jìn)0環(huán)
普通調(diào)用:通過TSS.ESP0得到0環(huán)堆棧
快速調(diào)用:從MSR得到一個臨時0環(huán)棧,代碼執(zhí)行后仍然通過TSS.ESP0得到當(dāng)前線程0環(huán)堆棧
實驗:分析SwapContext
線程切換與TSS相關(guān)部分
地址 4059D0 處,EAX 的來源
線程切換對TSS的其它操作
線程切換與FS
描述:
思考:在實際的使用中我們發(fā)現(xiàn),當(dāng)我們在3環(huán)查看不同線程的FS寄存器時,FS的段選擇子都是相同的,那么如何實現(xiàn)通過一個FS寄存器指向多個TEB?
段描述符結(jié)構(gòu)
分析SwapContext
總結(jié)
總結(jié)
以上是生活随笔為你收集整理的Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows进程与线程学习笔记(七)—
- 下一篇: Windows进程与线程学习笔记(九)—