内核模式和用户模式
2位x86系統,每個進程的空間是4GB,即地址0x00000000到0xFFFFFFFF。
為了高效調用,Windows會把操作系統的內核數據和代碼映射的系統中所有進程的進程空間中。因此4GB空間被劃分為兩個區域:用戶空間和系統空間,默認大小為各2GB。
為了保護映射到進程空間的系統代碼和數據,Windows提供了權限控制機制。也就是兩種訪問模式:用戶模式和內核模式。
處理器在硬件一級保證高優先級別的數據和代碼不會被低優先級破壞。
用戶模式:
通過windows啟動的任何一個進程都在用戶模式(user mode)下運行,在這種模式下的進程不能訪問其它進程的資源,除非通過系統API調用。在這種模式下運行的程序不能處理中斷(interrupts)和環境切換(context switching)。
?
中斷(interrupts):
CPU在運行時經常被一些事件打斷(interrupt),如計時器,鍵盤,硬盤等。這些事件就叫做中斷(interrupts)。操作系統內核必須創建一些中斷處理器(interrupts handlers)來處理這些事件。因此,當中斷出現時,操作系統就會停止當前執行的程序并轉入內核模式來之中中斷處理器來處理這些事件。事件處理器會保存當前CPU的狀態,處理事件,恢復CPU的狀態,從而使得CPU可以繼續前面運行的程序。
當一個程序希望調用windows API時,它就會觸發一個中斷(interrupt),從而使CPU進入內核模式來執行所要求的API。在API調用結束后,CPU會切換回用戶模式并繼續執行先前的程序。
總結
- 上一篇: VS2010项目配置详解
- 下一篇: Delta3d动态角色层