03 物理內存的管理

1、物理內存
<1>最大物理內存
10-10-12分頁,最多識別物理內存爲4GB(32位操作系統)
2-9-9-12分頁,最多識別物理內存爲64GB(32位操作系統)
<2>操作系統限制
爲什麼xp系統中,2-9-9-12分頁,任然無法超越4GB是受操作系統本身的限制
<3>實際物理內存
MmNumberOfPhysicalPages * 4 = 物理內存(K)
dd MmNumberOfPhysicalPages查看物理內存,以頁爲單位

2、物理內存如何管理
<1>全局數組(結構體數組)
數組指針:_MMPFN * MmPfnDatabase
數組長度:MmNumberOfPhysicalPages
dd MmPfnDatabase 查看這個數組的起始位置
<2>數組成員
kd> dt _MMPFN
nt!_MMPFN
+0x000 u1 : __unnamed
+0x004 PteAddress : Ptr32 _MMPTE
+0x008 u2 : __unnamed
+0x00c u3 : __unnamed
+0x010 OriginalPte : _MMPTE
+0x014 u4 : __unnamed

3、物理頁狀態
0:MmZeroedPageListHead
1:MmFreePageListHead
2:MmStandByPageListHead
3:MmModifiedPageListHead
4:MmModifiedNoWritePageListHead
5:MmBadPageListHead

4、操作系統的6個鏈表
壞鏈:
<1>MmBadPageListHead

零化鏈表:(是系統空閒時候進行零化的,不是程序自己清0的那種)
<2>MmZeroedPageListHead

空閒鏈表:(物理頁是週轉使用的,剛被釋放的物理頁沒有被清0,系統空閒的時候有專門的進程從這個鏈表摘物理頁,加以清零後掛入MmZeroedPageListHead)
<3>MmFreePageListHead

備用鏈表:(當系統內存不夠的時候,操作系統會吧物理內存中的數據交換到硬盤上,此時頁面不是掛到空閒鏈表上,而是掛到備用鏈表上,雖然我釋放了,但裏面的內容還是有意義的)
<4>MmStandByPageListHead

<5>MmModifiedPageListHead

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