亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標題:
虛擬內(nèi)存和物理內(nèi)存
[打印本頁]
作者:
yangfan876
時間:
2013-03-10 16:56
標題:
虛擬內(nèi)存和物理內(nèi)存
大家好,最近開始了解內(nèi)存管理,有個問題很是困惑:線性地址可以通過頁表來找到物理地址,我不明白的是找到的這個物理地址是實際的數(shù)據(jù)存放的那個4K的首地址,還是找到的是相關(guān)的page結(jié)構(gòu)體的地址,然后通過page中的某個指針指向真正存放數(shù)據(jù)的4K的地址空間,或者是那個page結(jié)構(gòu)體就在那4K空間里?求大神指教....
作者:
魔鬼的驚嘆
時間:
2013-03-10 17:31
實際的數(shù)據(jù)存放的那個4K的首地址
作者:
yangfan876
時間:
2013-03-10 17:55
回復(fù)
2#
魔鬼的驚嘆
你的意思是page結(jié)構(gòu)體中放了4K空間的首地址?哪通過頁表加偏移得到的物理地址是那個?
作者:
yangfan876
時間:
2013-03-10 17:58
回復(fù)
2#
魔鬼的驚嘆
你的意思應(yīng)該是通過頁表加偏移找到了4K空間的首地址,對嗎?哪page結(jié)果體是如何跟這個4K空間建立關(guān)系的?page那個變量是指向這4K空間的?我初學(xué),呵呵....還請指教.....
作者:
chishanmingshen
時間:
2013-03-10 20:16
跟Page結(jié)構(gòu)體沒有任何關(guān)系!
作者:
yangfan876
時間:
2013-03-10 20:56
回復(fù)
5#
chishanmingshen
不是說系統(tǒng)會對內(nèi)存中的每個頁都創(chuàng)建page結(jié)構(gòu)體么,那么這個page結(jié)構(gòu)體怎么和真實的那個物理內(nèi)存進行關(guān)聯(lián)的?
作者:
魔鬼的驚嘆
時間:
2013-03-11 07:19
通過頁表管理內(nèi)存,每個頁表中存放1024個頁表項,每個頁表項中保存了一個4k頁面的物理基地址
我這樣說我估計你還是不太明白,我建議你找本操作系統(tǒng)的書看吧,本科的教材就可以
作者:
pangxiezhou
時間:
2013-03-11 09:17
內(nèi)核中有Page解構(gòu)體數(shù)組,數(shù)組下標與內(nèi)存區(qū)域是有對應(yīng)的
作者:
a254373829
時間:
2013-03-11 09:45
不是通過頁表來管理內(nèi)存吧,頁表這個數(shù)據(jù)結(jié)構(gòu)只是用來執(zhí)行線性地址到物理的轉(zhuǎn)換,線性地址其實只是幾個頁表索引的集合,真正的物理地址存放在頁表項里面; 而page結(jié)構(gòu)體才是內(nèi)核用來管理內(nèi)存的,每個物理頁框?qū)?yīng)一個page結(jié)構(gòu),伙伴系統(tǒng)就是通過page結(jié)構(gòu)來管理物理內(nèi)存的。
回復(fù)
7#
魔鬼的驚嘆
作者:
yangfan876
時間:
2013-03-11 11:30
回復(fù)
8#
pangxiezhou
正解,我看到了應(yīng)該是mem_map,這個是struct page結(jié)構(gòu)體數(shù)組,其中下標就是對應(yīng)物理頁的頁框號。這個是ULK 3 p295最后一段的介紹,而且網(wǎng)上也有很多類似的介紹,但是我在3.5.4內(nèi)核版本中試著用內(nèi)核模塊打印出mem_map的地址和它的值卻發(fā)現(xiàn)如下情況:
static __init watch_map (void)
{
printk ("mem_map address :%p\n", &mem_map);
printk ("mem_map value%p\n", mem_map);
}
復(fù)制代碼
這個是內(nèi)核模塊代碼
結(jié)果:
[ 674.581516] mem_map address :c3c18900
[ 674.581520] mem_map value (null)
復(fù)制代碼
也就是和所mem_map中的值為NULL
而且在3.5.4中mem_map的定義并不是一個結(jié)構(gòu)體數(shù)組,而是struct page * ,是個指針類型。
73 struct page *mem_map;
復(fù)制代碼
作者:
pangxiezhou
時間:
2013-03-11 11:39
回復(fù)
10#
yangfan876
你這應(yīng)該是在內(nèi)存管理單元還沒有初始化的時候做的輸出吧,mem_map確實是page*,沒有問題。內(nèi)存管理初始化的時候應(yīng)該會根據(jù)當前內(nèi)存的大小為mem_map分配空間。如果還沒有初始化的話mem_map因該就是NULL啊。
作者:
yangfan876
時間:
2013-03-11 14:10
我貌似弄明白了....大家看看是不是這樣的:
每個物理頁框?qū)?yīng)一個page結(jié)構(gòu)體,也就是頁描述符。頁描述符是按照數(shù)組的方式組織的,這個數(shù)組的首地址存在于mem_map這個結(jié)構(gòu)體指針中。如果知道了頁框號pfn則可以通過pfn<<PAGE_SIZE獲得其物理地址,而頁框號也可以通過對應(yīng)頁描述符page的首地址來獲得:(&page-mem_map)/sizeof(struct page)。這樣就建立起了物理頁框于頁描述符之間的聯(lián)系....
作者:
yangfan876
時間:
2013-03-12 19:19
回復(fù)
11#
pangxiezhou
那個結(jié)果是我寫的一個內(nèi)核模塊打印出來的值,模塊插入是在系統(tǒng)啟動完成之后才進行的....只是這個結(jié)果很令人費解。不過我在調(diào)試內(nèi)核的時候打印出來的值就不是NULL....很是奇怪....
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2