init __set_pte_vaddr
__set_pte_vaddr是 x86 架构早期内存初始化代码中用于在指定虚拟地址上建立单个 PTE 映射的核心函数。它负责完成页表树的最后一步填充并刷新对应的 TLB 条目。核心作用建立单个页表项这个函数的作用非常明确给定一个 PUD 页表指针、一个虚拟地址和一个新的 PTE 值它确保从 PUD 到 PTE 的完整页表路径都存在然后将新的 PTE 写入并刷新 TLB。代码逻辑解析static void __set_pte_vaddr(pud_t *pud, unsigned long vaddr, pte_t new_pte) { pmd_t *pmd fill_pmd(pud, vaddr); pte_t *pte fill_pte(pmd, vaddr); set_pte(pte, new_pte); /* * Its enough to flush this one mapping. * (PGE mappings get flushed as well) */ flush_tlb_one_kernel(vaddr); }填充 PMD 层级调用fill_pmd(pud, vaddr)确保vaddr对应的 PMD 页表存在。如果 PMD 条目为空fill_pmd会分配一个新的 PMD 页表并填充。填充 PTE 层级调用fill_pte(pmd, vaddr)确保vaddr对应的 PTE 页表存在。如果 PTE 条目为空fill_pte会分配一个新的 PTE 页表并填充。写入 PTE调用set_pte(pte, new_pte)将新的页表项写入 PTE 条目。这一步完成了虚拟地址到物理地址的最终映射。刷新 TLB调用flush_tlb_one_kernel(vaddr)使vaddr对应的 TLB 条目失效。这是必须的因为如果 TLB 中缓存了旧的映射或没有映射CPU 可能会继续使用过时的转换结果。在页表构建链条中的位置这个函数是早期页表构建的“最后一公里”fill_p4d → fill_pud → fill_pmd → fill_pte → __set_pte_vaddr前面的fill_*函数负责逐级确保页表结构存在而__set_pte_vaddr负责最终的 PTE 写入和 TLB 刷新。关键设计细节flush_tlb_one_kernel注释指出“只需要刷新这一个映射”因为PGE全局页映射也会被一并刷新。flush_tlb_one_kernel是内核空间专用的单页 TLB 刷新函数它使用INVLPG指令精确失效单个页面的 TLB 条目避免了全局刷新重写 CR3的开销。与set_pte_vaddr的关系__set_pte_vaddr是内部实现通常被set_pte_vaddr或set_pte_vaddr_pud等更上层的函数调用。上层函数负责获取正确的 PUD 指针然后委托给__set_pte_vaddr完成实际工作。早期启动的约束由于这个函数在启动早期使用它调用的fill_pmd、fill_pte和spp_getpage都必须能同时兼容 memblock 和伙伴系统阶段这正是spp_getpage被标记为__ref的原因。

相关新闻

产业资本运作之以特色产业场景激活县域增长

产业资本运作之以特色产业场景激活县域增长

产业资本运作之以特色产业场景激活县域增长何伏 融通资管 投资合伙人县域不差资源,差的是把资源变成“用户愿意买单”的场景。产业资本不是用来救命的,是用来加杠杆的。先把产业做扎实,资本自己会来。县域经济是一场“十年长跑”。今天选…

2026/9/28 20:09:20 阅读更多 →
1. 研究生3年(2016-2019)

1. 研究生3年(2016-2019)

