我只是讀了在Linux在我的OS-書是如何工作的,當我遇到這個來..沒有上下文切換的系統調用?
[...]內核作爲一個單一的,monolitic二進制創建。主要原因是提高性能。因爲所有的內核代碼和數據結構都保存在一個地址空間中,所以當進程調用操作系統函數或傳遞硬件中斷時,不需要上下文切換。
這對我來說聽起來相當驚人,它必須存儲進程的上下文才能進入內核模式來處理中斷。但是,好吧,我現在就買它。在描述進程的調度上下文的幾頁中,它說:
進程執行時發生的系統調用和中斷將使用此堆棧。
「這個堆棧」是內核存儲進程寄存器等的地方。
這不是第一次報價的直接矛盾嗎?我以某種方式錯誤地解釋它?
謝謝。自從我研究這個問題已經很長時間了,但我的印象是,硬件中斷實際上是_interrupts_執行,並立即跳轉到處理程序,而不是稍後輪詢中斷。我認爲如果進程在內核模式下執行,它仍然需要在跳轉之前存儲它的上下文,但也許這是我的錯誤?如果被調用的方法正確處理使用的寄存器,我想現在這與其他方法調用沒有什麼不同。我是否正確地使用了? – user1130005 2012-01-16 10:57:23
我的理解是進程在用戶模式下運行,並且在處理中斷之前的確有一個上下文切換到內核模式。但是,*處理*中斷不需要在單片內核中進行額外的上下文切換,而是在微內核中進行(因爲設備驅動程序駐留在用戶空間中)。 – 2012-01-16 11:07:37