HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

为什么要学习 Linux 操作系统?

  • 2019-03-27
  • 本文字数:3288 字

    阅读完需:约 11 分钟

为什么要学习Linux操作系统?

你好,我是你的老朋友刘超。在“趣谈网络协议”结课半年之后,我又给你带来了一个新的基础课程,“趣谈Linux操作系统”。


在“趣谈网络协议”的开篇词中,我表达了作为一个合格的 IT 工程师,在职业生涯中学习基础知识的重要性。如果说当时,我对这件事只是一种感性认识,在专栏推出之后,我的想法有了一些变化。


我通过留言区和同学们进行了很多互动,也和其他做基础知识专栏的作者有了不少交流,我发现,无论是从个人的职业发展角度,还是从公司招聘候选人的角度来看,扎实的基础知识是很多人的诉求。这让我更加坚信,我应该在“趣谈“基础知识这条道路上走下去。


目前极客时间的专栏,覆盖了网络、算法、数学、数据库、编程语言等各个方面,而操作系统也是基础中非常重要的一环。尤其我作为一名云架构师,Linux 操作系统的基础知识更是必不可少的。在实践中收获了很多心得之后,我希望在极客时间继续跟你分享。


你可能会说,我们大学里上过操作系统的课,而且每天都在用操作系统,为什么还要专门学一遍呢?尽管我的操作系统课成绩不错,但是在大学的时候,我和你的看法一样,我觉得这门课没有什么用,现在回想起来可能有这样几个原因。


第一,大学里普遍使用的操作系统是 Windows,老师大多也用 Windows。Windows 的优势是界面友好,很容易上手,于是我们就养成了要配置东西了就去菜单找,用鼠标点点的习惯,似乎会攒电脑、装系统、配软件就能搞定一切问题。


第二,一种操作系统对应的是一系列的软件生态,而大学里很多课程都是围绕 Windows 软件生态展开的。例如学 C++用的是 Vistual Studio,学数据库用的是 SQL Server,做网站用的是 IIS 等等。


第三,大学里的操作系统课往往都是纯讲理论,讲了很多原理,但是压根儿没法和平时用的 Windows 系统的行为关联起来,也根本弄不清操作系统在底层到底是怎么做的。


直到毕业之后,我加入 EMC,第一个项目就是基于 Linux 开发分布式文件系统。你能想象,只能对着一个黑框敲命令时,我心中的崩溃吗?我那时真的觉得,我大学的操作系统算是白学了。于是,我痛定思痛,开启了学习 Linux 的征程。


一旦开始学,我发现,Linux 对于编程世界来说,简直就像一扇门。尽管门里的知识浩如烟海,每一本书都厚如砖头,但我发现这条路上任何一片景色都精彩无比。

打开 Linux 操作系统这扇门,你才是合格的软件工程师

根据 2018 年 W3Techs 的数据统计,对于服务器端,Unix-Like OS 占的比例近 70%,其中 Linux 可以称得上是中流砥柱。随着移动互联网的发展,客户端基本上以 Android 和 iOS 为主。Android 是基于 Linux 内核的,因而客户端也进入了 Linux 阵营。可以说,在编程世界中,Linux 就是主流,不会 Linux 你就会格格不入。


那些火得不行的技术,什么云计算、虚拟化、容器、大数据、人工智能,几乎都是基于 Linux 技术的。那些牛得不行的系统,团购、电商、打车、快递,都是部署在服务端,也几乎都是基于 Linux 技术的。


所以说,如果你想进大公司,想学新技术,Linux 一定是一道绕不过去的坎。只有进入 Linux 操作系统这扇门,你才能成为合格的软件工程师。

研究 Linux 内核代码,你能学到数据结构与设计模式的落地实践

Linux 最大的优点就是开源。作为程序员,有了代码,啥都好办了。只要有足够的耐心,我们就可以一层一层看下去,看内核调度函数,看内存分配过程。理论理解起来不容易,但是一行行的“if-else”却不会产生歧义。


在 Linux 内核里,你会看到数据结构和算法的经典使用案例;你甚至还会看到并发情况下的保护这种复杂场景;在实践中遇到问题的时候,你可以直接参考内核中的实现。


例如,平时看起来最简单的文件操作,通过阅读 Linux 代码,你能学到从应用层、系统调用层、进程文件操作抽象层、虚拟文件系统层、具体文件系统层、缓存层、设备 I/O 层的完美分层机制,尤其是虚拟文件系统对于接入多种类型文件系统的抽象设计,在很多复杂的系统里面,这个思想都能用得上。


