亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 關(guān)于多級(jí)頁表的疑問 [打印本頁]

作者: vestige    時(shí)間: 2008-03-31 22:06
標(biāo)題: 關(guān)于多級(jí)頁表的疑問
ULK上說:
使用二級(jí)分頁模式的目的在于減少每個(gè)進(jìn)程頁表所需的RAM數(shù)量,如果使用一級(jí)頁表
將需要2的20次方個(gè)表項(xiàng)來表示每個(gè)進(jìn)程的頁表。

但我認(rèn)為使用二級(jí)分頁模式不仍然需要2的20次方的表項(xiàng)來表示每個(gè)進(jìn)程的頁表嗎?(4GB)
2的10次方(頁目錄)*2的10次方(頁表)

然后ULK上又說:
二級(jí)分頁模式通過只為進(jìn)程實(shí)際使用的那些虛擬內(nèi)存區(qū)請(qǐng)求頁表來減少頁表使用的內(nèi)存。

我想問的是一級(jí)頁表不同樣可以通過只為進(jìn)程實(shí)際使用的那些虛擬內(nèi)存區(qū)來請(qǐng)求頁表嗎?
作者: vestige    時(shí)間: 2008-03-31 22:09
我又想了想,會(huì)不會(huì)是因?yàn)橐S護(hù)一個(gè)2的20次方
的數(shù)組比較麻煩?
作者: xiaozhao73    時(shí)間: 2008-04-01 01:41
二級(jí)頁表并不用全分配的,除非你用全了4G 地址空間,因?yàn)樗梢苑峙?pde(4K)+ number of pte, not all process uses 1024*pte?

one level page table you have to do full allocate or hash to allocate less space.

power pc is using hash.
作者: vestige    時(shí)間: 2008-04-01 11:28
謝謝樓上的回復(fù),是不是說如果二級(jí)頁表,就先為pde分配1024個(gè)空間,然后
按需分配pte,但是如果使用一級(jí)分頁,就需要直接分配2的20次方空間大小的
頁表?
作者: dengcainiao    時(shí)間: 2008-04-01 11:48
頁目錄空間是必須要分配的,頁目錄指向的頁表如果那段線性地址沒有使用可以不分配,達(dá)到節(jié)省內(nèi)存的效果
作者: zx_wing    時(shí)間: 2008-04-01 12:51
。。。。。。。

[ 本帖最后由 zx_wing 于 2008-4-1 16:34 編輯 ]
作者: dengcainiao    時(shí)間: 2008-04-01 14:32
LINUX2.6.11.1開始是4級(jí)頁表PGD,PUD,PMD,PT.32位的X86平臺(tái)實(shí)際只有PGD,PT兩項(xiàng)有效。

[ 本帖最后由 dengcainiao 于 2008-4-1 16:14 編輯 ]
作者: zx_wing    時(shí)間: 2008-04-01 15:31
原帖由 bluesky_jxc 于 2008-4-1 13:58 發(fā)表



32位的x86就兩級(jí)頁表,linux為了支持多平臺(tái),所以做了三級(jí),在x86下有一級(jí)映射為空。ULK上看的

。。。。。。。。。。。。

[ 本帖最后由 zx_wing 于 2008-4-1 16:34 編輯 ]
作者: dengcainiao    時(shí)間: 2008-04-01 16:21
更正一下我之前的說法。在2.6.11.1以后,Linux使用4級(jí)頁表機(jī)制。針對(duì)32位X86平臺(tái)在打開PAE以后應(yīng)該用的是3級(jí)頁表,否則是兩級(jí),其中PUD,PMD兩級(jí)均被跳過

在Pgtable.h中有如下代碼
/*
* The Linux x86 paging architecture is 'compile-time dual-mode', it
* implements both the traditional 2-level x86 page tables and the
* newer 3-level PAE-mode page tables.
*/
#ifdef CONFIG_X86_PAE
# include <asm/pgtable-3level-defs.h>
# define PMD_SIZE        (1UL << PMD_SHIFT)
# define PMD_MASK        (~(PMD_SIZE-1))
#else
# include <asm/pgtable-2level-defs.h>
#endif


