24 | 物理内存管理(下):会议室管理员如何分配会议室?
刘超
该思维导图由 AI 生成,仅供参考
前一节,前面我们解析了整页的分配机制。如果遇到小的对象,物理内存是如何分配的呢?这一节,我们一起来看一看。
小内存的分配
前面我们讲过,如果遇到小的对象,会使用 slub 分配器进行分配。那我们就先来解析它的工作原理。
还记得咱们创建进程的时候,会调用 dup_task_struct,它想要试图复制一个 task_struct 对象,需要先调用 alloc_task_struct_node,分配一个 task_struct 对象。
从这段代码可以看出,它调用了 kmem_cache_alloc_node 函数,在 task_struct 的缓存区域 task_struct_cachep 分配了一块内存。
在系统初始化的时候,task_struct_cachep 会被 kmem_cache_create 函数创建。这个函数也比较容易看懂,专门用于分配 task_struct 对象的缓存。这个缓存区的名字就叫 task_struct。缓存区中每一块的大小正好等于 task_struct 的大小,也即 arch_task_struct_size。
有了这个缓存区,每次创建 task_struct 的时候,我们不用到内存里面去分配,先在缓存里面看看有没有直接可用的,这就是 kmem_cache_alloc_node 的作用。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了物理内存管理中小对象的分配方式,通过比喻的方式生动形象地解释了物理内存管理中小对象的分配机制。文章首先介绍了slub分配器的工作原理,以及在系统初始化时创建的task_struct缓存区域。随后详细解释了缓存对象的分配和释放过程,包括快速通道和普通通道的概念,以及kmem_cache_cpu和kmem_cache_node在分配过程中的作用。文章还对缓存对象的存放和分配过程进行了详细的代码解析,让读者能够深入理解物理内存管理中小对象的分配机制。通过本文的阅读,读者将能够更加深入地了解物理内存管理的技术特点,为他们在实际应用中解决问题提供了有益的参考。 文章还介绍了页面换出的过程,包括触发页面换出的情况以及内核线程kswapd的作用。通过对kswapd的代码解析,读者可以了解到页面换出是以内存节点为单位进行的,以及页面换出的具体实现过程。此外,文章还介绍了内存页的LRU列表和不同类型内存页的处理方式,为读者提供了对页面换出机制的深入理解。 总的来说,本文通过对物理内存管理中小对象的分配方式和页面换出机制的详细解析,为读者呈现了物理内存管理的技术特点和实现细节,为他们在理解和应用物理内存管理方面提供了有益的知识参考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(43)
- 最新
- 精选
- W.jyao真心看不懂了,😔😔😔
作者回复: 多看几遍就好了
2019-05-22422 - 鲍勃果然和你的网络课程一样,越到后面越hold不住😂
作者回复: 其实哪门课都一样哈
2019-05-2216 - 超超2. 如何修改swappiness参数? --临时性修改: [root@rhce ~]# sysctl vm.swappiness=10 vm.swappiness = 10 [root@rhce ~]# cat /proc/sys/vm/swappiness 10 这里我们的修改已经生效,但是如果我们重启了系统,又会变成60. --永久修改: 在/etc/sysctl.conf 文件里添加如下参数: vm.swappiness=10 或者: [root@rhce ~]# echo 'vm.swappiness=10' >>/etc/sysctl.conf 保存,重启,就生效了。
作者回复: 如此认真,典范啊
2019-07-1715 - 欠债太多看到现在,代码越来越多,关于代码的阅读需要么?怎么去做呢
作者回复: 重点关注流程,不关注细节
2019-05-22214 - 活的潇洒花了4个多小时终于把笔记做完 分享给大家: https://www.cnblogs.com/luoahong/p/10907734.html
作者回复: 赞
2019-05-2211 - 超超3. 如何查看swap分区 swapon -s cat /proc/swaps free vmstat 以上4类命令都可以查看swap分区的大小和使用情况
作者回复: 赞
2019-07-179 - 刘強这几节看起来吃力了,需要理解的外围知识很多!
作者回复: 加油,多看几遍
2019-05-229 - guojiunhttps://events.static.linuxfound.org/sites/events/files/slides/slaballocators.pdf 這裡有清楚的視意圖,對照著看會更清楚!
作者回复: 赞
2019-05-228 - sundy真的应该少粘代码 多讲原理、多抽象,不然很难将您讲的东西串联起来,连基本原理都不了解硬生生的讲代码实在是让人困惑
作者回复: 其实是有一个整体思路的,被代码打断了,可以讲代码总结一个段落大意,然后再穿起来看,是不是好一些
2020-06-036 - 超超参考文章:https://mp.weixin.qq.com/s/6JVpke8bDKI9lvh_l6QF-w
作者回复: 赞
2019-07-174
收起评论