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