云架构师进阶攻略(完整版)-2

简介: 云架构师进阶攻略(完整版)

四、了解Linux基础知识


作为一个云架构师,首要的一点,就是要熟悉Linux的基础知识,基本原理了。

说到操作系统,一般有三个维度,一个是桌面操作系统,一个是移动操作系统,一个是服务器操作系统。


Stack Overflow Developer Survey 2018有这样一个统计,对于开发人员来说,桌面操作系统的排名是Windows,MacOS,Linux,所以大部分人平时的办公系统都是windows。

           

当然因为办公的原因,平时使用windows的比较多,所以在学校里,很多同学接触到的操作系统基本上都是Windows,但是一旦从事计算机行业,就一定要跨过Linux这道坎。


根据今年W3Techs的统计,对于服务器端,Unix-Like OS占到的比例为近70%。所谓Unix-Like OS 包括下图的Linux,BSD等一系列。

           

           

从这个统计可以看出,随着云计算的发展,软件SaaS化,服务化,甚至微服务化,大部分的计算都是在服务端做的,因而要成为云架构师,就必须懂Linux。


随着移动互联网的发展,客户端基本上以Android和iOS为主,下图是Gartner的统计。Android是基于Linux内核的。因而客户端也进入了Linux阵营,很多智能终端,智能设备等开发职位,都需要懂Linux的人员。

           

学习Linux主要包含两部分,一个是怎么用,一个是怎么编程,背后原理是什么。


对于怎么用,上手的话,推荐《鸟哥的Linux私房菜》,按着这个手册,就能够学会基本的Linux的使用,如果再深入一点,推荐《Linux系统管理技术手册》,砖头厚的一本书,是Linux运维手边必备。


对于怎么编程,上手的话,推荐《UNIX环境高级编程》,有代码,有介绍,有原理,如果对内核的原理感兴趣,推荐《深入理解LINUX内核》。


Linux的架构如下图

           

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


操作系统的功能之一是系统调用


当用户程序想请求资源的时候,需要调用操作系统的系统调用接口,这是内核和用户态程序的分界线,就像你要打车,要通过打车软件的界面,下发打车指令一样,这样打车软件才会给你调度一辆车。


操作系统的功能之二是进程管理


当一个用户进程运行的时候,内核为他分配的资源,总要有一个数据结构保存,哪些资源分配给了这个进程。分配给这个进程的资源往往包括打开的文件,内存空间等。

           

操作系统的功能之三是内存管理


每个进程有独立的内存空间,内存空间是进程用来存放数据的,就像一间一间的仓库。为了进程使用方便,每个进程内存空间,在进程的角度来看都是独立的,也即都是从0号仓库,1号仓库,一直到N号仓库,都是独享的。但是从操作系统内核的角度来看,当然不可能独享,而是大家共享,M号仓库只有一个,你用他就不能用,这就需要一个仓库调度系统,将用户进程的仓库号和实际使用的仓库号对应起来,例如进程1的10号仓库,对应到真实的仓库是110号,进程2的20号仓库,对应到真实的仓库是120号。


操作系统功能之四是文件系统


对于Linux来讲,很多东西都是文件,例如进程号回对应一个文件,建立一个网络连接也对应一个文件。文件系统多种多样,为了能够统一适配,有一个虚拟文件系统的中间层VFS。


操作系统功能之五是设备管理


设备分两种,一种是块设备,一种是字符设备,例如硬盘就是块设备,可以格式化为文件系统,再如鼠标和键盘的输入输出是字符设备。


操作系统功能之六是网络管理


其实对于Linux来讲,网络也是基于设备和文件系统的,但是由于网络有自己的协议栈,要遵循TCP/IP协议栈标准。


           

对于Linux的基础知识方面,我写了几篇文章如下。


图说Linux进程

图说Linux进程之二

图说Linux进程之三

图解Linux文件系统

图解Linux系统调用

Linux的虚拟文件系统VFS

图解Linux的Socket



相关文章
|
6月前
|
C语言 C++ 编译器
C++入门攻略
C++入门攻略在代码中引用的格式:类型& 引用变量名(对象名) = 引用实体; 5.2 引用的特性: #include<stdio.h>
C++入门攻略
|
移动开发 前端开发 Linux
进阶攻略|前端完整的学习路线
进阶攻略|前端完整的学习路线
229 0
|
机器学习/深度学习 弹性计算 开发工具
【MindStudio训练营第一期]--【新手班】学习笔记①
【MindStudio训练营第一期]--【新手班】学习笔记①
|
存储 缓存 人工智能
云架构师进阶攻略(完整版)-1
云架构师进阶攻略(完整版)
342 0
云架构师进阶攻略(完整版)-1
|
移动开发 前端开发 数据可视化
《Bakery 产品演示平台的探索与实践-念响》演讲视频 + 文字版
《Bakery 产品演示平台的探索与实践-念响》演讲视频 + 文字版
262 0
|
缓存 监控 Kubernetes
云架构师进阶攻略(完整版)-6
云架构师进阶攻略(完整版)
168 0
|
分布式计算 资源调度 搜索推荐
云架构师进阶攻略(完整版)-5
云架构师进阶攻略(完整版)
115 0
|
网络协议 架构师 Linux
云架构师进阶攻略(完整版)-3
云架构师进阶攻略(完整版)
191 0
|
存储 运维 Kubernetes
云架构师进阶攻略(完整版)-4
云架构师进阶攻略(完整版)
194 0
|
小程序
《小程序云应用入门实操系列课程 - 第四讲》电子版地址
小程序云应用入门实操系列课程 - 第四讲
76 0
《小程序云应用入门实操系列课程 - 第四讲》电子版地址