我试图理解Linux中的“内存管理”,作为Daniel和Marco的“理解Linux内核”课程的一部分。以下是我对内核空间的理解
我的问题是,如果进程所需的总内核空间超过1 GB怎么办?
答案 0 :(得分:4)
首先,校正 - 内核以1:1映射的(几乎)1Gb不是内核专用的。只是内核最容易访问该内存。它确实包含内核代码和静态数据。
内核虚拟空间实际上在虚拟地址空间的顶部(内核使用的1Gb的顶部)具有256 Mb(数字是动态的),而不是像内核线性的其余部分那样以1:1映射地址,但是动态映射到各个页面 - 通过vmalloc从非连续物理内存中获取虚拟连续区域,或者通过ioremap映射内存映射IO或通过kmap访问更高的1Gb页面。
总而言之 - 当内核需要访问更多内存时,它(几乎)1Gb总是以1:1的方式映射,它就像用户空间一样使用动态内存。