因此,我目前正在尝试了解涉及内核内存与用户空间内存的页面框架分配如何工作。
据我了解,普通内核内存连续地映射到物理内存。本质上,与Virtual-> Physical之间只有一个偏移量。
用户空间没有这种限制,虚拟分配的大块可以分布在整个物理内存上。
以32位系统的常规1g / 3g分割为例:
Physical RAM
----------------
3g <- Mapped in user space
----------------
1g <- Contiguously mapped in kernel space
----------------
所以我的问题:
可以说内核当前正在使用128MB的物理内存,因此有986mb(物理)的可用负载。
现在,用户进程需要一些内存。从理论上讲,内核可以在较低的1gb物理内存中找到一个空闲页帧,并将其交给用户进程。当然,这将减少内核可用的内存量(触发分页之前),因为您正在其1GB连续区域内获取页帧。
因此,似乎一种合理的分配页面框架的方式类似于:
内核内存的页帧:从低到高 用户内存的页面框架:从高到低
那样,内核不使用的页面框架可以被用户进程使用,但是只能在内核内存映射之外的所有内存都使用完之后。
从根本上讲,这是Linux内核如何分配页面框架吗?