论内存管理在编译器中的重要性
Posted ybhuangfugui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论内存管理在编译器中的重要性相关的知识,希望对你有一定的参考价值。
关注+星标公众号,不错过精彩内容
来源 | 极客时间
前两天刷知乎,看到一个做编译器的老哥被猎头“三顾茅庐”的经历,给我笑坏了。老哥原话是“第一次感觉自己这么牛逼”,因为尽管他每次都拒绝,可猎头就是一直抓着他不放,电话打了一次又一次,真实中透着好笑。
不过基础软件领域,确实经常出现这种结构性缺人的事儿。你看华为和BAT,大家都在紧锣密鼓地研发自己的软硬件技术,所以对做底层开发的系统级程序员的需求未来也只多不少。尤其像编译器这种领域,招聘周期可能会拉长到一至两年。
主要还是因为,编译器原理本身非常枯燥,需要上承算法,下接指令集,以及高水平的布尔代数和计算机架构和算法知识,光它一个,就称得上是知识大杂烩了。更别提还要掌握其他的 CPU 核设计知识、操作系统的内存管理模块、编译器的内存分配、并发锁、基础库的设计原理等其他基础软件开发必备的知识点了。
不过要是你想从这些庞大的知识体系中选择一条脉络去学习的话,我倒是看过一个建议说以内存管理为线索最佳。
就比如,在 C 语言编写的程序中,一个变量要经过编译器、链接器、加载器和操作系统的进程管理,然后再经过 CPU 的 MMU 模块,才能最终出现在真正的物理内存里。如果你能把这个过程讲清楚,那就说明你对这一串的工作原理有了相当的理解。所以说,内存管理的知识就相当于纲领,纲举则目张。
这些总结我也是最近看上图作者海纳老师,在极客时间的直播里,摸出的一些门道。回看知乎原来他还是知乎高赞达人,有不少粉丝,几年前有幸看过他对于零基础学习计算机的良心解答。
为了能更系统全面的说透内存,他最近专门跟极客时间推出了一个课程,叫《编程高手必学的内存知识》。听说专栏还没上线,预售就已经卖了几百份,三场直播也是反响热烈,累计几万人观看,看专栏留言,有不少人和我一样,是看完直播和开篇词果断入手,内容真心不错,以上涉及到任何一个知识点,只要有你感兴趣的,都应该去看看,还能赶上最后的上新优惠期。
新人首单 ¥59,原价 ¥99
早鸟+口令「neicun666」立省 ¥30
作者海纳,原是 Huawei JDK 团队的负责人,现在担任华为资深编译器专家,主要负责华为编译器领域的相关创新工作。这两年,他笔耕不辍,不仅在极客时间连载新的内存专栏,还在业余时间筹备了《从零开始写Linux内核》的新书,估计2022年上市,是真的很勤奋了。
海纳的工作,主要涉及的都是数据库、操作系统、编译器和图像处理,以及计算机视觉等方面,因此也让他积累了大量相关的一线实战经验。
在这个专栏里,海纳秉承着“垂直化学习”的理念,避免了水平式讲解难以形成体系的问题,带你将内存知识的繁多、复杂等难点问题层层突破。课程主要分为三个部分:软件篇,硬件篇和自动内存管理篇。
软件篇
这一部分,以操作系统为核心,将进程和内存的关系彻底讲清楚,让你对操作系统、编译器,以及应用程序的运行原理有深入的理解。
编译器和应用程序都是围绕着操作系统这个核心来构建的。因此,在具体的讲述上,海纳采取的是由核心向外延方式,把软件篇的知识都给你串联起来,如下图所示。
硬件篇
这一部分,主要讲解的是与内存相关的计算机体系架构,包括存储器电路、存储体系结构和多核CPU内存模型,让你最大限度地使用好缓存,写出正确而高效的代码。同时,还可以让你掌握CPU设计一些简单原理,并且在此基础上,深入地学习RISC-V等开源CPU的实现。
从下面这张图可以看到,硬件的结构是从下到上层层搭建的。所以,这部分会采用自底向上的讲解方式,带你理解存储系统是怎样由简单的器件一步步变得越来越复杂的。
内存管理篇
在这一部分关注点会从计算机软硬件,转向对具体内存管理算法的学习。
学习内存管理算法,能够让我们正确地使用各种不同语言,例如在Python和Swift中你要注意解循环引用等等。
还有很多具体内容,可以看看课程目录。
在未来,会有越来越多的开发者走上这条自主可控的芯片设计和基础软件设计之路。如果你也是这么想,那么这个专栏可能就是你最好的启蒙,它不仅仅包含计算机方向的内存知识,还能帮你掌握 CPU 设计、操作系统、编译器开发等热门领域,带上它,就从现在开始吧。
粉丝专属福利:
新人首单 ¥59,原价 ¥99
老用户秒杀+口令「neicun666」立省 ¥30
👇 点击「阅读原文」
输入优惠口令 「neicun666」
立省 ¥30 入手,仅限 前 50 人
以上是关于论内存管理在编译器中的重要性的主要内容,如果未能解决你的问题,请参考以下文章