1.3 Linux操作系统的特点

Linux是一种可以在PC上运行的类UNIX操作系统,它与其他商业性操作系统的最大不同在于它的开放性。Linux的源代码是完全公开的,用户可以在网上自由下载、复制和使用。Linux之所以能在短短十几年的时间得到迅猛的发展,其自身具有的良好特性是分不开的。Linux操作系统具有以下主要特点。

1.可靠性、稳定性

Linux运行于保护模式,内核态和用户态地址空间分离,对不同用户的读、写权限进行控制,带保护的子系统及核心授权等多项安全技术措施共同保障系统安全。再加上良好的用户使用习惯,使得Linux系统能够长期稳定地运行。

良好的用户使用习惯是一个重要因素。Linux操作系统对用户权限做了合理的设计,普通用户使用计算机时,无需系统管理员权限就可以完成绝大部分的日常工作,即使错误的操作也不会造成系统级的损害。在这种情况下,即使恶意软件入侵系统,也只能以普通用户的身份运行,不会危及整个系统,病毒丧失传播能力。一旦违反这个规则,系统安全性仍将是一个问题。Android系统root后root是指利用Android系统的漏洞获得root权限的一种行为。遭受恶意软件侵害的例子并不鲜见。

Linux的内核源代码是公开的,几乎所有应用软件的源代码也都是公开的,不存在暗箱。只有少数发行版的极少数软件是闭源的,并且也不是必须的选择。这种情况下,恶意代码很难有容身之地。世界各地的软件工程师和Linux用户都在热心地为开源社区提供建议。一旦出现bug,可以很快得到修正。因此,稳定、可靠的Linux操作系统成为绝大多数服务器的首选。

2.良好的可移植性

Linux软件开发遵循POSIX标准,在不同平台之间不经修改或只需很少的修改就可以直接使用。Linux内核支持包括Intel、Arm、PowerPC等数十种处理器架构和上百种硬件平台,小到掌上电脑、可穿戴设备,大到超级计算机、集群计算都可以看到Linux的身影。

3.设备独立性

在Linux系统中,有“一切皆是文件”之说,所有设备都统一被当作文件看待。操作系统核心为每个设备提供了统一的接口调用。应用程序可以像使用文件一样,操纵、使用这些设备,而不必了解设备的具体细节。在每次调用设备提供服务时,内核都以相同的方式来处理它们。设备独立性的关键在于内核的适应能力。它带来的好处是,用户程序和物理设备无关,系统变更外设时程序不必修改,提高了外围设备分配的灵活性,能更有效地利用外设资源。

4.多种人机交互界面

Linux从初期单调的字符界面,发展到如今丰富的图形化界面和功能强大的命名行方式并存,可以满足不同系统资源的需求。传统的命令行界面利用shell强大的编程能力,为用户扩充系统功能提供了更高效便捷的手段。Linux的图形桌面有多种选择,可以充分体现用户的个性化设置。

5.多用户、多任务支持

UNIX设计之初就是为了满足多人使用计算机的需求。Linux继承了UNIX的这一特性,天生就是一个多用户操作系统。除了像其他运行在个人计算机上的操作系统一样,可以为每个用户分配独立的系统资源以外,Linux还可以让多人同时使用一台计算机。这一点,与专为个人计算机设计的操作系统大不一样。

多任务是现代操作系统的一个重要特性,它是指计算机同时执行多个程序,并且各个程序的运行互相独立。Linux系统调度为每一个任务独立分配处理器资源和存储空间,相互之间不会干扰,某个任务的失败一般不会影响到其他任务。这为系统的可靠性提供了保障。

6.完善的网络功能

Linux具备UNIX的全部功能,包括TCP/IP网络协议的完备实现,同时也支持完整的TCP/IP客户与服务器功能,具有强大的网络通信能力。Linux还具有开放性,支持各种类型的软件和硬件,同时具备先进的内存管理机制,能更加有效地利用计算机资源。

7.多种文件系统支持

Linux通过虚拟文件系统层实现对不同文件系统的支持,几乎可以识别目前所有已知的磁盘分区格式,软件不经修改就可以对不同分区的文件进行读写操作,如图1.5所示。

图1.5 通过虚拟文件系统的多文件系统支持

8.便捷的开发和维护手段

