- 论坛徽章:
- 0
|
回复 11# binbian9
from "xs3c"大神
离大婶还远着呢。大家学习交流而已。
1. Q: "2. vmalloc_start 到 vmalloc_end 這段沒有與 physical address one-one mapping ??"
A: " 对 "
2. Q: "2. 我知道那128被vmalloc拿去用了,但為什麼vmalloc那塊區間不能放在normal zone裡面??"
A: "vmalloc这段保留只是虚拟地址空间范围,而normal zone和high zone都是物理地址范围。这是两个概念。"
from "瀚海书香" 大神
Q: "2. 我知道那128被vmalloc拿去用了,但為什麼vmalloc那塊區間不能放在normal zone裡面??"
A: "如果所有的1G空间都用来normal zone了,那么内核想访问1G以上的物理空间的时候,怎么办?所有留着这个128M用来映射访问超过1G的物理地址"
首先我说的one-one mapping是指phy address -->phy address + 0xc000_0000的映射。我没看出瀚海书香的暗示说vmalloc 空间也是这么映射的。他只是说要留着这128M的空间来访问超过1G的物理地址。如果 one-one mapping 那也最大能访问128M. 怎么能访问超过1G的物理地址呢。
兩位大神的說法似乎有些矛盾?
"瀚海书香" 大神的說法似乎imply vmalloc空間與physical address是 1-1 mapping
但 "xs3c"大神則是明確的說沒有@@?
真是把我搞糊塗了 T_T
如果vmalloc_start 到 vmalloc_end這段沒有與physical address one-one mapping,
那為什麼將virtual address 4G 分給 user/kernel 分別為 3G/1G時,
在你的机器上实际是你在kernel和user程序同时在跑,需要虚拟地址把他们隔离开来,不然页表映射不乱套了。
linux 要Default 設成896MB 的normal Zone跟128的High zone??
各个架构不一样,x86是这样, ppc是768MB 的normal Zone 和256的high Zone.
|
|