[代码导读4] 物理页面分配
对于物理内存的管理,你们觉得那个最重要?不少小伙伴会说,一定是物理页面分配。没错,一个系统里,操作系统就像皇帝,控制了所有的物理内存的资源的审批和分配,就像某国的房地产市场,地皮的流转是严格控制的。任何进程不管你是普通老百姓还是皇亲国戚,需要土地都需要找皇帝审批。那我们这期视频节目就带领带领大家去看看Linux内核里是如何管理和分配物理内存的。
本期视频的课程目标:
考察Linux内核婴儿底时期是如何分配物理页面的?
考察Linux内核儿童底时期是如何分配物理页面的?
考察当代Linux 4.0内核是如何分配物理页面的?
分配掩码是什么鬼?
页面分配时候是从哪些zone来分配?
页面分配的时候是沿着那个方向来扫描zone的?
怎么判断一个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内核物理页面分配复杂在哪里?
你需要考虑不同进程不同用户的分配物理内存的需求,有的进程需要5分熟,有的需要7分熟,有的需要加胡椒粉,有的需要淡一点等等
你需要考虑从哪个zone来完成这次物理页面分配任务
你需要考虑不同内存节点
你需要考虑不同zone的扫描平衡和内存节点的平衡,她们都是怨妇
你需要考虑内存不足的时候,肿么办?
如果打死了也分配不出所需要的内存,肿么办?
如果有进程狂吃内存,肿么办?
想要了解更多的有趣和好玩的内容,请关注奔跑吧Linux社区。
[往期精彩]
[笨叔点滴12]面试必考:如果在中断处理函数里发生了缺页中断会怎样?为什么?
[笨叔点滴5] git rebase和git merge究竟有啥区别?
[笨叔点滴2] 为啥子ARM32体系结构中每个处理模式都有一个单独的栈?
[笨叔点滴1] 为什么do_page_fault函数里代码需要判断用户态还是内核态?
高级运维必杀技:如何图形化单步调试RHEL/Centos 7里的内核?