通过上一章初步了解统信UOS后,有些人可能会产生疑问,究竟什么是操作系统,统信UOS又是从何而来的?本章将由这两个问题展开,追本溯源,带领读者走进操作系统、Linux操作系统以及统信UOS,让读者建立起关于操作系统的基本概念。
如果被问到什么是操作系统(Operating System,OS),很多初学者可能会一脸茫然。虽然大家可能都知道平时使用的Windows 10和安卓(Android)其实就是操作系统,但是可能无法准确地说出操作系统的定义,或者无法解释清楚什么是操作系统。各种操作系统的标识如图2.1所示。
图2.1 操作系统的标识
操作系统是计算机中不可或缺的基础系统软件,它是应用运行和用户操作必备的基础环境支撑,是计算机系统的基石。
在计算机中,操作系统起着承上启下的作用。对上,操作系统提供了各个应用运行的环境,它会时时调度各个应用,让它们和谐相处,共享一个硬件环境;对下,它管理各种各样的硬件设备,充分发挥它们的作用,并有条不紊地对硬件资源进行调度,使得各个应用能充分使用各个硬件。如果没有操作系统,各个应用就需要直接处理每种硬件设备,并与系统中运行的其他应用进行通信协同。每个应用自行开发大量与应用业务无关但是与底层支撑相关的功能,这会带来极大的、不必要的工作量。如一位软件工程师本来只想开发一个记事本应用来记录文字,却发现自己还需要先了解键盘、鼠标、显卡、显示器、硬盘甚至网卡怎么使用才能开发应用,工程师会不会有些崩溃?如果觉得这些都是小问题,可以再想象一下,除了以上硬件之外,还需要了解几十种不同型号的键盘、鼠标、显卡、显示器、硬盘以及网卡,此时工程师是不是会有一种要“疯了”的感觉?
当然,如果没有多种硬件设备或多个应用,那么操作系统也就没有那么重要了。如同中央处理器,操作系统也是计算机发展到一定阶段的产物。早期的计算机操作系统都是面对特定问题的,软、硬件是一体研制的,因此每个计算机实际上只需要运行一个软件。这类计算机所需要的硬件也都是专门为这个软件定制的,并不需要额外的操作系统在中间进行硬件管理与应用软件的调度,因为应用软件自身就可以把这些工作都做完。
操作系统的形态有很多,除了大家较为熟悉的桌面、智能手机(包括平板计算机)以及服务器操作系统外,还有嵌入式操作系统(不过很多嵌入式操作系统不同于一般意义上的操作系统)、物联网操作系统等。本书主要关注桌面操作系统。用户日常使用的桌面操作系统以图形用户界面为主、命令行界面为辅(或不使用命令行界面),而服务器操作系统一般仅使用命令行界面。
统信UOS实际上是基于Linux发展而来的。那么什么是Linux?统信UOS又为什么选择Linux呢?这些问题将在下面两节进行详细讲解。
谈到Linux就不得不提及Linux背后的GNU(“GNU is Not UNIX”的递归缩写)计划。GNU计划由理查德·斯托曼(Richard Stallman)于1983年9月27日公开发起,该计划的目标是创建一套“完全自由”的操作系统。GNU计划发起的理由之一就是希望保证GNU软件可以自由地“使用、复制、修改和发布”,这也是GNU通用公共许可证(General Public License,GPL)的来源。GNU的标识如图2.2所示,该图标被使用在GNU的电子文件中,也是自由软件基金会的元素。
图2.2 GNU的标识
在GNU计划的背景下,Linux于1991年诞生,当时的芬兰大学生林纳斯(Linus)出于个人兴趣,基于可移植操作系统接口(Portable Operating System Interface,POSIX)标准在x86处理器上开发了一个类UNIX操作系统,这就是Linux的开始。作为一个操作系统内核,Linux本身没有超前的理论创新,也没有宏伟的蓝图设计,它最引人注目的特点在于它的开发方式。Linux内核是基于GPL第2版发布的,其源代码能被任何人访问到,而且任何人都能参与到Linux的开发中。实际上,现在已有超过1200家公司、2万多人为Linux内核提交过代码,其中包括一些知名的软、硬件发行商。随着各Linux操作系统的成熟与流行,Linux内核已经部署运行在全世界大部分的服务器、智能手机以及相当数量的桌面计算机上,取得了巨大的成功。此外,Linux内核的源代码已经超过了2000万行,而且每天都有万行级别的源代码被提交。在这种规模的软件上,全世界范围内的社区进行合作开发,还能取得如此大的成功,确实是一件出人意料的事情。
需要说明的是,提起Linux的时候,往往指的是Linux内核(Kernel),而不是一般意义上的操作系统。内核是操作系统的核心。Linux内核运行在处理器的特权级别,包含进程管理、内存管理、文件管理、设备管理等功能,能通过驱动程序和固件对底层的硬件进行管理,并提供系统调用等一系列接口给应用使用。但是内核不能被直接使用,它是为软、硬件服务的。
如上所述,用户平时都是通过应用(如命令行程序bash或桌面环境等)来使用计算机操作系统的,这些应用实际上还依赖于一系列的软件库。因此,一个Linux操作系统实际上就是在Linux内核的基础上,加上常见的软件库与软件形成的。图2.3所示的是Linux的标识。
图2.3 Linux的标识
Linux操作系统一般又被称为Linux发行版(Distribution),它们包括大家耳熟能详的Debian、CentOS、Ubuntu、Fedora等。一般情况下,Linux原生内核(又称为“香草内核”,以强调其原生性)通过kernel.org网站发布,各Linux发行版组织会在Linux原生内核的基础上进行定制得到新的内核,并在自己的发行版中使用。
除了内核之外,各发行版还会提供外壳(Shell)程序、常见的运行库(如C语言运行库)、软件包管理程序、系统服务、常见的程序(依应用场景而定)等,从而组成系统镜像(ISO)与软件仓库,提供给普通用户使用。
可能会有读者产生疑问,统信软件为什么不开发一个全新的操作系统,而是基于Linux来开发操作系统?
这是因为开发操作系统是一项异常庞大且非常耗时的工程,仅Linux内核就有近30年的开发历史。同时Linux内核又是一个著名的开源项目,任何人都可以访问并使用,本身具有强大的开发团体。Linux内核就是当下最好的选择,我们完全可以省时又省力地使用Linux内核作为统信UOS的核心,无须开发新的操作系统内核。基于Linux开发的操作系统“统治”了几乎从移动设备到主机的全部领域,如基于Linux内核开发的Android智能手机操作系统,如图2.4所示。
图2.4 Android智能手机操作系统
除此之外,从零打造操作系统主要的问题在于生态建设的时间问题。操作系统本身只是一个承载平台,用户感兴趣的实际上是运行在操作系统之上的应用软件和操作系统对相关硬件的支持。如果新的操作系统打造出来了,但是不能支撑应用软件的迁移与正常运行,或不能使用相关的硬件,那操作系统就失去了存在的意义。操作系统如果要支撑应用软件与硬件,就涉及“拔出萝卜带出泥”的问题,需要兼容大批接口、已有软件和硬件。因此,基于现有系统开发的操作系统可以有效利用成熟的软、硬件与接口,这在初期显得更为重要。
总而言之,Linux作为一个使用GPL的操作系统,其内核与其他软件具有很好的透明性和开放性,而且经过长时间的实践建立了丰富的生态系统。基于Linux开发统信UOS,可为统信UOS的下一步发展打下坚实的基础。著名的物理学家牛顿曾说过:“如果我看得比别人更远些,那是因为我站在巨人的肩膀上。”因此,统信UOS选择Linux也是非常自然的。