- 论坛徽章:
- 0
|
>>内核中可以访问所有的物理页面,换而言之所有的物理页面在系统空间都有映射.
这个貌似有问题.
物理内存地址大于HIMEM的时候开始只在低端内存在保存了它们的page信息.
高端内存只在有需要的时候映射,可以是vmalloc映射到内核虚拟地址空间,也是可能映射到用户地址空间.
ldd.ulk甚至ldk(我想作者应该都应该列于a版主所说的30人中...)上都是这么说的:内核虚拟地址空间就是3G-4G的空间,内核逻辑地址空间就虚拟地址空间的一部分,就是3G+的一部分,内存少于896M,则就是3G---(3G+内存大小)(当然包括其他的非内存),全部是线形的映射,__pa()操作有效,建立了映射(这里我有个疑问,__pa只是程序里用的方便吧,CPU寻址的时候仍然是是查表吧,懂硬件的说说....).
逻辑地址以上到4G的虚拟空间保留,用来vmalloc或者ioremap之内.也就是说vmalloc本身的得到虚拟地址范围并不局限于上128M.
有128M的原因是内存大于896M,为了vmalloc能有连续的虚拟空间可用而做的保留,但是某些体系结构中定义了VMALLOC_START和VMALLOC_END,强制vmalloc只能在这个范围内分配虚拟地址. |
|