首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >虚拟内存和页面缓存是如何工作的?

虚拟内存和页面缓存是如何工作的?
EN

Unix & Linux用户
提问于 2019-07-17 07:37:35
回答 1查看 1.2K关注 0票数 0

我知道:

虚拟内存分为用户空间和内核空间,并映射到物理内存中.当用户进程访问一个文件时,内核会在访问进程(页面缓存)之前将文件缓存到内存中。

然而,

Will页面缓存的内存空间是否受到内核空间的限制?或者,除了linux中的配置之外,什么东西会限制页面缓存大小?

EN

回答 1

Unix & 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

内存的其他用途有

  1. 不可驱逐的非缓存分配。例如内核代码。这些分配还包括使用kmalloc()进行的内核内分配,这些分配(主要是?)以“平板”分配方式显示。还有其他类型的。内核网络缓冲区是不可迁出的内存分配的一个例子,总体上可以增长很大。
  2. “水印”记忆。这是保留,以取得进展,在内存管理时,在压力下。例如,我相信当水印到达时,可以使用这些保留,并且需要一些内存来编写一个旧的匿名页面来交换,以便为其他东西腾出空间。通常情况下,储备量可能是内存的1-3% (而在较大的系统中则更少)。在一个小型系统中,这一比例可能高达3%的原因与“透明的大页面”有关。
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/530588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档