查看原文
其他

[代码导读4] 物理页面分配

小笨叔 奔跑吧Linux社区 2019-04-24

对于物理内存的管理,你们觉得那个最重要?不少小伙伴会说,一定是物理页面分配。没错,一个系统里,操作系统就像皇帝,控制了所有的物理内存的资源的审批和分配,就像某国的房地产市场,地皮的流转是严格控制的。任何进程不管你是普通老百姓还是皇亲国戚,需要土地都需要找皇帝审批。那我们这期视频节目就带领带领大家去看看Linux内核里是如何管理和分配物理内存的。


本期视频的课程目标:

  1. 考察Linux内核婴儿底时期是如何分配物理页面的?

  2. 考察Linux内核儿童底时期是如何分配物理页面的?

  3. 考察当代Linux 4.0内核是如何分配物理页面的?

  4. 分配掩码是什么鬼?

  5. 页面分配时候是从哪些zone来分配?

  6. 页面分配的时候是沿着那个方向来扫描zone的?

  7. 怎么判断一个zone是否能胜任本次的页面分配任务?



预览片



笨叔制作了精彩的预览片,上传到腾讯视频。


本期视频全程约1小时,想观看完整视频或者更多视频的小伙伴,请订阅笨叔的旗舰篇视频!

https://shop115683645.taobao.com/

现在订阅在1月2号,还有机会赢取价值969元的国窖1573哟!


婴儿底



在神奇的中国大地,2018年有两个火热的单词:婴儿底和儿童底。婴儿底是说处于刚出生的婴儿时期,说明这时候很弱小,倒脏水的时候不要把幼小的婴儿倒掉,因为ta有价值。儿童底说明处于成长期,需要特别关心和照顾。


Linux内核不是一天练就的,从1991年出世,笨叔把0.11到1.0的内核定义为Linux内核婴儿底。我们首先考察一下Linux内核在婴儿底时期的情况。


儿童底



笨叔把Linux 1.0到Linux 2.0时期的Linux内核称为的儿童底,因为经过几年开发,Linux内核已经比较像模像样了,但还不够完善。



成人版



 笨叔把Linux 4.x内核定义为成人版,这时候的内核内核已经很成熟了,完全可以称霸和傲视整个操作系统领域,孤独求败。成人版的Linux内核的物理页面分配是相当的复杂,一般人不耐心去认真阅读内核代码是完全不能体会的。


成人版的Linux内核物理页面分配复杂在哪里?

  1. 你需要考虑不同进程不同用户的分配物理内存的需求,有的进程需要5分熟,有的需要7分熟,有的需要加胡椒粉,有的需要淡一点等等

  2. 你需要考虑从哪个zone来完成这次物理页面分配任务

  3. 你需要考虑不同内存节点

  4. 你需要考虑不同zone的扫描平衡和内存节点的平衡,她们都是怨妇

  5. 你需要考虑内存不足的时候,肿么办?

  6. 如果打死了也分配不出所需要的内存,肿么办?

  7. 如果有进程狂吃内存,肿么办?


想要了解更多的有趣和好玩的内容,请关注奔跑吧Linux社区。


课件ppt





[往期精彩]

[代码导读3] 页表映射过程

第二季旗舰篇终于来了,进程管理、中断管理和锁机制三合一

[旗舰篇] 第一季旗舰篇资料汇总

不能不会的VIM+GIT

《奔跑吧Linux內核》繁體版預覽

[笨叔点滴15]ARMv8里异常处理哪些蛇神牛鬼 2

[笨叔点滴14] ARMv8里异常处理哪些蛇神牛鬼 1

[笨叔点滴13]哪些异常处理的事儿

[笨叔点滴12]面试必考:如果在中断处理函数里发生了缺页中断会怎样?为什么?

[笨叔点滴11] malloc惹的祸

[笨叔点滴10] 中断到“底”来了吗?

[笨叔点滴9] GNU GCC扩展2

[笨叔点滴8] GNU C语言的扩展

[笨叔点滴7] 再也回不去的C语言

[笨叔点滴6] 叔,这个git咋玩啊?

[笨叔点滴5] git rebase和git merge究竟有啥区别?

[笨叔点滴4]“栈”谁便宜了2

[笨叔点滴3] “栈”谁便宜了?

[笨叔点滴2] 为啥子ARM32体系结构中每个处理模式都有一个单独的栈?

[笨叔点滴1] 为什么do_page_fault函数里代码需要判断用户态还是内核态?

LinuxCon 2018北京游记(1)

LinuxCon2018北京笨叔笨游记 2

《奔跑吧linux内核》配套资源迁移到码云上

考点来了:4月18号视频更新

代码导读之如何使用qemu来单步调试head.S

代码导读之内存管理初始化 - 启动汇编

视频更新:内存管理代码框架导读

DMA那些事儿

私密VIP群答疑

高级运维必杀技:如何图形化单步调试RHEL/Centos 7里的内核?

首发:Meltdown漏洞分析与实践

[奔跑吧Linux内核] 故乡

致敬Beyond


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存