page_alloc add_to_free_list

发布时间:2026/10/22 2:17:22

page_alloc add_to_free_list add_to_free_list()是__add_to_free_list()的带统计更新的封装版本用于将一个空闲页块加入伙伴系统的空闲链表并同步更新free_area的nr_free计数。核心作用与与__add_to_free_list()的区别函数操作nr_free计数__add_to_free_list()仅list_add/list_add_tail调用方负责add_to_free_list()__add_to_free_list() 计数更新自动递增双下划线前缀__表示“纯物理操作”而add_to_free_list()是完整封装——加入链表的同时把zone-free_area[order].nr_free加 1。典型实现static inline void add_to_free_list(struct page *page, struct zone *zone, unsigned int order, int migratetype, bool tail) { __add_to_free_list(page, zone, order, migratetype, tail); zone-free_area[order].nr_free; }参数解析参数含义page页块首页zone目标 zoneorder阶数决定free_area[order]migratetype迁移类型决定free_list[migratetype]tailtrue尾插延迟复用false头插优先复用在释放路径中的位置__free_one_page()在合并完成后、未被 compaction 捕获时会调用它把页块加入空闲链表if (capc !compaction_capture(capc, page, order, migratetype)) { set_buddy_order(page, order); add_to_free_list(page, zone, order, migratetype, to_tail); }迁移类型变更时的nr_free处理一个容易忽略的细节当页块从一种迁移类型移到另一种时如 fallback 偷页、CMA 借用不能简单地用add_to_free_list()因为那样会重复增加总数。move_to_free_list()的操作是“先删后加”__del_page_from_free_list()会减少旧链表的nr_free再用__add_to_free_list()而非add_to_free_list()加回新链表。如果这里误用add_to_free_list()就会导致该页块的计数被错误地增加。总结add_to_free_list()是伙伴系统的空闲链表加入封装它在__add_to_free_list()完成链表插入的基础上额外递增zone-free_area[order].nr_free。它被__free_one_page()在释放路径上调用是“页块进入伙伴系统”时维护空闲计数的标准入口。与它对称的是del_page_from_free_list()移出 递减计数两者共同保证nr_free的准确性。
延伸阅读

更多相关文章

2026/10/22 2:17:22

软考系统架构设计师论文涉及知识点之Grafana(2)

接前一篇文章:软考系统架构设计师论文涉及知识点之Grafana(1) 本文内容参考: 【知识】7.Prometheus-可视化工具Granafa介绍和监控MySQL和主机实践-腾讯云开发者社区-腾讯云 Grafana 全维度技术深度解析_grafana底层用的是什么技术 可以拖拽控件形成画布-CSDN博客 特此致…

2026/10/22 2:17:22

液冷焊接设备二供怎么选 四个导入维度

液冷焊接设备二供怎么选 四个导入维度这篇文章讲的是液冷焊接设备二供导入的评估框架:二供选型的判断标准与一供不同,重点从能力排序转向等价性验证与切换代价,正文给出工艺窗口等价性、产能与交付弹性、数据与追溯兼容、质量责任机制四个维度…

2026/10/22 2:17:22

电芯PACK激光焊接效果怎么样 五个验证口径

电芯PACK激光焊接效果怎么样 五个验证口径这篇文章讲的是电芯PACK激光焊接效果的评价口径:效果不靠转述的印象,靠五类可索取的过程记录验证,覆盖气孔、熔深、密封、追溯与换型五个维度,帮助需求方把「效果怎么样」变成可以逐项核对…

2026/10/22 3:32:32

手写极简Agent:大模型如何通过工具调用实现自主任务

你是不是也遇到过这种情况:看了很多讲Agent的文章,收藏了一大堆,等到自己想动手的时候还是不知道从哪儿开始。别急着自责,这太正常了。Agent这个东西,光看概念很容易被绕晕——又是规划、又是记忆、又是工具调用&#…

2026/10/22 3:32:32

Qt Android 连接 MySQL:用 HTTP API 替代直连的完整实践

简介:面向需要在 Qt 5.12.1 Android 应用中接入 MySQL 数据库的开发者,这份资源围绕 MySQL 驱动的交叉编译、插件封装与 APK 打包提供完整参考方案。内容基于 Ubuntu/Windows 双平台环境,覆盖 NDK 工具链配置、qsql_mysql 插件修改、QSqlData…

2026/10/22 3:32:32

基于YOLO的水下鱼类多目标检测系统实战:从数据到部署

我前段时间帮一个海洋牧场项目做了套鱼群监测系统,核心目标就一件事:对着水下视频画面,把游来游去的鱼实时框出来、数清楚、分好类。前后折腾了三个多月,踩了不少坑,也总结出一套相对完整的流程。今天这篇就把整个“基…

2026/10/22 3:32:32

Qt Android直连MySQL:驱动交叉编译与六大避坑实践

简介:面向基于 Qt 5.12.1 的 Android 与 MySQL 集成开发场景,这份资源包集中提供编译 QMYSQL 驱动所需的源码、配置与构建辅助文件,帮助开发者在 Windows/Ubuntu 环境下完成 NDK 交叉编译,解决 Android 端默认缺少 MySQL 驱动的常…

2026/10/22 3:32:32

LangChain Agent 不稳定?试试 Harness Engineering 这套外壳

很多人在 LangChain 里写 Agent,写完第一版感觉特别顺,模型一调、工具一接,好像什么都能干。但一旦丢到真实业务里,问题就全冒出来了:任务稍微绕一点就跑偏,同样的输入有时候对有时候错,Token 消…

2026/10/22 3:27:32

Kubernetes集群参数调优实战:解决Pod反复重启与驱逐问题

不少维护自建集群的同行都有过这种体验:集群规模不算大,资源水位看着也正常,可一到流量高峰期,Pod就开始以一种十分“随机”的姿态反复重建、Pending、ContainerCreating。这种时候,K8s参数优化往往才是真正要做的功课…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