Posted on 2010-02-19 16:36
S.l.e!ep.¢% 閱讀(854)
評論(0) 編輯 收藏 引用 所屬分類:
Windows WDM
分頁內(nèi)存是低中斷級別的例程可以訪問的。
而非分頁內(nèi)存則是各個中斷級別的例程都可以使用的。
區(qū)別在于:
分頁內(nèi)存是虛擬內(nèi)存,在物理上未必總是能得到。
操作系統(tǒng)實現(xiàn)虛擬內(nèi)存的主要方法就是通過分頁機制。在Win32中,物理地址空間,二維虛擬地址空間和實際內(nèi)存地址是三個不同的概念。操作系統(tǒng)通過段選擇子構(gòu)成二維虛擬地址空間,每個進程有一個4G的地址空間,然后操作系統(tǒng)的內(nèi)存管理器件把每個進程映射到一維物理地址空間的不同部分,但是因為我們實際機器上大都沒有4G內(nèi)存,所以,實際內(nèi)存空間是物理地址空間的子集。
分頁管理器把地址空間劃分成4K大小的頁面(非Intel X86體系與之不同),當進程訪問某個頁面時,操作系統(tǒng)首先在Cache中查找頁面,如果該頁面不在內(nèi)存中,則產(chǎn)生一個缺頁中斷(Page Fault),進程就會被阻塞,直至要訪問的頁面從外存調(diào)入內(nèi)存中。
我們知道,在處理低優(yōu)先級的中斷時,仍可以發(fā)生高優(yōu)先級的中斷。既然缺頁過程也是一個中斷過程,那么就產(chǎn)生一個問題,即,缺頁中斷和其他中斷的優(yōu)先級的問題。如果在高于缺頁中斷的中斷優(yōu)先級上再發(fā)生缺頁中斷,內(nèi)核就會崩潰。所以在DISPATCH_LEVEL級別以上,絕對不能使用分頁內(nèi)存,一旦使用分頁內(nèi)存,就有發(fā)生缺頁中斷的可能,前面說過,這樣會導致內(nèi)核崩潰。
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/Like_Thinking/archive/2008/04/18/2304700.aspx