您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    Java 开发者需求研讨 JDK,Linux 开发者需求研讨 Kernel(2)
    时间:2020-03-07 08:09 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    就算是可以阅读源码,另一个成绩也会出现,就是读了源码,了解了它的逻辑,但是有什么用呢?最复杂的是增长了本人的见识,但是实践上这就像阅读了一本书但是不输入本人的了解与观念,没有太大的作用。您是怎样看待并且怎样处置这个成绩的呢?

    姜亚华:

    研讨内核有什么用,这是一个值得沉思的成绩。

    中国如今这个时分确实需求沉下心玩底层系统的人,中国盼望自主操作系统曾经很久了,尤其是如今这种多事之秋。但是假设没有大批工程师在这个范围沉淀的话,操作系统无疑是一种空谈。

    先不论未来的国产操作系统能否一定是 Linux 内核的,研讨 Linux 内核本身也是很好的技术积聚途径。

    仅仅从团体职业生涯角度动身,研讨内核对团体技术的成长有极大协助,可以分多个层次看待。

    第 1 层次,初识,对内核有大约的了解,需求花时间深化任务相关的模块。研讨内核会占用少量时间,产出并不清楚。

    第 2 层次,入门,熟习任务相关的模块,了解内核模块间的关系。研讨内核会让你豁然开朗,常常有“原来 xxx 是这么完成的”之类的慨叹。

    第 3 层次,熟习或知晓,对内核常用模块有一定研讨,熟习代码。即使是新模块,也可以快速厘清头绪。

    除了第 1 层次“糜费”时间外,花时间研讨内核可以反过去提高我们的效率。研讨到了一定水平后就可以进入一个良性循环,研讨得越多,效率越高,节省的时间越多,可以研讨的越多。

    另外,看的代码越多,越有才能处置扑朔迷离的成绩,金老爷子也说“重剑无锋,大巧不工”,相对的实力才是硬道理。

    还是 xxx_probe 的例子,假设我们的 probe 没有被调用,新手能够会反省 device 和 device_driver 的名字能否婚配,研讨过驱动架构的工程师能够分 device、device_driver 和 match 三部分反省。

    假设三部分看似都没有成绩,但是 probe 依然没有调用呢?研讨过代码的工程师能够会想到 device 是不是曾经和另一个 device_driver 婚配了。

    阅历可以协助我们看到成绩的关键部分,真正研讨过代码才能看到成绩的本质。庖丁看到的不是牛,而是肌理结构,到了这种境界换成羊也是一样的。

    最近常常听到一句话,“任务 xx 年,就是一年的任务阅历重复 xx 年”,假设只是要求“会用”的层次,确实一年足够,但工程师在这种状况下早晚会失掉中心竞争力。

    有人倾向于运用结论,但要做的应该是总结和解释结论。

    如今学习 Linux Kernel,主要有哪些任务方向呢?又是哪些类型的公司、业务会主要需求这种才能?

    姜亚华:

    驱开工程师、嵌入式工程师、系统工程师、Linux 顺序开发工程师,甚至运维工程师这些岗位都需求了解内核,就像从事 Java 开发的工程师需求研讨 JDK 一样,并不是只要从事内核相关任务的工程师才需求研讨内核,反过去懂内核的人向上开展也是很容易的。

    有半导体相关业务的公司都需求这类人才,以前传统的半导体公司需求大一些,但近几年互联网公司也纷繁涉足半导体范围,BAT 都包括在内。美国一系列举措之后,近期中国进入了芯片和操作系统研发热潮,一大批芯片公司成立,燧原、平头哥、寒武纪与商汤科技等等,它们也都需求内核相关的人才。

    您这本书讲到关于智能设备的开发,Linux Kernel 与 AI 有什么特别大的关系呢?

    姜亚华:

    其实这个成绩我在这次写的书里有解释。

    Java 开发者需求研讨 JDK,Linux 开发者需求研讨 Kernel

    如上图,“硬件厂商担任硬件,原语(primitives)库普通也由他们维护,比如 AMD 的 MIOpen、Intel 的 MKL 和 Nvidia 的 cuDNN,少数顺序员并不会接触这部分外容,而是运用已有的 Framework。

    Framework 的选择也是多样化的,Google 的 TensorFlow,Facebook 的 PyTorch,微软的 CNDK,亚马逊的 MXNet、Theano 和 Keras。很清楚,目前依然是百花齐放的场面,但技术的开展终归只能是“三分天下”,甚至是“一统天下”。目前曾经存在与这些 Framework 配套的工具,比如 Tensorboard,可以用来查看 TensorFlow 的训练形状。

    由于深度学习计算量太大,并行计算技术也会有所触及,比如 MPI(Message Passing Interface)通讯协议、英伟达的 NCCL(NVIDIA Collective Communications Library)。

    数据对深度学习十分重要,大数据是必不可少的。数据作为输入,模型作为输入,运用于数据中心、团体计算机、机器人和无人驾驶汽车等设备中。

    纵观这整个进程,并没有哪一个环节提到了 Linux,但实践上少数环节都与 Linux 有关。虽然这些关系能够只要少数顺序员关注,但随着技术的成熟,新的智能设备,甚至新的操作系统,又会转回到我们熟习的内核。

    在您研讨 Linux 内核的进程中,有没有觉得 Linux 内核其实还可以用其它言语完成一次,这样关于入门学习会好很多,比如用 Python 这种复杂了解的言语。这样的想法可行吗?会遇到什么技术成绩?

    姜亚华:

    内核外面有很多代码采用的都是面向对象的思想,比如 VFS 采用了较多面向对象顺序的设计形式,像 command 与 template method 等,运用其它言语尤其是面向对象言语来完成 Linux 内核是可行的,但是不得不说的是其它言语(比如 Python)很难有 C 言语的执行效率。

    2019 年是 Linux Kernel 28 周年,分享一下您在这其中关于 Linux Kernel 印象最深的事情吧。

    姜亚华:

    (责任编辑:admin)