搞定这些,你就能对Linux操作系统了如指掌__凤凰网


?

桌面上的图标是什么?我为什么要双击鼠标?这是从哪里来的?

计算机如何知道这个鼠标点击的位置,我怎么知道我想进入这个地方?

当我回到车上时,为什么要将角色发送到远处的另一台机器上?

%5C

对于普通用户来说,只要他们会被使用,但作为专业人士,我们应该深入研究他们背后的答案。操作系统就像一家软件外包公司,其内核相当于这家外包公司的老板。你为什么这么说?

假设,我们现在是一家外包公司,我们的目标是让公司上市。其中,操作系统是这家外包公司的老板。我们将该公司的发展阶段分为以下几个阶段:

初创公司:这位老板在一个开放的商业环境(x86架构)的基础上创办了一家外包公司(系统启动)。因为一开始没有其他员工,老板需要亲自接受项目(实模式)。

开发期:公司正在逐步壮大,项目越来越多(保护模式,多进程),以管理各种外包项目,项目管理系统(流程管理),会议室管理系统(内存管理) ),文件管理系统(文件系统),售前和售后系统(输入和输出设备管理)。

成长期:公司越来越多,并开始促进内部项目(进程间通信)与外部公司(网络通信)的合作。

分组:公司拥有越来越多的业务,将成立一些子公司(虚拟化),或鼓励内部创业(集装箱化),当公司成为一个集团。管家的管理能力不再局限于一家公司,而是一家成功上市的集团公司(Linux集群)(从独立操作系统到数据中心操作系统)。

让外包公司上市的过程是从入门到精通Linux操作系统的过程。要做到对 Linux 了如指掌,我认为你需要爬 6 个陡坡。

第一个坡:抛弃旧的思维习惯,熟练使用 Linux 命令行

Linux入门的第一步是从Windows思维习惯切换到Linux的“命令行+文件”使用模式。但是,在本专栏中,命令行不是我们的重点,但考虑到一些初创学生,在第一部分中,我将简要介绍一些命令行,这些命令行可以让您快速熟悉Linux。在本专栏的每个模块的第一部分中,我将以有针对性的方式解释此模块的常用命令,足以让您使用Linux。

第二个坡:通过系统调用或者 glibc,学会自己进行程序设计

要使用代码操作Linux,可以直接使用Linux系统调用,也可以使用glibc的库。如果使用命令行的人正在吃噱头,那么编写代码来操作命令行的人就是噱头。您会发现通常使用简单的命令行,但需要N个系统调用组合才能完成。必须对每个系统调用进行深入研究,阅读文档和实验。经过一段时间的学习,你非常接近操作系统的原理,你可以看到另一个景观。

第三个坡:了解 Linux 内核机制,反复研习重点突破

了解有关内核原理的更多信息,这将有助于您更好地使用命令行和程序设计,这将提高您的操作和开发和开发水平。 Linux内核机制是我们专栏的关键部分。我将根据最新的4.x内核解释它。当然,我也意识到内核机制的复杂性,所以我选择通过讲故事和图形方式帮助你。理解并记住这些机制。

第四个坡:阅读 Linux 内核代码,聚焦核心逻辑和场景

爬上这个斜坡后,您应该清楚操作系统的原理。此时,您可以专注于主题,并将您学到的知识与您现在正在做的事情相结合。例如,如果您正在研究虚拟化,请关注KVM部分;如果您正在研究网络,请关注内核堆栈的一部分。

第五个坡:实验定制化 Linux组件,已经没人能阻挡你成为内核开发工程师了

论文的结尾是如此之浅,以至于我知道这件事必须进行。从查看内核代码到修改内核代码,这是另一个很大的障碍。例如,您可以自己实现设备驱动程序,实现自己的系统调用,或实现自己的文件系统。在本专栏的最后一部分,我设计了两个实验来帮助您克服这个障碍。只要我遵循我的步骤,没有人可以阻止你成为内核开发工程师。

第六个坡:面向真实场景的开发,实践没有终点

话虽如此,我们都刚刚走出长征的第一步。我一直相信真正的大师都是在实战中训练和练习的。

如果您是操作和维护,仅仅熟悉上面的基本操作是不够的。生产环境中存在许多不可控制的因素,尤其是当簇大小较大时。很多操作和维护经验都是实战。你不能只是读书。

如果您正在开发中,很容易对内核进行细微的修改,但是一旦您面对现实场景,就需要考虑各种因素。并发性和并行性、锁和保护、可伸缩性和兼容性要求开发真正的项目。