動態映射和靜態映射

先說VirtualAlloc VirtualCopy
   VirtualAlloc
首先會從我們的虛擬地址空間中申請(或者說預留)一塊虛擬空間,準備接下來要用它。注意此時,可用的物理內存並沒有減少,只是虛擬地址少了一塊可用的區域。真正把這塊之前reserved的虛擬空間映射到物理的內存區域就是由VirtualCopy來乾的,此時,MMU的頁表就會增加一個entry,來表示物理--虛擬的映射關係。


再說動態虛擬內存映射和靜態虛擬內存映射
     OEMaddressTable
只是建立了一個一級的靜態虛擬--物理的映射關係,一般給kernelNK.EXE)通過直接訪問的形式來用(OALPAtoVA)
     MmMapIOSpace
VirtualAlloc +VirtualCopy)是一種動態虛擬映射的手段,一般給驅動根據當前需要(對硬件操作)動態申請並建立映射。

 

 

   內核部分就要用這個OEMaddressTable來轉換,wince5.0 用戶態的驅動(wince6.0驅動貌似是在內核態)就要用這個VirtualAlloc+VirtualCopy來進行地址映射。

 

 

詳見:http://topic.csdn.net/u/20080918/18/f1dbb82a-dfac-484b-b298-ecdb61505ff8.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章