- 论坛徽章:
- 16
|
1.assume: x86, 2.6.3x, 物理内存1G,则由896+8M开始的一块128M的物理内存,linux称为high_memory.那么这一块128M内存,是不是由内核和进程共享的?
即内核通过vmalloc()可以分配到这块物理内存,而进程在向内核请求分配内存时也有可能分配到这块物理内存?
还是说内核是"排它"性的,仅仅由vmalloc()使用?
在x86体系结构上,高于896MB的所有物理内存的是高端内存
不是896MB+8MB开始的,这个是指线性地址,你的意思应该是说896MB~1G的物理内存是不是由内核和进程共享的。
内核和进程都可以对这块物理内存进行映射。
而3G+896MB+8MB开始的动态内存分配区是vmalloc的天下。
2.再assume: x86, 2.6.3x物理内存512m,此时没有high_memory.这种情况下内核的vmalloc()在哪部分的物理内存中去分配呢?
如果内存低于512MB,则不存在高端内存这一说了。
ZONE_DMA <16MB
ZONE_NORMAL 16~896MB
ZONE_HIGHMEM >896MB
vmalloc只是分配3G+(直接映射区大小)+8MB开始的动态内存映射区,与物理地址多大无关。 |
|