Linux操作系统 —— 开篇(一)

Linux操作系统 —— 开篇(一)

本系列,是自己学习Linux过程中的笔记。
希望读者在看完全文后,也能留下你们的经验或者问题。
如果能从这里学到点东西,记得请我喝杯☕☕☕~

—— MinRam

一、前言

无论是从我个人职业发展,还是公司的招聘机会来看,扎实的基础知识都显得尤为重要。

前系列讲述了面试中需要的系统设计知识。这次回归基础知识,选择从最基本的Linux系统开始。

最近一次系统性的学习系统是大学时候的《计算机组成原理》,学到的内容都是讲理论,讲原理,甚至无法通实际项目中的linux相结合。

例如在考虑系统内核参数或内存分配时,完全无法关联起来,因为我自己就不了解系统底层是如何调配资源的,自然也无法给出合理的调参建议。虽然后面有碎片性主动或被动地学习一些,但由于没有系统学习,我在这块是缺少知识地图,来完成知识联动。

二、为什么选择Linux

W3Techs可以得到两份调查数据分别是:《软件系统中操作系统使用情况》《软件系统中Unix中各系统使用情况》

后端操作系统使用情况

从调查数据得出的结论是在现在的软件系统中Unix是后端操作系统的主流,其中Linux更为常见。

  • 随着云计算的发展,很多商业级产品都在进行云化,大部分的计算都是由后端来完成的。
  • 随着移动互联网的发展,其终端(手机&穿戴设备)中以安卓为主,而安卓其实是基于Linux内核运行。
  • 主流技术:虚拟化,容器都是基于Linux核心技术。
    所以不管是应用开发,移动平台还是穿戴嵌入式开发,Linux一直都是必须啃下的硬骨头。

三、开源Linux

1. Linux的内核代码

Linux是一个开源OS,不像Windows

这意味着,只要足够耐心,你可以从代码中,把Linux完完整整犁一遍。看Linux是如何进行内核调度,内存分配等。理论知识可能会理解偏差,代码却不会说谎。

在实际开发中,Linux代码上有着各种各样的经典案例,从数据结构到设计模式再到并发。实际上,这些代码案例都是经过了开发者和商用产品的实践,经得起考验。

比如在应用开发中,经常需要使用各种数据结构和算法库。在内核代码中,为了保证内存消耗,检索耗时或更新耗时限制在合理范围内,Linux常常使用一些自定义的结构,这在我们开发中很有参考价值。

2. Linux的技术生态

Linux作为各大商用级产品的首选的原因之一,就是有着庞大的产品工具生态。

我们已知的各大组件都可以看到Linux的地位:

数据库上的Mysql、Oracle、Mongodb, 消息队列 RabbitMQ、Kafka, 虚拟化 KVM、Openstack、Openswitch,容器 Kubernetes、Docker。这些技术软件在开发的时候都会优先考虑Linux的场景,整个生命周期(安装,使用,升级,运维)都会先完成Linux生态栈。

Linux中,我们可以看到这些商用级工具的开发者的设计理念和思想。

3. Linux的社区生态

Linux的背后有各种业界大佬和巨头公司撑腰。

由于Linux的各种优点,让全世界更多的开发者甘愿参与进来完善,其中更有IBM、ARM等一系列巨头公司参与,形成一种Linux为世界各地开发者提供方便,开发者通过参与提高能力,IBM等公司通过开发驱动将自己硬件设备应用在Linux,从而促进Linux继续壮大的互利形态。到如今,近乎全世界的OS开发者均或多或者投入到Linux开发和bug修复中,绝大部分公司均基于Linux开发自己的商业OS

这基本就是Linux作为一个开源软件的生态,它是所有商用发布OS的核心,是所有主流厂商的承认的操作系统,厂商如果希望Linux可以运行自己硬件,那么必须将硬件驱动加入Linux并维护,从而将主流厂商与Linux绑定更加紧密。

可以说,如果我们在Linux上碰到问题,肯定不是只有我们碰到。

四、Linux的发展

Linux是一个大家族,看图

Unix/Linux Distribution Timeline

作者

MinRam

发布于

2022-02-10

更新于

2022-07-17

Licensed under

评论