gpt4 book ai didi

linux - linux 中的内核映射是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:29 27 4
gpt4 key购买 nike

什么是内核映射?什么是永久映射和临时映射。在这种情况下什么是窗口?我浏览了代码和对此的解释,但无法理解这一点

最佳答案

我假设您在谈论 linux 内核中的内存映射。

内存映射是将内核地址空间直接映射到用户进程地址空间的过程。

地址类型: enter image description here

  • 用户虚拟地址:这些是用户空间程序看到的常规地址

  • 物理地址:在处理器和系统内存之间使用的地址。

  • 总线地址:外围总线和内存之间使用的地址。通常,它们与处理器使用的物理地址相同,但情况不一定如此。
  • 内核逻辑地址:这些构成了内核的正常地址空间。
  • 内核虚拟地址:内核虚拟地址类似于逻辑地址,因为它们是从内核空间地址到物理地址的映射。

高内存和低内存:

  • 低内存 内核空间中存在逻辑地址的内存。在您可能会遇到的几乎每个系统上,所有内存都是低内存。
  • 高端内存: 逻辑地址不存在的内存,因为它超出了为内核虚拟地址预留的地址范围。这意味着内核需要开始使用内存片段的临时映射它想要访问的物理内存。

内核将虚拟地址分成两部分用户地址空间和内核地址空间。内核的代码和数据结构必须适合该空间,但内核地址空间的最大消耗者是物理内存的虚拟映射。因此,内核需要为它必须直接接触的任何内存提供自己的虚拟地址。因此,内核可以处理的最大物理内存量是可以映射到虚拟地址空间的内核部分的量减去内核代码使用的空间。

enter image description here

临时映射:当必须创建映射但当前上下文无法休眠时,内核提供临时映射(也称为原子映射)。内核可以原子地将高内存页面映射到保留映射之一(可以保存临时映射)。因此,临时映射可以用在不能休眠的地方,例如中断处理程序,因为获取映射永远不会阻塞。

引用:

关于linux - linux 中的内核映射是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53301388/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com