今年刚好本科毕业10周年,本文算是对过去的一个总结吧。虽然名义上毕业10年,但因为读了3年研究生,实际工作只有7年。本文尽量客观,不加修饰吹嘘。无感的同学可以退出来看看我别的文章。 1. 研究生3年(2016-2019&#xf…

2026/9/28 20:08:19 阅读更多 →
编写你自己的量化配方:Model Optimizer Recipe系统与自定义扩展指南

编写你自己的量化配方:Model Optimizer Recipe系统与自定义扩展指南

编写你自己的量化配方:Model Optimizer Recipe系统与自定义扩展指南 【免费下载链接】Model-Optimizer A unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, e…

2026/9/28 20:08:19 阅读更多 →

最新新闻

会编网络:学Python不必追高深,小脚本解决生活麻烦

会编网络:学Python不必追高深,小脚本解决生活麻烦

很多人对于Python学习存在一个固有印象,认为编程就要做大型项目,开发复杂程序,处理海量数据。如果没办法开发大型程序,学习就没有价值。在这样想法影响下,不少新手入门之后,一心钻研复杂技术,想…

2026/9/29 22:35:10 阅读更多 →
瓶盖入垫工序漏垫与双垫的产线防呆检测方案

瓶盖入垫工序漏垫与双垫的产线防呆检测方案

瓶盖入垫是包装线上一个典型的小工序、大风险环节。垫片单件价值不高,但漏垫或双垫一旦流入灌装、旋盖乃至出厂环节,往往以批量渗漏、内容物变质和客诉的形式暴露,届时追溯和返工成本已远超入垫工位本身。围绕漏垫与双垫的在线防呆检测&#…

2026/9/29 22:35:10 阅读更多 →
基于STM32的智能鸽子驯养系统设计:电路、代码与实物实现

基于STM32的智能鸽子驯养系统设计:电路、代码与实物实现

每年毕业设计季,最不缺的就是“智能XX”类的题目。智能鱼缸、智能猫窝、智能花盆,换汤不换药。但当我看到“基于STM32的智能鸽子驯养系统(实物电路设计手册)”这个题目时,反而停下来多看了几眼——不是因为名字多花哨&…

2026/9/29 22:35:10 阅读更多 →
ESP32-C3基础:Kimi Code辅助Windows下ESP-IDF搭建与点灯实验

ESP32-C3基础:Kimi Code辅助Windows下ESP-IDF搭建与点灯实验

其实很多人做嵌入式第一课不是被代码难倒,而是被“搭环境”磨掉半条命。第一次拿到 ESP32-C3 开发板时,我也没逃过这个流程:Windows 下装驱动、找工具链、配路径,再打开一个能用的编辑器,每一步都可能有坑。这次我把 K…

2026/9/29 22:35:10 阅读更多 →
选Allegro培训机构的底层逻辑:不是学软件,而是习得工程思维

选Allegro培训机构的底层逻辑:不是学软件,而是习得工程思维

1. 为什么“选Allegro培训机构”这件事,90%的人从第一步就错了你搜“怎么选Allegro培训机构”,点开前五页结果,大概率会看到一堆“十大推荐”“权威榜单”“零基础速成班”的标题。我干这行十多年,带过三百多个PCB设计学员&#x…

2026/9/29 22:35:10 阅读更多 →
从原理到实战:AI Agent停止策略全解析,用TaoToken统一Key避免无限循环与资源浪费

从原理到实战:AI Agent停止策略全解析,用TaoToken统一Key避免无限循环与资源浪费

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/29 22:34:09 阅读更多 →

日新闻

开源模型端侧落地实战:量化、推理加速与Agent上下文管理

开源模型端侧落地实战:量化、推理加速与Agent上下文管理

1. 从"追平"到"端侧落地":开源模型这波到底变了什么如果你最近半年一直在关注模型圈的动态,应该能明显感觉到一个拐点:开源模型和闭源旗舰之间的差距,正在从"代差"变成"身位差"。以前大家…

2026/9/29 0:00:05 阅读更多 →
AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成

AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成

1. 为什么AI Evals值得你花时间搞明白做LLM应用的人,迟早会撞上同一堵墙:模型输出飘忽不定,今天答得好好的,明天换个问法就胡说八道。你改了一版提示词,感觉好像好了点,但到底好了多少?说不清。…

2026/9/29 0:00:05 阅读更多 →
Java采购管理系统实战:从数据库设计到事务一致性

Java采购管理系统实战:从数据库设计到事务一致性

简介:这是一套面向Java Web初学者与课程设计者的采购管理系统完整源码,采用JSP技术搭建,配合MySQL数据库,用于解决企业采购信息的管理问题,适合作为毕业设计、课程大作业或进销存类项目的参考模板。系统实现了用户登录…

2026/9/29 0:00:05 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →