内核镜像加载地址?
# dmesg|grep -e ".text :" -B 2
.init : 0xc09da000 - 0xc0a64000 ( 552 kB)
.data : 0xc0798f98 - 0xc09d9710 (2305 kB)
.text : 0xc0400000 - 0xc0798f98 (3683 kB)
# dmesg|grep -e "Zone PFN ranges" -A1
Zone PFN ranges:
DMA 0x00000000 -> 0x00001000
内核镜像加载到物理地址4MB,大小将近6MB
而DMA是前16MB,DMA内存应该是很珍贵的,但是却把内核放入了此段,
这样做,我想不通....
.init : 0xc09da000 - 0xc0a64000 ( 552 kB)
.data : 0xc0798f98 - 0xc09d9710 (2305 kB)
.text : 0xc0400000 - 0xc0798f98 (3683 kB)
# dmesg|grep -e "Zone PFN ranges" -A1
Zone PFN ranges:
DMA 0x00000000 -> 0x00001000
内核镜像加载到物理地址4MB,大小将近6MB
而DMA是前16MB,DMA内存应该是很珍贵的,但是却把内核放入了此段,
这样做,我想不通....
作者: chobit_s 发布时间: 2011-01-20
回复 chobit_s
我想可能有这个原因把,在内核启动之初,还没建立页表,只建立了一个临时内核页表,pg0,pg1两个页全局目录一共8mb,映射的是ram的前8mb,所以只有搬在这前8mb才可以在开启分页机制后继续操作这些内存。
我想可能有这个原因把,在内核启动之初,还没建立页表,只建立了一个临时内核页表,pg0,pg1两个页全局目录一共8mb,映射的是ram的前8mb,所以只有搬在这前8mb才可以在开启分页机制后继续操作这些内存。
作者: amarant 发布时间: 2011-01-20
那又为什么不把临时内核页表建立在16mb开始处呢?
作者: amarant 发布时间: 2011-01-20