再如,当你写代码的时候,大部分情况下都可以使用现成的数据结构和算法库,但是有些场景对于内存的使用需要限制到很小,对于搜索的时间需要限制到很小的时候,我们需要定制化一些数据结构,这个时候内核里面这些实现就很有参考意义了。

了解 Linux 操作系统生态,能让你事半功倍地学会新技术

Linux 是一个生态,里面丰富多彩。很多大牛都是基于 Linux 来开发各种各样的软件。可以这么说,只要你能想象到的技术领域,几乎都能在里面找到 Linux 的身影。


数据库 MySQL、PostgreSQL,消息队列 RabbitMQ、Kafka,大数据 Hadoop、Spark,虚拟化 KVM、Openvswitch,容器 Kubernetes、Docker,这些软件都会默认提供 Linux 下的安装、使用、运维手册,都会默认先适配 Linux。


因此,在 Linux 环境下,很容易能够找到现成的工具,这不仅会让你的工作事半功倍,还能让你有亲密接触大牛思想的机会,这对于你个人的技术进步和职业发展都非常有益。


如果不进入 Linux 世界,你恐怕很难享受到开源软件如此多的红利。


考虑到以上这些,在设计“图解 Linux 操作系统“这个专栏的时候,我主要秉承两大原则,希望能够帮你打开 Linux 操作系统这扇门。


第一个原则仍然是“趣谈”。我希望通过故事化的方式,将枯燥的基础知识结合某个场景,给你生动、具象地讲述出来,帮你加深理解、巩固记忆、夯实基础。


操作系统是干什么的呢?我们都知道,一台物理机上有很多硬件,最重要的就是 CPU、内存、硬盘、网络。同时,一台物理机上也要跑很多程序,这些资源应该给谁用呢?当然是大家轮着用,谁也别独占,谁也别饿着。为了完成资源分配这件事,操作系统承担了一个“大管家”的作用。它将硬件资源分配给不同的用户程序使用,并且在适当的时间将这些资源拿回来,再分配给其他的用户进程。


鉴于操作系统这个“大管家”的角色,我设计了一个故事,将各个知识点串起来,来帮助你理解和记忆。


假设,我们现在就是在做一家外包公司,我们的目标是把这家公司做上市。其中,操作系统就是这家外包公司的老板。我们把这家公司的发展阶段分为这样几个时期:


  • 初创期:这个老板基于开放的营商环境(x86 体系结构),创办一家外包公司(系统的启动)。因为一开始没有其他员工,老板需要亲自接项目(实模式)。

  • 发展期:公司慢慢做大,项目越接越多(保护模式、多进程),为了管理各个外包项目,建立了项目管理体系(进程管理)、会议室管理体系(内存管理)、文档资料管理系统(文件系统)、售前售后体系(输入输出设备管理)。

  • 壮大期:公司越来越牛,开始促进内部项目的合作(进程间通信)和外部公司合作(网络通信)。

  • 集团化:公司的业务越来越多,会成立多家子公司(虚拟化),或者鼓励内部创业(容器化),这个时候公司就变成了集团。大管家的调度能力不再局限于一家公司,而是集团公司(Linux 集群),从而成功上市(从单机操作系统到数据中心操作系统)。



第二个原则就是图解。Linux 操作系统中的概念非常多,数据结构也很多,流程也复杂,一般人在学习的过程中很容易迷路。所谓“一图胜千言”,我希望能够通过图的方式,将这些复杂的概念、数据结构、流程表现出来,争取用一张图串起一篇文章的知识点。最终,整个专栏下来,你如果能把这些图都掌握了,你的知识就会形成体系和连接。在此基础上再进行深入学习,就会如鱼得水、易如反掌。



例如,这张图就表示了文件操作在各个层的数据结构的关联。只要你学完之后,能对着这张图将它们之间的关系讲清楚,对于文件系统的部分,你就会了然于心了。

我是谁:

我是刘超,网易杭州研究院云计算技术部首席架构师,QCon2019 广州专题出品人。我有 15 年云计算领域研发及架构经验,出版过《Lucene 应用开发解密》。


极客时间的老用户都知道,我也是极客时间“趣谈网络协议”专栏的作者,这个专栏目前有超过 3 万人订阅,我收到很多用户的反馈,说非常认可我这种“像小说一样”的“趣谈”形式,讲得通俗易懂,可以更好的理解底层知识。


大家的学习热情也十分高涨,光互动留言就超过了 5 万字。在和很多同学交流后,我发现很多人希望我继续延续“趣谈”的形式,讲一讲 Linux 操作系统。这也是《趣谈 Linux 操作系统》专栏诞生的初衷。


