2014-02-22 15 views
2

哪些是隻能在內核模式下運行的指令(適用於x86芯片)?我想了解用戶模式和內核模式之間的實際區別。到目前爲止,我知道地址空間的一部分只能在內核模式下訪問。這個內存空間包含驅動程序等,它們應該受到保護而不受用戶程序的影響內核模式在CPU中如何實際執行?是否有一點在CPU中變成1或類似的事情發生?哪些指令只能在內核模式下運行?

編輯:之後 答案已經在下面提供。

我只是在這裏添加了從答案中提到的鏈接複製的答案的一部分。

特權級指令

指令說明

LGDT加載一個GDT到GDTR地址

LLDT加載一個LDT的地址到LDTR

LTR裝載一個任務寄存器進入TR

MOV控制寄存器複製數據和st礦石在控制寄存器

LMSW裝入新的機器狀態字

CLTS清除任務轉換標誌控制寄存器CR0

MOV調試寄存器的數據複製,並存儲在調試寄存器

INVD無效高速緩存,而不寫回

INVLPG的Invalidate TLB入口

WBINVD無效高速緩存與寫回

HLT暫停處理器

RDMSR讀型號專用寄存器(MSR)

WRMSR寫入型號專用寄存器(MSR)

RDPMC讀取性能監視計數器

RDTSC讀時間戳計數器

+5

這是一個計算機體系結構的問題,而不是一個特定的編程問題。嘗試http://cs.stackexchange.com/ –

+0

偏離主題,我同意。但現在已經得到了答覆。 – KawaiKx

回答

4

這個問題更針對那些處理非常低級別的硬件細節的人(比如說內核程序員)比那些處理高層次問題的人(通常被稱爲軟件開發人員)。我會回答,因爲我認爲這仍然是計算機科學!

您不想運行用戶應用程序,它會突然擦除屏幕上的所有內容,擦除硬盤驅動器中的所有數據,拒絕任何硬件的訪問,完全控制CPU資源等等。非常不愉快的方式。內核是控制用戶訪問系統實用程序的主人。同樣,如果一個用戶應用程序失敗了,那麼它將會是'孤獨的'在平靜中死去!所以病毒往往以內核爲目標,以造成有意義的損害。

這樣的保護不能通過軟件有效完成。這將要求操作系統檢查用戶應用程序的每個指令,確保沒有任何惡意!一個例子是試圖直接寫入內核內存空間的例子。例如,試圖訪問地址爲0的存儲器將產生一個稱爲常規保護錯誤的中斷。轉到the link below並搜索文本「特權級別說明」。

內核模式通過配置GDTR(全局描述符表寄存器)等系統寄存器來實現。轉到the link below並搜索標題「全局描述符表」。根據該寄存器的配置,當特權級別被違反時,會產生通用保護錯誤中斷。

鏈接:http://www.brokenthorn.com/Resources/OSDev23.html

相關問題