社区
大华的课程社区_NO_1
Linux内核模块开发
帖子详情
PER_CPU(一)
山卡拉噶
2025-09-10 13:59:41
课时名称
课时知识点
PER_CPU(一)
Linux内核的PER_CPU机制介绍以及如何使用PER_CPU系列接口
...全文
4
回复
打赏
收藏
PER_CPU(一)
课时名称课时知识点PER_CPU(一)Linux内核的PER_CPU机制介绍以及如何使用PER_CPU系列接口
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Linux内核机制开发 - DEFINE_PER_
CPU
和DECLARE_PER_
CPU
Linux内核机制开发 - DEFINE_PER_
CPU
和DECLARE_PER_
CPU
setup_per_
cpu
_areas 函数
setup_per_
cpu
_areas是为了对内核的内存管理(mm)进行初始化而调用的函数之一。只在SMP系统中调用,UP中不执行任何操作。 setup_per_
cpu
_areas函数为SMP的每个处理器生成per-
cpu
数据。 per-
cpu
数据按照不同的
CPU
类别使用,以将性能低下引发的缓存一致性(cache coherency)问题减小到最小。per-
cpu
数据由各
cpu
独立使用,即
Linux per_
cpu
机制的详解
针对IA64体系结构,在Linux操作系统中,特别是针对SMP或者NUMA架构的多
CPU
系统的时候,描述每个
CPU
的私有数据的时候,Linux操作系统提供了per_
cpu
机制。per_
cpu
机制就是让每个
CPU
都有自己的私有数据段,便于保护与访问。通过宏DEFINE_PER_
CPU
,定义这种私有数据,只不过这种私有数据放在特定的数据段中。#define DEFINE_PER_
CPU
(type, name) /__attribute__((__section__(“.data.per
cpu
”)))
Linux PER_
CPU
变量的理解
x86架构,64位长模式下。 // <arch/x86/include/asm/per
cpu
.h > #define __per
cpu
_seg gs #define PER_
CPU
_VAR(var) %__per
cpu
_seg:var 1、定义 静态per-
cpu
变量通过DEFINE_PER_
CPU
和DECLARE_PER_
CPU
宏在内核源码中定义和声明,详见如下。 // ...
内核源码解读之内存管理(10)per
cpu
_page_set分析
在内核启动之初per_
cpu
机制还没有初始化,用于动态分配per_
cpu
变量的空间还没有分配,所以定义了一个静态的per_
cpu
变量boot_pageset,用以暂时管理内存域的per_
cpu
缓存。high记录了per_
cpu
缓存中页帧的上限,如果超过这个值就将释放 batch个页帧到伙伴系统中去,如果per_
cpu
中没有可分配的页帧就从伙伴系统中分配batch个页帧到缓存中来。per_
cpu
缓存中的页帧的page就挂接在struct list_head lists中。
大华的课程社区_NO_1
1
社区成员
104
社区内容
发帖
与我相关
我的任务
大华的课程社区_NO_1
复制链接
扫一扫
分享
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章