点击这里试看或订阅《 趣谈 Linux 操作系统 》


2019-03-27 14:54157480
用户头像

发布了 23 篇内容, 共 38.7 次阅读, 收获喜欢 160 次。

关注

评论 4 条评论

发布
用户头像
趣谈看似更容易读,但是有两个弊端:1. 多了一次知识形式转化,就会有消息丢失或偏差的风险 2. 学习后只记得故事,不记得原来的术语是什么,不方便复习
2020-03-09 22:30
回复
知识学习就是把抽象的东西转化为自己可以吸收的具体的东西,知识间联系越多越容易理解,理解之后更容易记忆。
已经理解的东西自然不需要多一次形式转化,但是没有理解的人能通过这种方式,快速理解,达到快速学习的目的
2020-12-03 17:52
回复
用户头像
趣谈这样的形式很不错。
2020-01-06 20:14
回复
没有更多了
发现更多内容

顺丰基于 Flink CDC + Hudi 推进实时业务落地

Apache Flink

大数据 flink 实时计算

6位字节跳动资深技术人,给校招生的10个成长建议

字节跳动技术范儿

字节跳动 校园招聘

Nautilus Chain 主网上线,创世 ZBC 质押即将开启

大瞿科技

C语言 typedef的用法示例讲解

梦笔生花

Docker 镜像的导出与导入

陈皮

Docker save load

Spring高手之路1——深入理解与实现IOC依赖查找与依赖注入

砖业洋__

ioc 依赖注入 spring框架 依赖查找 IOC面试题

Filter for GO

数由科技

浅说TCP状态机制

天翼云开发者社区

TCP 数据传输

喜报| 无限极入选信通院 2023 XOps“领新杯”业技融合攻坚先锋案例

CODING DevOps

2023-07-20:假设一共有M个车库,编号1~M,时间点从早到晚是从1~T, 一共有N个记录,每一条记录如下{a, b, c}, 表示一辆车在b时间点进入a车库,在c时间点从a车库出去, 一共有K

福大大架构师每日一题

福大大架构师每日一题

数字先锋|少跑多办!天翼云助力安徽政务跑出便民利企“加速度”

天翼云开发者社区

云计算 云平台

叮!你有一份夏日福利待签收

KaiwuDB

时序数据库 大促 KaiwuDB

AITO问界,先经沧海而后造船

脑极体

智能汽车

AI与HPC融合,未来会朝什么方向发展 | 社区征文

瓜瓜猪

年中技术盘点

AI 改变我们的工作方式 | 社区征文

宇宙之一粟

年中技术盘点

AI绘图:艺术与科技的交融 | 社区征文

IT蜗壳-Tango

年中技术盘点

软件测试 / 测试开发丨 Linux 三剑客与管道使用

测试人

Python 程序员 软件测试 装饰器

【7.14-7.21】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

敏捷产品经理企业培训内容要点

顿顿顿

Scrum 敏捷 Scrum Master 敏捷开发管理工具

Unity 发布《2023 移动游戏增长与变现报告》,聚焦游戏行业高效增长策略

Geek_2d6073

Spring高手之路2——深入理解注解驱动配置与XML配置的融合与区别

砖业洋__

XML配置 spring框架 注解驱动配置 组件注册 组件扫描

Nautilus Chain 主网上线,创世 ZBC 质押即将开启

股市老人

高性能存储 SIG 月度动态:DSMS 完成 Anolis 23 预览版发布,欢迎体验和反馈

OpenAnolis小助手

高性能存储 龙蜥社区 sig Anolis 23 DSMS

PaddleSlim +​OpenVINO助力开发者实现Al模型量化与部署

飞桨PaddlePaddle

人工智能 百度 paddle 百度飞桨

工具产业推广级!腾讯云 CODING 度量平台获得业内权威机构高度认可

CODING DevOps

HTTP接口性能压力测试

javalover123

性能测试 压测 API 压力测试 HTTP API

[Huggingface]系列文章(1)-认识Transformers

alexgaoyh

文本分类 文本生成 huggingface sentiment-analysis text-generation

新兴技术对中药学的革命|社区征文

爱技术的药学生

AI AIGC 年中技术盘点

单线程 Redis 如此快的 4 个原因

越长大越悲伤

redis redis为什么如此快

掌控MySQL并发:深度解析锁机制与并发控制

砖业洋__

表锁 MySQL并发控制 隐式锁 插入意向锁 行锁

为什么要学习Linux操作系统?_开源_刘超_InfoQ精选文章