海豚瀏覽器 2013.5. 10 號 實習生筆試 第一選擇題
有關os核心模式正確的是:
核心模式中所有進程共用同一個地址空間
系統調用一定會切換到核心模式中執行
核心模式中未處理的異常會導致系統崩潰
驅動程式主要是在核心模式中執行
32位x86系統,每個進程的空間是4GB,即地址0x00000000到0xFFFFFFFF。
為了高效調用,Windows會把作業系統的核心資料和代碼映射的系統中所有進程的進程空間中。因此4GB空間被劃分為兩個地區:使用者空間和系統空間,預設大小為各2GB。
為了保護映射到進程空間的系統代碼和資料,Windows提供了許可權控制機制。也就是兩種訪問模式:使用者模式和核心模式。
處理器在硬體一級保證高優先順序別的資料和代碼不會被低優先順序破壞。
對x86處理器來說,沒有任何寄存器表明處理器當前處於何種模式下,優先順序知識代碼或資料所在的記憶體段或頁的一個屬性
模式切換的兩種方式:非強制中斷、快速系統調用指令
使用者模式:
通過windows啟動的任何一個進程都在使用者模式(user mode)下運行,在這種模式下的進程不能訪問其它進程的資源,除非通過API調用。在這種模式下啟動並執行程式不能處理中斷(interrupts)和環境切換(context switching)。
中斷(interrupts):
CPU在運行時經常被一些事件打斷(interrupt),如計時器,鍵盤,硬碟等。這些事件就叫做中斷(interrupts)。作業系統核心必須建立一些中斷處理器(interrupts handlers)來處理這些事件。因此,當中斷出現時,作業系統就會停止當前執行的程式並轉入核心模式來之中中斷處理器來處理這些事件。事件處理器會儲存當前CPU的狀態,處理事件,恢複CPU的狀態,從而使得CPU可以繼續前面啟動並執行程式。
當一個程式希望調用windows API時,它就會觸發一個中斷(interrupt),從而使CPU進入核心模式來執行所要求的API。在API調用結束後,CPU會切換回使用者模式並繼續執行先前的程式。
環境切換(Context switching)
環境切換是由作業系統來執行的,環境切換的步驟如下:
(1)儲存當前程式的運行狀態
(2)指出下一個將要啟動並執行程式
(3)恢複另一個進程的狀態