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进程与线程学习笔记(九)—