news 2026/10/4 21:04:11

tlb flush_tlb_one_user

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
tlb flush_tlb_one_user

flush_tlb_one_user是 x86 架构中用于使用户空间映射中单个页面的 TLB 条目失效的顶层函数。它的核心特点是通常只刷新当前 CPU 的用户态 TLB,而非广播到所有 CPU。

核心作用:单页用户 TLB 失效

这个函数的职责非常具体:针对当前进程用户地址空间中的一个特定虚拟地址,使其在 TLB 中的缓存条目失效。它主要被flush_tlb_one_kernel调用-5,也用于 UV 平台等场景。

实现逻辑与 PTI 的特殊处理

根据内核源码,其实现如下:

void flush_tlb_one_user(unsigned long addr) { count_vm_tlb_event(NR_TLB_LOCAL_FLUSH_ONE); __flush_tlb_one_user(addr); if (!static_cpu_has(X86_FEATURE_PTI)) return; /* * If PTI is on, then the kernel is mapped with non-global PTEs, * and __flush_tlb_one_user() will flush the given address for * the current kernel address space and for its usermode counterpart, * but it does not flush it for other address spaces. */ this_cpu_write(cpu_tlbstate.invalidate_other, true); }

关键点:

  • PTI 关闭时:内核映射使用全局 PTE(_PAGE_GLOBAL)。INVLPG指令会刷新所有地址空间中的全局映射,因此只刷新当前 CPU 就足够了,因为全局映射在所有 CPU 上是一致的。

  • PTI 开启时:内核映射使用非全局 PTE。此时,__flush_tlb_one_user(addr)只刷新当前地址空间中的条目。为了确保其他进程的页表也能看到这个变更,函数会设置cpu_tlbstate.invalidate_other = true,标记“其他地址空间需要刷新”。这个标记会在下一次上下文切换时触发相应的清理操作。

与flush_tlb_one_kernel的关系

flush_tlb_one_user被flush_tlb_one_kernel调用。后者的逻辑是:内核映射的刷新先通过flush_tlb_one_user(addr)完成当前地址空间的刷新;如果 PTI 开启,还需要额外标记“其他地址空间需要刷新”,因为此时内核映射使用非全局 PTE,INVLPG只影响当前地址空间。

命名演进

这个函数曾名为__flush_tlb_one或__flush_tlb_single。2018 年,Dave Hansen 提交补丁将其重命名为flush_tlb_one_user和flush_tlb_one_kernel,目的是让语义更清晰:flush_tlb_single和flush_tlb_one听起来几乎一样,但它们实际含义是“刷新用户翻译”和“刷新内核翻译”。重命名后,函数名明确表达了刷新目标。

2020 年,Thomas Gleixner 进一步将__flush_tlb_one_user()移出内联头文件,改为EXPORT_SYMBOL_GPL的独立函数,以避免将敏感的cpu_tlbstate直接暴露给内核模块。

与 KFENCE 的交互

在 KFENCE(内核内存错误检测器)的 x86 实现中,flush_tlb_one_kernel被用于保护/取消保护页面。LKML 讨论指出,这种“只刷新本地 CPU”的做法在 KFENCE 场景下是可接受的近似行为——因为 KFENCE 的检测不要求确定性,偶尔错过一个 bug 是可以容忍的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 20:59:22

人流量检测实战:从YOLOv8选型到密度图路线避坑指南

简介:面向毕设及课设论文写作的深度学习人流量检测方法参考资料,以MobileNet-SSD轻量级模型为核心,系统介绍了视频监控下行人检测与计数的六个实施步骤:从图像文件列表获取、数据集制作,到模型训练、行人检测、质心追踪…

作者头像 李华
网站建设 2026/10/4 20:57:38

国内知名SEO优化平台,究竟有何独特魅力?

痛点深度剖析我们团队在实践中发现,许多客户在SEO优化中面临诸多困境。在流量获取方面,SEO见效慢,有的客户做了半年优化,关键词排名却丝毫未动;SEM烧钱快,谷歌广告点击成本持续攀升,投入产出比难…

作者头像 李华
网站建设 2026/10/4 20:48:26

Codex CLI 本地部署实战:接入 DeepSeek 与本地模型的 AI 编程助手指南

说实话,我一开始对“AI 编程助手”这几个字是有点免疫的。自动补全用了好几年,代码生成也试过不少,但大多数都停留在“你问一句、它答一段”的层面。真正面对一个多文件工程、需要自己动手改代码、跑测试、看报错再改的场景,这些助…

作者头像 李华
网站建设 2026/10/4 20:47:37

VueUse useArrayFindIndex:为 Vue 3 提供响应式的 Array.findIndex

前端 【免费下载链接】vueuse Collection of essential Vue Composition Utilities for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vueuse 点击查看 免费下载 useArrayFindIndex 是 VueUse(当前仓库 gh_mirrors/vu/vueuse)在 pack…

作者头像 李华