我知道:
虚拟内存分为用户空间和内核空间,并映射到物理内存中.当用户进程访问一个文件时,内核会在访问进程(页面缓存)之前将文件缓存到内存中。
然而,
Will页面缓存的内存空间是否受到内核空间的限制?或者,除了linux中的配置之外,什么东西会限制页面缓存大小?
发布于 2019-07-20 11:02:04
页面缓存存储在RAM中。原则上,它可以填满整个物理内存。它没有的原因,是内存也被用于其他目的。
“匿名”(交换支持的)内存分配与页面缓存的文件支持分配相竞争。两者由内存管理代码平衡。内存管理的确切行为极其复杂。当一个新的页面分配没有可用的RAM时,Linux将选择是删除一个旧的交换支持页面,还是一个旧的文件支持页面。可以使用vm.swappiness
配置值对此选择的余额进行优化。
Linux支持的一些体系结构缺乏虚拟地址空间(只有32位,甚至31位:-)。这并不限制页缓存的大小。页面缓存被显式写入以支持使用临时虚拟映射。查看主源:https://www.kernel.org/doc/html/latest/vm/highmem.html
内存的其他用途有
kmalloc()
进行的内核内分配,这些分配(主要是?)以“平板”分配方式显示。还有其他类型的。内核网络缓冲区是不可迁出的内存分配的一个例子,总体上可以增长很大。https://unix.stackexchange.com/questions/530588
复制相似问题