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