news 2026/11/5 3:52:29

memory do_pte_missing

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
memory do_pte_missing

do_pte_missing是handle_pte_fault()中用于处理PTE 缺失(pte_none)或仅包含 PTE marker情况的入口函数。它的核心职责是:根据 VMA 的类型,将缺页分派给匿名页处理路径或文件映射处理路径。

核心实现

static vm_fault_t do_pte_missing(struct vm_fault *vmf) { if (vma_is_anonymous(vmf->vma)) return do_anonymous_page(vmf); else return do_fault(vmf); }

分派逻辑

函数基于一个简单的判断:该 VMA 是匿名映射还是文件映射。

  • 匿名 VMA(vma_is_anonymous为真):调用do_anonymous_page(vmf),为匿名页缺页分配新的物理页面(或复用零页)。

  • 文件 VMA:调用do_fault(vmf),从文件的 page cache 中读取页面,或处理写时复制。

历史背景与设计意图

这个函数是在PTE marker 机制引入后从handle_pte_fault()中抽取出来的。

在 PTE marker 出现之前,handle_pte_fault()中的逻辑是:如果pte_none(entry)为真,则根据 VMA 类型调用do_anonymous_page或do_fault。但 PTE marker 是一种特殊类型的“非存在” PTE——它不映射任何物理页,却携带了 uffd-wp 等元数据。在大多数情况下,PTE marker 应被当作nonePTE 处理。

do_pte_missing的引入统一了这两种情况的处理:无论是真正的空 PTE,还是仅包含 marker 的 PTE,都走同一套分派逻辑。函数名中的 “missing” 正是指“PTE 缺失或仅有 marker”这一语义。

调用上下文

在handle_pte_fault()中,do_pte_missing被调用的条件是 PTE 既不是 present,也不是真正的交换项:

if (pte_none(entry)) { /* pte_none 或 pte marker */ return do_pte_missing(vmf); }

如果 PTE 是 present,会走do_wp_page或其他路径;如果是真正的交换项(is_swap_pte),则走do_swap_page。

与相关函数的关联

  • do_anonymous_page:你已经了解过,负责匿名页缺页的核心分配逻辑,内部会检查vmf_pte_changed来处理并发竞态。

  • do_fault:文件映射缺页的入口,会调用vma->vm_ops->fault从文件系统读取页面。

  • handle_pte_marker:如果 PTE 是 marker 且需要特殊处理(如 uffd-wp 确认清除),会在handle_pte_fault的更早阶段被拦截,不会进入do_pte_missing。

总结来说,do_pte_missing是缺页处理路径中一个简洁而关键的分派节点:它把“PTE 不存在(或仅有 marker)”这一状态,根据地址空间类型,路由到正确的底层处理函数。

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

OSPF搭建

一、配置IP地址1.1.数网络域除R4环回地址外,加上环回地址一共5个网段1.2划分IP如图配置IP1.3配置IPAR1:[AR1]interface g0/0/0 [AR1-GigabitEthernet0/0/0]ip add [AR1-GigabitEthernet0/0/0]ip address 192.168.1.1 29 [AR1-GigabitEthernet0/0/0] Nov…

作者头像 李华
网站建设 2026/11/5 3:51:07

基于主机名的服务配置

1、使用dnf安装nginxdnf install nginx -y2、在/etc/nginx/conf.d 目录下创建两个配置文件:---- cd命令切换[rootwww ~]# cd /etc/nginx/conf.d2.1、www.chengke.com.conf,文件内容如下: --- vim命令#命令:[rootwww conf.d]# vim…

作者头像 李华
网站建设 2026/11/5 3:39:01

大模型 API 账单越来越高?用单次成功任务成本反推多花在哪一步

账单涨得快于调用量,原因通常是下面四种之一,或几种叠加:输入变长,输出变长,一个任务里的请求变多,或者模型选得偏大。只看调用次数分不出是哪一种。更有用的指标是 单次成功任务成本:统计期内全…

作者头像 李华