动态PCPU变量

看完了静态的PCPU变量,现在来看看动态的pcpu变量。

使用场景

虽然在内核的核心代码中也可以使用动态PCPU变量,但是主要还是给内核模块使用的。既然是模块,那就有可能在任何时候启动使用,也可能会卸载。动态PCPU变量就是为了满足这个需要而产生的。

用到的API

既然和内存相关,那必然就有分配和释放了。对应的api很直观

  • alloc_percpu()
  • free_percpu()

背后的原理

网上略为搜索了一下,貌似还没有人讲过动态PCPU变量的实现原理,我这也算是头一个吧~

估计也是因为这个东西讲起来略为有点绕,恐怕很难给大家讲解清楚。在这里我尝试一下,如果有什么不清楚的,可以留言询问。

chunk

chunk可以理解为系统给pcpu变量申请空间的管理结构,在这个结构体中保存了动态PCPU的一些信息。

从上面一文中可以看到,实际上访问静态的PCPU变量只需要一些全局的变量就可以了。但是当有了动态的PCPU变量后,就需要额外的数据来跟踪分配情况了。

比如:

  • 有哪些空间被分配了
  • 有哪些空间被映射了

你看,一加上动态的要求,数据结构就变得复杂了不少。好了,那我们来看看这部分是怎么实现的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值