回答
特權進程根本無法達到的內核數據結構和代碼,因爲沒有相應的頁表項。 CPU可以防止非特權進程交換頁表。
它如何知道進程是否有特權?這必須通過某種標誌來完成,但操作系統如何確保進程不會僞造標誌本身? – kern 2011-05-01 04:54:32
@kern:進程是無特權的。操作系統在切換到用戶模式任務時設置了CPU中的標誌位,並且更改這些標誌位需要特權指令,它由CPU本身強制執行。這些標誌位未被設置的方式是在中斷服務程序期間。例如,任務計劃程序在計時器ISR中運行,因此它具有特權,並且可以更新頁面表以匹配即將開始運行的進程。 ISR完成後,標誌再次被設置爲無特權。 – 2011-05-01 13:09:11
除了安裝定時器ISR和系統調用處理程序的引導過程早期以外,每個特權例程都可以通過中斷(硬件中斷或軟件中斷(syscall))來實現。只有特權例程才能安裝中斷處理程序。 – 2011-05-01 13:11:09
閱讀關於保護
硬件視圖 的環: 1)是在作爲不同的(比如說0 =內核,1 =用戶)的控制寄存器中的位。 2)硬件訪問設備通常在用戶模式下不可用。 3)某些指令僅在內核模式下可用。 4)只能在內核模式下修改頁表。 5)中斷控制器只能在內核模式下修改。 6)其他硬件控制寄存器(如系統時間,定時器控制等)僅在內核模式下可用 。 7)內核內存在用戶模式下不可用。
抄自cs162 p套
- 1. 如何從Windows內核模式啓動用戶模式程序
- 2. Windows過濾平臺用戶模式或內核模式?
- 3. 如何從用戶模式調用/掛鉤內核模式API?
- 4. 如何做混合用戶模式/內核模式調試?
- 5. 如何從用戶模式切換到內核模式?
- 6. 用戶模式和內核模式爲用戶提供保護?
- 7. Windows驅動程序 - 用戶模式 - >內核模式下的共享內存
- 8. 用戶模式和內核模式之間的共享內存
- 9. 從內核模式調用dll C++ windows
- 10. 用戶模式同步與內核模式同步(在Linux和Windows中)
- 11. Ring0(內核模式)調試器是如何實現的?
- 12. 內核/用戶模式下的CPU
- 13. 用戶到內核模式的大圖?
- 14. 內核模式 - 是否可以訪問用戶模式?
- 15. 內核模式和用戶模式驅動程序
- 16. 從內核模式執行用戶模式可執行文件
- 17. 發送從內核模式價值到用戶模式
- 18. 從用戶模式切換到內核模式
- 19. 用戶模式與內核模式的回調函數
- 20. 內核模式到用戶模式通信
- 21. printf是否以內核模式或用戶模式運行?
- 22. 特權模式,內核模式和超級用戶模式之間的區別
- 23. 如何:在用戶模式和內核模式之間做2路通信
- 24. 如何在VC++中將信息從內核模式傳遞到用戶模式?
- 25. 內核如何知道CPU是處於用戶模式還是kenel模式?
- 26. 如何在PowerShell中獲取內核模式時間和用戶模式時間?
- 27. 產生內核模式線程 - Windows
- 28. 如何實現CBC模式?
- 29. 用戶線程(OS Windows)的內核模式堆棧是什麼?
- 30. 如何從內部卸載Windows內核模式驅動程序?
這是一個超級寬泛的問題。這本書會有你的答案:http://technet.microsoft.com/en-us/sysinternals/bb963901或者試着在你的問題上更具體一點? – 2011-04-27 16:30:35