1.1 操作系统
计算机系统是由硬件子系统(处理器、内存、硬盘、键盘、鼠标、显示屏等)和软件子系统(如Windows操作系统、Office办公软件等)组成。
操作系统(Operating System, OS)是软件子系统的一部分。它控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:
(1)文件系统
提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了组织管理数据的方式。
(2)设备驱动程序
提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。
(3)用户接口
如常用的Windows图形界面,可以理解为一种用户与操作系统交互的方式。
(4)系统服务程序
当计算机启动时,会自启动许多系统服务程序,执行安装文件系统、启动网络服务、运行预定任务等操作。
目前流行的服务器和PC端操作系统有UNIX、Linux、Windows、Mac OS等。
1.2 从UNIX到Linux
UNIX诞生于20世纪60年代末,Windows诞生于20世纪80年代中期,Linux诞生于20世纪90年代初,可以说UNIX是操作系统中的“老大哥”。
1.2.1 UNIX历史
以肯·汤普森(Ken Thompson)为首的贝尔实验室研究人员,于1969年实现了一种分时操作系统的雏形,1970年该系统正式取名为UNIX。
肯·汤普森当年开发UNIX的初衷是运行他编写的一款计算机游戏Space Travel,这款游戏模拟太阳系天体运动,由玩家驾驶飞船,观赏景色并尝试在各种行星和月亮上登陆。他先后在多个系统上试验,但运行效果不甚理想,于是决定自己开发一个操作系统,就这样,UNIX诞生了。
1971—1972年,肯·汤普森的同事丹尼斯·里奇(Dennis Ritchie)发明了传说中的C语言,这是一种适合编写系统软件的高级语言,它的诞生是UNIX系统发展过程中的一个重要里程碑,它宣告了在操作系统的开发中,汇编语言不再是主宰。到了1973年,UNIX系统的绝大部分源代码都用C语言进行了重写,这为提高UNIX系统的可移植性打下了基础(之前操作系统多采用汇编语言,对硬件依赖性强),也为提高系统软件的开发效率创造了条件。
目前常见的UNIX系统版本有Sun Solaris、FreeBSD、IBM AIX、HP-UX等。
肯·汤普森和丹尼斯·里奇因在计算机领域做出的杰出贡献,于1983年获得了计算机科学的最高奖——图灵奖。
1.2.2 Linux往事
Linux内核最初是由李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的。第一个版本于1991年9月发布,当时仅有10000行代码。
李纳斯·托瓦兹公开了Linux源代码,并邀请他人一起完善Linux。与Windows及其他有专利权的操作系统不同,任何人都可以免费使用Linux。据估计,现在只有2%的Linux核心代码是由李纳斯·托瓦兹自己编写的,可以说现在大家所使用的Linux,是由李纳斯·托瓦兹和后续加入的众多Linux爱好者共同开发完成的。
李纳斯·托瓦兹还敲出了世界上最大的程序员社区GitHub(开源代码库及版本控制系统)。
Linux Logo是一只企鹅,关于它的由来有一种说法是:
企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于世界上的任何国家,任何国家都无权将南极洲纳入其版图。Linux选择企鹅图案作为Logo,其含义是:开放源代码的Linux为全人类共同所有,任何公司无权将其私有。
1.2.3 UNIX/Linux系统结构
UNIX/Linux系统可以简单地抽象为3层。底层是UNIX/Linux操作系统,一般称之为系统内核(Kernel);中间层是Shell层,即命令解释层;高层则是应用层。
(1)内核层
内核层是UNIX/Linux系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。
(2)Shell层
Shell层是与用户直接交互的界面。用户可以在提示符下输入命令行,由Shell解释执行并输出相应结果或者有关信息,所以我们也把Shell称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。
(3)应用层
应用层提供基于X Window协议的图形环境。X Window协议定义了一个系统所必须具备的功能(就如同TCP/IP是一个协议,定义软件所应具备的功能),任何系统能满足此协议及符合X协会其他的规范,便可称为X Window。
X Window与微软的Windows图形环境有很大的区别:
UNIX/Linux系统与X Window没有必然捆绑的关系,也就是说,UNIX/Linux可以安装X Window,也可以不安装;而微软的Windows图形环境与内核捆绑密切。UNIX/Linux系统不依赖图形环境,依然可以通过命令行完成100%的功能,而且因为不使用图形环境还会节省大量的系统资源。
作为服务器部署,绝大多数Linux并不安装或并不启用图形环境。
1.2.4 Linux的发行版本
Linux的发行版本可以大体分为两类:一类是商业公司维护的发行版本;另一类是社区组织维护的发行版本。前者以著名的Red Hat为代表,后者以Debian为代表。下面介绍4款我国国内应用较多的Linux发行版本。
(1)Red Hat Linux
Red Hat公司的产品主要包括RHEL(Red Hat Enterprise Linux,收费版本)和CentOS(RHEL的社区克隆版本,免费版本)、Fedora Core(由Red Hat桌面版发展而来,免费版本)。
本文以CentOS为例讲解,它是基于RHEL源代码重新编译、去除Red Hat商标的产物,各种操作使用和付费版本没有区别,且完全免费。缺点是不向用户提供技术支持,也不负任何商业责任。
Red Hat官方网站:http://www.redhat.com。
CentOS官方网站:http://www.centos.org。
(2)Ubuntu Linux
Ubuntu基于知名的Debian Linux发展而来,界面友好,容易上手,对硬件的支持非常全面,是目前最适合做桌面系统的Linux发行版本,而且Ubuntu的所有发行版本都免费提供。
Ubuntu官方网站:http://www.ubuntu.com。
(3)SuSE Linux
SuSE Linux以Slackware Linux为基础,原来是德国的SuSE Linux AG公司发布的Linux版本,1994年发行了第一版,早期只有商业版本,2004年被Novell公司收购后,成立了OpenSUSE社区,推出了自己的社区版本OpenSUSE。
SuSE Linux在欧洲较为流行,在我国国内也有较多应用。SuSE Linux可以非常方便地实现与Windows的交互,硬件检测非常优秀,拥有界面友好的安装过程、图形管理工具,对于终端用户和管理员来说使用非常方便。
SuSE官方网站:https://www.suse.com。
OpenSUSE官方网站:http://www.opensuse.org。
(4)Gentoo Linux
Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。Gentoo是所有Linux发行版本里安装最复杂的,到目前为止仍采用源码包编译安装操作系统。不过,它是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。自从Gentoo 1.0面世后,它就像一场风暴,给Linux世界带来了巨大的惊喜,同时也吸引了大量的用户和开发者投入Gentoo Linux的怀抱。有人这样评价Gentoo:快速、设计干净而有弹性,它的出名是因为其高度的自定制性——它是一个基于源代码的发行版。
Gentoo官方网站:http://www.opensuse.org。