Linux各发行版提供了多种编程语言开发工具,此外还大量地使用了脚本语言,除了方便编程以外,还为系统的可维护性提供了基础。Linux的各种服务都是通过脚本程序维护的,服务器的功能也是通过脚本文件配置的,包括系统的启动过程,也通过脚本程序完成。管理员可以使用任何自己熟悉的文本编辑工具管理计算机。

从发展历史来看,Linux是从成熟的UNIX操作系统发展而来的,技术上具备UNIX操作系统的几乎所有优点。并且Linux是开源的、可以自由传播的操作系统。

Linux的核心具有其竞争对手无法比拟的稳定性和高效率,在不使用图形界面的情况下占用系统资源极少,即使在一台低配置的计算机硬件平台上也能达到服务器般的性能。Linux是一个真正的多用户、多任务的操作系统,具有良好的兼容性、强大的可移植性、高度的稳定性、漂亮的用户界面,软件界公认的较好的语言编辑器和更高效率的开发环境。

从另一方面说,Linux发展了二十多年,个人桌面用户却仍只占很小的份额,也不能不承认它自身存在一些问题。这些问题归纳起来大致有以下几条。

(1)使用Linux开发软件的门槛比较高。大量的Linux软件没有图形界面,Linux开发环境也主要是命令行方式的。对于资深软件工程师而言,Linux的命令行方式已经有足够高的效率,他们更在意文本编辑器的性能,若是双手在键盘、鼠标之间来回切换,反而更加低效。为Linux编写的集成开发环境(Integrated Development Environment,IDE)也有一些,但由于Linux系统软件的特点,不同图形软件所依赖的图形库不同,基于GTK+库的IDE可能不适合Qt,反之亦然。而且由于Linux世界的多元化,每个开发人员的风格、习惯不同,有多种IDE供选择反而分散了用户群,更不利于IDE的推广。

(2)缺乏为特定产品定制的集成开发环境。某些软件由于涉及厂商的知识产权,只能靠厂商自己开发。由于Linux用户数量少,厂商在Linux软件开发上的投入就少。不仅是与硬件相关的产品,专业软件、游戏软件面对的差不多也是同样的局面。

(3)缺少符合用户习惯的办公软件。作为办公工具使用的计算机占据庞大的台式机市场,微软的Office系列软件持续影响了办公人员使用习惯二十多年。虽然Linux早已有多款类似功能的软件,从早期的OpenOffice.org到现在的LibreOffice。但由于微软Office文档长期使用私有格式标准,使双方文档格式难以统一(MS Office 2013开始完整地支持ISO/IEC 29500:2008格式标准)。Linux并不缺乏出色的写作/排版工具,但其傲慢的心态导致对大众化办公软件的开发缺乏热心。

(4)Linux早期给人们造成的一些错误印象:命令行方式让人觉得Linux很难用,实际上命令行方式只是使用Linux的一种选择而非必须;安装软件要从源码开始编译,还要解决令人头疼的依赖关系,实际上大多数Linux发行版早就开发了安装包管理工具并建立了网络软件源仓库,大量的软件都可以通过包管理工具安装,并能自动解决依赖关系,只有极少数软件必须通过源码编译,但这仍然是选择而不是缺失;缺少对硬件设备的驱动支持,实际上Linux可支持的硬件相当广泛,而且很多硬件厂商即使不愿意开源,也会提供相关的支持固件,此外由于Linux设备独立性的特点,个人计算机系统很多设备无需额外安装驱动就可以直接使用。

事实上,导致用户远离Linux的技术原因并不多,主要还是习惯上的原因。并且,在使用Linux的时候,面对的将是多种选择的可能。比如网络浏览器,可以选择火狐或Chrome,也可以选择轻量级的Midori,甚至在没有图形界面时还可以选择纯字符界面的w3m;图形界面可以选择功能完备的GNOMEGNOME最初是GNU Network Object Model Environment的缩写,此概念目前已不再使用。或KDE(K Desktop Environment)桌面环境,也可以选择轻量级的XFCE4,甚至在性能较低的平台上只开启窗口管理器(openbox/flwm),也同样能获得图形界面支持。这在一定程度上反而让用户无所适从。但Linux实际上给使用者提供的是机会,而不是困惑。