1.为什么学习Linux开发¶
1.1. Linux的应用场景¶
对于一般用户来说,哪怕经常接触PC电脑、手机,也可能只知道Windows、iOS、Andorid系统。
对Linux系统却知之甚少,主要原因为Linux的应用场景主要是服务器和嵌入式设备。
Linux系统在直面消费者的桌面系统领域中并不占据优势。不过,从某种程度来说,
Android系统也属于Linux的一种,毕竟它是基于Linux内核进行开发的,
只是由于它规避了Linux的开源协议,所以不被Linux社区接纳。
Linux的应用场景主要是由其特点所决定的,其特点主要有:开源、安全、稳定、网络功能强大、
支持多种不同平台的处理器。
1.1.1. 服务器¶
服务器是指提供计算服务的设备,如网页服务器、文件服务器、数据库服务器、邮件服务器、
域名服务器和代理服务器等。可以说我们在互联网上的所有操作,背后都是在跟服务器打交道。
例如我们访问网页、网上购物、微信聊天、运行网络游戏、观看在线视频等一切需要联网才能正常运行的应用,
其背后都是由服务器作为支撑。
服务器的实体各种各样,小到单板电脑,大至计算机集群。实际上你所使用的个人电脑,
在安装上对应的服务软件后,通过网络给其它计算机提供资源时,它也可以变身成为一个服务器。
服务器的本质也是计算机,只是通常来说它们没有显示器,也不需要鼠标键盘。
在商业应用中,在服务器运行的操作系统主要有Linux、Windows及UNIX,其中由于Linux系统开源、
使用成本低且安全稳定,所以大多数企业都会选择Linux来进行服务器的开发工作。
感兴趣的读者可以通过访问Netcraft网站(https://sitereport.netcraft.com)
查询到其它网站是运行在什么操作系统上的,具体见下图。
可以查询到绝大部分知名网站都运行在Linux系统之上,包括微软官网:www.microsoft.com。
而国内的一些银行官网则通常使用的是Windows Server系统。
特别地,超级计算机也是特殊的服务器,目前全球TOP500的计算机运行的操作系统几乎都是Linux。
1.1.2. 嵌入式设备¶
嵌入式设备是Linux系统的另一个主战场,本书主要讲解其Linux应用方向。
嵌入式设备的定义比较模糊,不过基本上只要把PC、集群服务器、超级计算机排除后,
具有处理器(包括微控制器、微处理器等)的,按设定程序运行的电子设备大都可以归类为嵌入式设备。
嵌入式设备种类非常丰富,包括日常生活中的手机、智能手表、各种家电、玩具、路由器、车载电子系统,
工业应用中的电力系统监控、环境监测、工业机器人、智能快递柜、手持POS机、
地铁闸机系统、停车场管理、卫星、月球车等。
从嵌入式设备的种类就可以知道它们的应用场景是碎片化的,
它们内部的电子系统一般会针对设备的功能做专用的控制。部分嵌入式设备不使用操作系统;
部分使用freeRTOS等实时操作系统;而另一部分高性能的嵌入式设备则使用Linux系统。
使用Linux系统的的嵌入式设备,往往是看中Linux系统的如下特性:
嵌入式设备使用的处理器多种多样,而Linux系统支持运行在x86、ARM、PowerPC、
MIPS等不同平台的处理器上。
代码开源,可裁剪,非常适合针对特定场景进行定制,裁剪后的Linux内核加上文件系统可以做到50MB以内,
这能够节省硬件资源和成本。
能够良好的支持各种编程语言、类库、编程框架,如python、java、C/C++等编程语言,
以及Opencv、TensorFlow等类库和框架,使用freeRTOS等实时操作系统往往很难做到直接支持。
应用程序丰富,如音乐播放器、数据库等现成的应用可以直接使用。
网络功能强大,使得编写需要联网的应用程序非常方便。