[ 本帖最后由 dengcainiao 于 2008-4-1 16:25 編輯 ]
作者: dengcainiao    時(shí)間: 2008-04-01 16:22
再附上pgtable-2level-defs.h的內(nèi)容:
#ifndef _I386_PGTABLE_2LEVEL_DEFS_H
#define _I386_PGTABLE_2LEVEL_DEFS_H

/*
* traditional i386 two-level paging structure:
*/

#define PGDIR_SHIFT        22
#define PTRS_PER_PGD        1024

/*
* the i386 is two-level, so we don't really have any
* PMD directory physically.
*/

#define PTRS_PER_PTE        1024

#endif /* _I386_PGTABLE_2LEVEL_DEFS_H */
作者: dxcnjupt    時(shí)間: 2008-04-01 16:26
ia32可以用2級(jí),也可以用3級(jí),看cr寄存器的設(shè)置.
一般是開啟36bit物理內(nèi)存模式的時(shí)候用3級(jí)頁表

見intel開發(fā)者文檔第三卷第三章
-------------
剛翻了下資料就.........LS回帖真快

[ 本帖最后由 dxcnjupt 于 2008-4-1 16:28 編輯 ]
作者: zx_wing    時(shí)間: 2008-04-01 16:34
原帖由 dxcnjupt 于 2008-4-1 16:26 發(fā)表
ia32可以用2級(jí),也可以用3級(jí),看cr寄存器的設(shè)置.
一般是開啟36bit物理內(nèi)存模式的時(shí)候用3級(jí)頁表

見intel開發(fā)者文檔第三卷第三章
-------------
剛翻了下資料就.........LS回帖真快

汗啊,我一直以為x86最低必須從3級(jí)開始,原來可以是兩級(jí)。
受教了,多謝LS幾位
作者: silentfish    時(shí)間: 2008-04-01 20:46
標(biāo)題: 贊同5樓
X86上不開啟PAE,使用4K的頁表:

如果頁表只有一級(jí),那么2^20個(gè)頁表要線性排列,即在連續(xù)的空間上排列,即使某項(xiàng)為空也要留下頁表項(xiàng)的位置
如果有兩級(jí)頁表,那么第一級(jí)的空間仍然要分配,但第二級(jí)的頁表可以以1024(4K/4)項(xiàng)為單位不連續(xù)分布,這樣的話如果頁表使用的空間基本與進(jìn)程使用的空間呈線性,如果進(jìn)程使用的內(nèi)存空間小,就可以大大減少頁表所占空間。
最后,如果進(jìn)程使用所有的線性地址空間,用二級(jí)頁表的空間比用一級(jí)頁表的空間大0.1%左右。

我寫的廢話多了點(diǎn)...
作者: vestige    時(shí)間: 2008-04-01 22:29
標(biāo)題: 回復(fù) #14 silentfish 的帖子
為什么用二級(jí)頁表的空間比用一級(jí)頁表的空間大?
不是都是2的20次方個(gè)表項(xiàng)嗎?
作者: vestige    時(shí)間: 2008-04-01 22:30
標(biāo)題: 回復(fù) #15 vestige 的帖子
不會(huì)是因?yàn)?024個(gè)pde吧……
1024/1024*1024剛好等于0.1%
作者: 自由建客    時(shí)間: 2008-04-02 16:28
計(jì)算機(jī)組成原理,不是微機(jī)原理
作者: sudy    時(shí)間: 2008-04-05 11:45
原帖由 vestige 于 2008-4-1 22:30 發(fā)表
不會(huì)是因?yàn)?024個(gè)pde吧……
1024/1024*1024剛好等于0.1%

你得到了她:)
就是多了1024個(gè)pde




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2