2011-04-27 61 views
2

從程序的角度來看,該怎麼做?Windows如何實現用戶模式/內核模式?

它如何避免用戶模式程序加載內核模塊並調用其功能?

+0

這是一個超級寬泛的問題。這本書會有你的答案:http://technet.microsoft.com/en-us/sysinternals/bb963901或者試着在你的問題上更具體一點? – 2011-04-27 16:30:35

回答

2

Virtual memory.

特權進程根本無法達到的內核數據結構和代碼,因爲沒有相應的頁表項。 CPU可以防止非特權進程交換頁表。

+1

它如何知道進程是否有特權?這必須通過某種標誌來完成,但操作系統如何確保進程不會僞造標誌本身? – kern 2011-05-01 04:54:32

+0

@kern:進程是無特權的。操作系統在切換到用戶模式任務時設置了CPU中的標誌位,並且更改這些標誌位需要特權指令,它由CPU本身強制執行。這些標誌位未被設置的方式是在中斷服務程序期間。例如,任務計劃程序在計時器ISR中運行,因此它具有特權,並且可以更新頁面表以匹配即將開始運行的進程。 ISR完成後,標誌再次被設置爲無特權。 – 2011-05-01 13:09:11

+0

除了安裝定時器ISR和系統調用處理程序的引導過程早期以外,每個特權例程都可以通過中斷(硬件中斷或軟件中斷(syscall))來實現。只有特權例程才能安裝中斷處理程序。 – 2011-05-01 13:11:09

1

閱讀關於保護

硬件視圖 的環: 1)是在作爲不同的(比如說0 =內核,1 =用戶)的控制寄存器中的位。 2)硬件訪問設備通常在用戶模式下不可用。 3)某些指令僅在內核模式下可用。 4)只能在內核模式下修改頁表。 5)中斷控制器只能在內核模式下修改。 6)其他硬件控制寄存器(如系統時間,定時器控制等)僅在內核模式下可用 。 7)內核內存在用戶模式下不可用。

抄自cs162 p套

相關問題