Linux的应用场景主要是由其特点决定的,其特点主要有:开源、安全、稳定、网络功能强大、支持多种不同平台的处理器。
Linux 的应用场景
服务器
服务器是指提供计算服务的设备,如网页服务器、文件服务器、数据库服务器、邮件服务器、 域名服务器和代理服务器等。可以说我们在互联网上的所有操作,背后都是在跟服务器打交道。 例如我们访问网页、网上购物、微信聊天、运行网络游戏、观看在线视频等一切需要联网才能正常进行的应用, 其背后都由服务器作为支撑。
服务器的实体各种各样,小到单板电脑,大至计算机集群,实际上你正在使用的个人电脑, 安装上对应的服务软件,通过网络给其它计算机提供资源,它也就变身成了一个服务器。 服务器的本质也是计算机,只是通常来说它们没有显示器,不需要鼠标键盘。
在商业应用中,在服务器运行的操作系统主要有Linux、Windows和UNIX,其中由于Linux系统开源、 使用成本低而且安全稳定,所以Linux在服务器使用的系统中占据了绝大多数。
感兴趣的读者可以访问Netcraft 网站 http://www.netcraft.com, 可以查询到其它网站是运行在什么操作系统上的:
可以查询到绝大部分知名网站都运行在Linux系统之上,比如微软官网:www.microsoft.com。 而国内的一些银行官网则通常使用Windows Server系统。特别地,超级计算机也是特殊的服务器,目前全球TOP500的计算机运行的操作系统都是Linux。
嵌入式设备
嵌入式设备的定义比较模糊,不过基本上把PC、集群服务器、超级计算机排除后, 具有处理器(包括微控制器等)的,按设定程序运行的电子设备大都可以归类为嵌入式设备。
嵌入式设备种类非常丰富,包括日常生活中的手机、智能手表、各种家电、玩具、路由器、车载电子系统, 工业应用中包括电力系统监控、环境监测、工业机器人、智能快递柜、手持POS机、 地铁闸机系统、停车场管理、卫星、月球车等。
从嵌入式设备的种类就可以知道它们的应用场景是碎片化的, 它们内部的电子系统一般会针对设备的功能做专用的控制。部分嵌入式设备不使用操作系统; 部分使用freeRTOS等实时操作系统;而另一些高性能的嵌入式设备使用Linux系统。 使用Linux系统的的嵌入式设备,往往是看中Linux系统的如下特性:
- 嵌入式设备使用的处理器多种多样,而Linux系统支持运行在x86、ARM、PowerPC、 MIPS等不同平台的处理器上。
- 由于代码开源,可裁剪,非常适合针对特定场景进行定制,裁剪后的Linux内核加上文件系统可以做到50MB以内, 这能够节省硬件资源和成本。
- 对各种编程语言、类库、编程框架支持良好,如python、java、C++等编程语言, Opencv、TensorFlow等类库和框架,使用freeRTOS等实时操作系统往往很难做到直接支持。
- 应用程序丰富,如音乐播放器、数据库等现成的应用可以直接使用。
-
Linux 职业方向
设备驱动开发
设备驱动,它的本质也是软件程序,不过它介于硬件与操作系统之间的层级,是硬件和操作系统之间的桥梁:
对于不使用操作系统或使用小型实时操作系统(如freeRTOS)的设备来说, 与硬件相关的驱动程序与应用程序往往混合在一起,因此常常不会对驱动与应用进行严格的区分, 这也导致更换硬件平台时,应用程序移植困难。
使用了Linux系统的设备,硬件会由操作系统接管。Linux系统的一个重要设计哲学是一切皆文件。 包括硬件设备,对于系统来说也是一个文件,所以系统向上层应用程序提供open、write、read、close等统一的文件操作接口, 应用程序可以利用这些接口对设备文件进行访问,从而实现对硬件设备的初始化、写入、读取以及关闭等操作。
当系统接收到应用程序的这些访问请求时,它会向下查询对应设备具体的操作函数,然后调用相应的函数处理请求, 而这些针对不同设备具体的操作函数就是设备驱动程序。因此,设备驱动就是这样一种把硬件与操作系统连接在一起的程序, Linux系统会提供统一的格式,设备驱动开发工程师根据具体的设备按照系统格式要求实现相应的设备操作函数。推荐书单
《只是为了好玩》/《Just For Fun》,Linus的自传,通过它可了解Linux的发展史以及了解Linus其人的生活态度。
- 《奔跑吧Linux内核》,分上下两册,建议初学者仅学习上册。
- 《鸟哥的Linux私房菜》,该书主要针对Linux服务器运维人员,主要学习上册,了解Linux的日常应用。
学习路线
为什么选择树莓派教育理念
树莓派(Raspberry Pi)是尺寸仅有信用卡大小的一个小型电脑, 您可以将树莓派连接电视、显示器、键盘鼠标等设备使用, 它的设计目标是用较为低廉的价格和大量开源软件,为青少年提供一个计算机教育平台, 用于培养计算机程序设计的兴趣和能力。现在树莓派已经拥有全球100万用户的作品展示社区,这意味着树莓派有海量的应用可以参考和模仿。 下面是它们的一些DIY案例:
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
树莓派的成功给了国内linux教育一些深刻的启发,那就是编程教育应该是强调探究性、项目式学习, 以此激发探索的好奇心和享受实现自己目标的成就感。从这个角度而言, 掌握一些必备的计算机编程技能只是完成了基本的知识获取过程,重点是站在巨人肩膀上的各种创新。
考虑到开发者技术水平参差不齐,树莓派做了很多软件架构上的优化和开发了很多方便好用工具。 这是树莓派广受好评和便于在社区推广的一大原因,非常值得我们去借鉴学习。但是树莓派也有它的不足之处,那就是它的底层的bootloader和核心数据手册是闭源的,普通用户无法获取。 所以树莓派往往更被学生群体或者其他一些创客群体所青睐,而不太适合嵌入式linux从业者的进阶学习, 闭源的部分导致它在工程项目中使用也带来诸多不便。