2015-05-09 55 views
3

在這三個步驟中,這是正確的順序,還是我需要切換任何?上下文切換到內核的順序是什麼

1)保存當前狀態數據

2)打開內核模式

3)確定的中斷

+0

這可能幫助:https://stackoverflow.com/questions/19057503/switching-from-user-mode-to-kernel-mode/19078803#19078803 – Philipp

回答

0

引起如此,讓我儘量幫你搞清楚正確的順序。

  • 只有內核可以切換上下文,因爲只有內核可以訪問必要的數據,並且可以例如更改其他進程地址空間的頁表。
  • 要確定是否執行上下文切換,內核需要分析一些「輸入」。例如,可能會執行上下文切換,因爲定時器中斷被觸發,並且進程的時間片結束,或者因爲進程開始執行一些IO操作。
  • 只有內核可以保存用戶進程的狀態,因爲用戶進程在嘗試存儲它時會改變其狀態。然而,內核知道,如果它的運行,用戶進程當前中斷(因爲中斷,或因爲例如,用戶空間進程自願進入內核例如,對於一個系統調用)
+0

嗯,所以內核模式開啓的第一步。然後它保存用戶進程的狀態。然後用中斷來做其餘的事情嗎? – user2770808

+0

這聽起來正確:) –

0
  1. 的當前上下文過程首先由硬件(處理器)部分保存,然後由軟件(內核)保存。
  2. 然後,通過加載新的eip,esp和其他保存的內核上下文由來自任務狀態段(TSS)的硬件加載,從而將控制從用戶進程轉移到內核。
  3. 然後基於中斷或陷阱編號。該請求被分派給適當的處理程序。