用戶態切換到內核態

1.切換時機

  • 1、發生系統調用時
  • 2、產生異常時
  • 3、外設產生中斷時

2.用戶態到內核態的切換過程

1.讀取tr寄存器,訪問TSS段

  • TSS段保存內核棧信息

2.從TSS段中的sp0獲取進程內核棧的棧頂指針

  • sp:堆棧指針(Stack Pointer)寄存器,用它只可訪問棧頂。

3.在內核棧中保存當前cs,ss,eip,esp寄存器的值(地址)

  • cs 爲代碼段寄存器
  • ss 爲棧段寄存器,一般作爲棧使用
  • eip:用來存儲CPU要讀取指令的地址,CPU通過EIP寄存器讀取即將要執行的指令
  • esp:用戶棧棧頂指針

4.把內核代碼選擇符寫入CS寄存器,內核棧指針寫入ESP寄存器,把內核入口點的線性地址寫入EIP寄存器

  • 此時,CPU已經切換到內核態,根據EIP中的值開始執行內核入口點的第一條指令。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章