Linux操作系统基础(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-17 22:57:43

点击下载

作者:方元

出版社:人民邮电出版社有限公司

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Linux操作系统基础

Linux操作系统基础试读:

前言

Linux是一款自由、免费的操作系统,自20世纪90年代问世以来,经历了近三十年的发展,已成为极具影响力的操作系统。Linux系统支持众多的处理器架构,拥有大量的开源软件,以其稳定性、可靠性和灵活的可配置性,在各种计算机系统中得到了广泛的应用,除个人桌面系统以外,在其他所有竞争领域中几乎都占据主流地位。

Linux操作系统涉及的技术非常宽泛,深度上,从一般应用软件的安装使用到操作系统核心和运行机制;广度上,小到可穿戴设备、各种嵌入式应用到大型服务器和集群计算。因此,一本书远不能涵盖如此众多的内容。本书从实用性角度出发,希望能以一个较为典型的Linux系统为例,帮助读者熟悉Linux操作系统环境的基本使用和核心技术。

全书内容按以下章节组织:

第1章介绍 UNIX/Linux 操作系统的发展历史以及一些主流的Linux发行版。Linux系统继承了UNIX系统的优良特性,它的使用环境与UNIX也非常接近。学会使用Linux操作系统,在当今主流操作系统上基本上就不会有太大障碍。

第2章从操作系统的角度,介绍微型计算机系统的构成和Linux系统主要的核心模块——进程管理、存储管理、设备驱动、文件系统和网络连接。向下延展,这些模块分别对应处理器、内存、I/O子系统、磁盘和网络系统,向上扩展,这些模块则通过系统调用与用户空间进行信息交换。

第3章以目前较为普及的一款Linux发行版为例,介绍它的安装和使用环境。Linux系统的软件资源非常丰富,本书选择了其中较有代表性的几类作介绍。Linux 桌面的特点更多在于其选择的多样性,图形化桌面软件的使用与其他操作系统并没有显著的区别,熟悉基本计算机操作的人员都可以很容易掌握。

第4章介绍命令行的使用方法。Linux是一个面向消费的桌面系统,具备优良的开发性能——无论是作为被开发对象还是开发工具。从本章开始,结合Linux的特点,介绍Linux操作系统与软件开发的相关内容。命令行接口是UNIX/Linux操作系统的特色。在Linux系统中,命令行方式开销极低,特别是在嵌入式Linux系统开发和应用中更是必不可少的工具。Linux主流的文本编辑器(如emacs、nano、vim等)都具有命令行方式。文本编辑器之于Linux操作系统是必不可少的。本书并没有花太多的篇幅介绍文本编辑器,尽管 Linux系统推荐的编辑器vim和emacs都非常出色,但学习时间成本较高,且各人都有自己的使用习惯,不便于在一门课程中统一要求。建议读者在使用Linux系统的过程中学习其中的一款,相信对日后的工作将大有裨益。

第5章介绍shell脚本。Linux系统提供了多种脚本语言,shell只是其中之一。shell不仅构成了Linux操作系统的命令行环境,本身也是一套完整的编程语言。从系统启动到系统维护,Linux系统中大量地使用了shell脚本程序和脚本文件。掌握shell编程方法,读者可以更灵活地使用系统的各种软件。

第6章介绍Linux中比较重要的一些系统维护和管理工作,帮助读者理解操作系统的启动和初始化过程,其中重点介绍了软件包管理工具、网络管理、系统日志维护等方面的内容。用户管理已在第4章作了介绍。对于用户的零星调整,桌面环境通常都有便捷的图形化工具可以使用。

第7章介绍如何使用Linux系统进行软件开发。Linux提供了多种编程语言的开发环境,本章以 C 语言为例介绍主要开发工具的使用,学习本章需要有C语言编程基础。除编译器以外,GNU Make和版本控制系统也是软件开发必不可少的工具。GNU Make在本章介绍,版本控制系统由于篇幅较多,另立一章介绍。

第8章介绍目前最为普及的git版本控制系统。版本控制系统可以跟踪文件的变化、创建和合并版本分支、在不同分支之间切换,它是管理软件开发过程的重要工具,特别是在一个有多人参与合作开发的大型项目中,版本控制系统是必不可少的软件。

第9章介绍Linux操作系统内核的源码结构和编译方法。作为嵌入式操作系统,Linux也有非常广泛的应用。通过本章的学习,读者将初步形成嵌入式Linux操作系统内核移植的概念。

虽然 Linux 作为消费型操作系统完全胜任,但至少在现阶段, Linux还主要是当作开发工具使用的。本书大量内容也主要围绕如何使用Linux进行软件开发的相关问题而展开。本书要求读者具有基本的计算机操作能力和编程基础,具备程序设计思想。结合笔者多年教学经验,建议本书教学内容在一个学期内完成,每周安排3课时。具体教学时,第3章可以略过,第7章软件开发过程与第8章版本控制系统相关内容也可以选择穿插讲解。如能安排一定的实验时间,则教学效果更好。

限于笔者的知识水平和认知能力,书中肯定存在一些不当之处,恳请同行专家及读者批评指正。本书顺利成书有赖于 Arm中国大学计划支持,在编写过程中也得到出版社编辑的多方协助,笔者在此表示诚挚的感谢。作者2019年春于南京01 Linux基本介绍

Linux是一款免费的、可自由传播的操作系统,它的诞生充满了传奇色彩。本章简单回顾Linux操作系统的诞生过程并介绍一些重要的Linux发行版。1.1 操作系统的发展

讲到Linux的诞生,不能不提UNIX。UNIX在操作系统领域可谓是大名鼎鼎,它几乎是除 Windows 以外所有现代个人计算机操作系统和服务器操作系统的源头。长期以来,UNIX以其开放性、稳定性、可移植性以及多用户多任务等特点,不仅赢得大量个人计算机用户的喜爱,同时也受到许多计算机厂商的青睐,对Linux产生了深远的影响。1.1.1 历史回顾

操作系统的发展经历了漫长的历史过程。第一代计算机(1945年——1955年,电子管时代)还没有操作系统的概念,甚至连汇编语言都没出现。它使用机器语言编程,在接插板上通过硬连线实现控制功能,每台机器由专门的小组来操作和维护。程序员能做的就是在他的预约机时里到机房把他的接插板插到计算机里,等待运算结果。这一时期,计算机完成的主要工作基本上都是数值计算问题。

到20世纪50年代早期,出现了穿孔卡片和穿孔纸带,如图1.1和图1.2所示,接插板才逐渐退出历史舞台。直到80年代,仍有一些计算机在使用穿孔卡片编程;另一些场合使用的穿孔卡片(例如企业食堂的就餐卡)则一直延续到21世纪初。图1.1 穿孔卡片图1.2 穿孔纸带

随着晶体管的发明,第二代计算机(1955年——1965年,晶体[1]管时代)出现了。由于汇编语言和FORTRAN语言的发明,程序员、操作员开始有了独立的分工。这一时期的用机形式是,程序员将程序写在纸上,制成穿孔卡片或穿孔纸带,交给操作员。操作员把这样的程序送入计算机,等待计算机将结果打印出来,然后将打印单交给程序员。

由于当时的计算机非常昂贵,为了节省用机时间,人们开始使用一种叫作批处理的技术。其基本思想是,用一台比较便宜的机器,将收集到的大量的卡片、卡带程序读到磁带上,然后将磁带送入计算机完成真正的运算。操作员在运行磁带上的程序之前,先装入一个特殊的程序,它会把磁带上的程序逐一读入、运行,并将结果写入另一个磁带。这一批程序全部完成后,程序员再把输出磁带拿到另一台机器上打印出来。这个特殊的程序就是操作系统的雏形。

这一时期计算机完成的主要工作是科学研究和工程应用中的数值计算,典型的操作系统有FMS(FORTRAN Monitor System)和IBMSYS。

比起第二代计算机,第三代计算机(1965年——20世纪80年代,集成电路时代)的性价比有了很大的提高。计算机的应用不再局限于数值计算,迅速推广到了很多行业,包括大规模的商务数据处理。20世纪60年代中期,以OS/360为代表的操作系统出现,开始应用于不同的计算机机型(如OS/360用于IBM公司的System/360系列)。这一代计算机不再需要独立的磁带读写机,操作系统可以从磁带里读入程序,并将结果写到磁带的空白区域。虽然性能得到大幅度提升,但本质上,这类操作系统仍采用的是批处理方式。程序员同样需要等待相当长的时间才能得到结果。

分时系统(Timesharing)的出现改变了这一现象。它的思想是,给每一个程序员分配一个终端,计算机将资源(CPU、存储器等)轮流分配给每个程序员。多数情况下,程序员都是在思考和编辑程序,占用实际机时的工作并不多。在操作系统设计得当的情况下,计算机足以为许多程序员提供及时的交互服务。最终,麻省理工学院(Massachusetts Institute of Technology, MIT)计算中心的开发人员实现了兼容分时系统(Compatible Time Sharing System,CTSS)。1.1.2 UNIX的诞生

CTSS研制成功后,由MIT牵头,通用电气(General Electric Company,GE)和美国电报电话公司(AT&T,American Telephone and Telegraph Inc.)下属的贝尔实验室参与,在1964年开始计划一个宏大的项目:在GE 645计算机上建立一个具备众多功能的信息应用工具,它能够支持上百个用户对大型计算机的交互式分时使用,被命名为“多功能信息计算服务系统”(Multiplexed Information and Computing Service,Multics)。无疑,在这个系统中有很多创新性的思想,影响了其后操作系统的发展。但遗憾的是,由于该项目的预期过于宏伟,而受限于当时的计算机技术水平,虽历经磨难,仍成为一个烂尾工程。

1969年,贝尔实验室从Multics项目中退出。然而,实验室的研[2]究人员肯·汤普森等人带着从Multics项目中激发的灵感开始了新的创作,并将这些灵感付诸实施于一台小型计算机DEC PDP-7上。相比Multics的设计目标,这个操作系统相当简单,只实现了一个文件系统、一个命令解释器和一些简单的文件工具,是一个单任务系统。它被创造者们戏谑地冠名为Unics(Uniplexed Information and Computing Service)。后来,又有人根据发音把它改成了UNIX。

最初的UNIX是用汇编语言写成的,应用程序则使用B语言写成。当将其移植到另一个计算机系统时,改写汇编语言的工作量相当巨大。B语言是一种解释性编程语言,虽然精巧,但作为系统编程语言[3][4]远远不够。直到布莱恩·科尼翰和丹尼斯·里奇发明了C语言,这个情况才开始发生变化。

1973年,汤普森和里奇用C语言重写了整个UNIX系统。从那之后,UNIX操作系统开始了令人瞩目的发展。1974年,汤普森和里奇在《美国计算机通信》上发表了一篇论文,公开展示了UNIX。论文描述了UNIX前所未有的简洁设计,并报告了600多例UNIX应用。论文激起了各大学和研究机构对UNIX的兴趣,都希望能亲身体验UNIX[5]的特性。[6]

由于当时一项针对AT&T法律判决的限制 ,AT&T被禁止进入计算机相关的商业领域,所以,UNIX非但不能作为商品出售,贝尔实验室还必须将非电话业务的技术许可给任何提出要求的人使用。由此,UNIX的源代码被散发到各个大学和研究机构,一方面使科研人员能够根据需要改进系统,或者将其移植到其他的硬件环境中去;另一方面培养了大量懂得Unix使用和编程的学生,这使得Unix的普及更为广泛。也就是说,UNIX一开始就是开源、免费的,只不过它是被迫的。

在这期间,加州大学伯克利分校计算机系统研究小组(Computer Systems Research Group, CSRG)成为一个最重要的学术据点。他们在1974年就开始了对 UNIX 的研究,他们的研究成果就反映在他们使用的UNIX中。他们对UNIX做了相当多的改进,增加了很多在当时非常先进的特性,大部分原有的源代码都被重新写过,并不断将他们的创意和代码反馈到贝尔实验室。很多其他UNIX使用者都希望能得到CSRG改进版的UNIX系统。因此CSRG的研究人员把他们的UNIX做成一个完整的发行版对外发布。第一版发布的时间是1977年,这个发行版的名字就叫BSD UNIX(Berkeley Software Distribution UNIX)。

到此,UNIX就有了两个分支:一个是来自AT&T的UNIX,一个是BSD的UNIX发行版。现代UNIX大部分都是这两个发行版的衍生产品。AT&T 的UNIX也被称作System,并用罗马数字III、IV、V来标记版本。事实上,System IV从未出现过。

BSD UNIX的影响力远大过AT&T UNIX,被很多商业厂家采用,成为很多商用UNIX的基础,特别是其入选美国国防部高级研究计划局(DARPA,Defence Advanced Research Projects Agency),实现了TCP/IP协议栈。直到1982年,根据反托拉斯法,美国法院裁决将贝尔实验室拆分。戴在AT&T头上的紧箍咒终于得以解除,AT&T立即着手UNIX的商业化,并成立了UNIX系统实验室(USL,UNIX System Laboratories)。1983年,AT&T在原有的System III的基础上增加了一些新的特性,发布了UNIX System V。

AT&T进入市场后,发起了与BSD UNIX关于知识产权的侵权诉讼。1991年,他们指控BSDI(Berkeley Software Design Inc.,经营BSD系统的公司,创始人来自CSRG)违反了AT&T的许可权,私自发布自己的UNIX版本,并进一步指控CSRG泄露了UNIX的商业机密。案件直到USL转手给Novell公司(美国计算机企业,创建于1974年,最初是基于CP/M操作系统的硬件制造商,目前主要业务是软件和服务)。才告和解。而CSRG在发布了4.4BSD Lite2之后也宣告解散。项目成员有的进入了UNIX商业公司,有的转而从事其他计算机领域的研究。从此,严格意义上的System V和BSD UNIX都已不复存在,有的只是它们的后续版本。我们现在只能从风格上大致判断某个发行版源自System V还是BSD,很难明确它的整体属于哪个版本。1.1.3 UNIX的发展

UNIX操作系统的魅力不仅在于其功能的强大,还在于其出色的可扩展性。它支持高级语言和各种脚本语言环境。利用这些工具,使用者可以很方便地按照自己的需求和兴趣对原有系统进行扩展,使其具备更强大的能力,完成各种复杂的任务。这满足了相当一部分计算机研究人员和使用者的需要。一旦用了UNIX,体会到UNIX的强大功能,使用者就会希望进一步挖掘它的能力,而不仅是作为一般的用户使用其有限的功能。企业也希望能在其可以承受的条件下,利用UNIX系统的强大处理能力。

由于UNIX是多用户操作系统,作为系统的普通使用者只能使用系统提供的有限功能,只有 UNIX 系统管理员才能充分利用其全部能力。因而能拥有自己的 UNIX 系统也是一个普通UNIX使用者的愿望。但在当时,能够满足上述愿望的计算机并不是每个人都能买得起的。昂贵的硬件,以及UNIX逐渐加深的商业化趋势,都使得拥有自己的UNIX对大多数人而言只是美好的梦想,使用UNIX的机构主要为一些要求较高的科研和大中型企业。

UNIX在其发展之初的相当长一段时间里,都只能运行在高性能的计算机系统上。尽管微软早在20世纪80年代初就已经将AT&T 的版本移植到PC上(微软为PC移植的UNIX叫XENIX,在80286的计算机上就可以运行),但并没有作为主打产品销售,并最终将 XENIX转卖给了SCO(Santa Cruz Operation,软件公司,创立于1979年)。而且由于UNIX商业许可权的限制,个人用户想使用UNIX的源代码仍然有相当高的门槛——System III的售价是4万美元。

进入20世纪90年代,Intel的X86产品性能大幅度提高,个人计算机的硬件能力已接近UNIX对系统的要求。而随着USL与BSD之间法律纠纷的解决,法律障碍也不复存在,人们似乎看到了在个人计算机上使用UNIX的一线曙光。但很遗憾的是,当时大多数UNIX程序员仍然鄙视廉价的X86,而钟情于M68K(摩托罗拉设计的用于小型机或中型机的32位中央处理器,处理器型号以M68000、M68010等命名)系列的高雅设计。这一时期里,个人计算机上几乎是清一色的 Windows,而在小型机、服务器、工作站上,则是各种UNIX群雄并起,成为UNIX发展最繁荣的时期。

回顾UNIX的发展,可以发现其最大特点在于它的开放性。在系统设计之初,UNIX就考虑了各种不同使用者的需要,因而被设计成具备很大可扩展性的系统。它的源代码一开始就是开放的,学生、研究人员出于科研目的或个人兴趣在UNIX上进行各种开发,公开自己的代码,共享成果,淡泊名利,这些行为极大地丰富了 UNIX 本身。很多计算机领域的科学家和技术人员秉承共享精神,开发了数以千计的自由软件,也培养了自由软件运动的土壤。1.2 Linux的诞生1.2.1 塔能鲍姆和他的MINIX[7]

塔能鲍姆编写的MINIX操作系统对Linux操作系统的诞生影响巨大。

安德鲁·塔能鲍姆是荷兰阿姆斯特丹自由大学教授,教授计算机操作系统课程。他编写的教材《操作系统:设计与实现》是关于操作系统的重要著作,很多大学的计算机专业都把它作为教材或者参考书。为了配合这本教材,塔能鲍姆专门编写了能支持当时个人计算机的简化版的UNIX操作系统MINIX(即mini-UNIX)。1987年教材出版时,有关内核、存储管理、文件系统部分的核心代码(共12000行)打印在书中,出版社同时提供完整的源码和编译好的可在软盘上运行的程序作为参考资源。这是一个可以在X86平台上运行的类UNIX操作系统,最初塔能鲍姆希望学生能尽可能方便地获得源代码,而出版社则不愿意,于是双方折中,象征性地收取69美元作为版税(包括书的价格)。2000年4月起,MINIX以BSD版权协议(开源版权协议的一种)发布。而此时其他免费、开源的类UNIX操作系统(如Linux、FreeBSD)已经实用化,MINIX则最终停留在为学生和爱好者提供操作系统模型的阶段。

由于MINIX是为教学目的编写的操作系统,缺乏一定的实用性。但它同时提供了用C语言和汇编语言写的系统源代码,这是自UNIX商业化之后首次提供给程序员系统地分析和学习类UNIX操作系统的源代码的机会。在它的影响下,实用的、免费的操作系统已是呼之欲出。1.2.2 GNU计划[8]

自由软件的倡导者理查德·斯托曼于1983年9月通过互联网的一个新闻组发布消息称,计划开发GNU操作系统。GNU是GNU is Not [9]UNIX(GNU不是UNIX)的首字母缩写,它将是一个免费的、可自由使用的操作系统,和UNIX兼容。GNU的logo如图1.3所示。UNIX的用户可以很容易地切换到这个操作系统上工作。图1.3 GNU logo

1985年,Intel的第一款32位处理器芯片80386问世,它是一个成熟的现代处理器(此前的8086不具备存储器保护方式,而80286的保护方式不够完善,不能与实地址方式共存)。这意味着PC家族已具备运行Unix的硬件基础。

同年5月,斯托曼发表了著名的GNU宣言,阐明了GNU的意义,请求社会对GNU计划加以关注和支持。随后斯托曼创立了自由软件[10]基金会(Free Software Foundation,FSF),并担任不拿工资的主席。

1989年2月,斯托曼拟定了GNU公共版权协议(GNU General Public License,GPL),作为GNU软件的法律文书。GPL强调软件的自由属性:任何人都可以自由地研究、修改、使用和再分发。它规定:遵循GPL版权协议获得的软件,在发布二进制代码的同时必须要让用户能以同等的权利获得修改的源代码;不允许为软件的再发布增加额外的限制条件。GPL 是开源软件界最具影响力的版权协议。

到20世纪90年代初,GNU项目已经开发出许多高质量的免费软件,包括著名的GNU emacs编辑系统、bash shell程序、GNU C编译[11]器GCC和调试器GDB(GNU Debugger)等。这些软件为Linux操作系统的开发创造了合适的环境,也是Linux能够诞生的基础之一。然而,GNU自己的操作系统内核GNU/Hurd则进展缓慢。随着Linux操作系统的横空出世,GNU将注意力转移到这种新型操作系统上面。Debian GNU/Linux就是自由软件基金会对Linux大力支持的结果。1.2.3 Linus和Linux[12]

1988年,李纳斯·托瓦兹开始了他的大学生活。他在学习计算机操作系统课程时,研究了塔能鲍姆教授编写的教材《操作系统:设计与实现》。在此之前他已购买了一台386的个人计算机,得以将学习的MINIX代码在个人计算机上实施。

李纳斯当初并没想到要写一个操作系统。他在自己的计算机上写了一个小程序,包括两个进程,一个进程打印“A”,另一个进程打印“B”,然后又把 A、B 改成了别的东西(一个进程读取键盘信息送到调制解调器,另一个进程则从调制解调器读取信息送到显示屏上)。然后就是键盘、显示器、调制解调器的驱动程序,接着就是磁盘驱动程序,再之后就是文件系统。按他自己的话说,当所有这些都具备之后,一个操作系统的内核也就形成了。

最晚到1991年4月,李纳斯就已经开始全身心地投入到MINIX系统的研究中,并且尝试着将一些GNU软件(GCC编译器、bash shell、GDB等)向MINIX移植。1991年8月25日,李纳斯通过互联网向comp.os.minix新闻组发布了一条消息,大致意思是他正在开发一个供386 (或者486)使用的免费的操作系统,只是出于个人兴趣,不会很大,也不会像GNU那样专业,希望大家多提宝贵意见,等等。

当时这个操作系统还没有正式命名。李纳斯想的是“Freax”,即 free(自由)、freak(怪胎)和x(“UNIX”中的“x”)的组合。当他把程序文件上传到大学的FTP(File Transfer Protocol)服务器上的时候,服务器管理员不喜欢Freax这个名字,也没跟李纳斯商量,就改成了Linux。[13]

同年9月,Linux 0.01版内核公布在赫尔辛基大学的FTP服务器上,源代码共10239行这也标志着Linux操作系统的诞生,从此登上计算机操作系统的舞台,对信息技术的发展产生越来越大的影响。

最初发布的Linux遵从私有版权协议,对商业使用有限制,但已经开始受到GNU的影响。Linux 0.01版就包含了一个GNU的软件bash[14]二进制程序。在听过理查德· 斯托曼的演讲之后,李纳斯开始接受自由软件的思想。从1992年12月的Linux 0.99版开始,即遵从GNU GPL版权协议发布。GPL版权协议使得Linux以更快、更广泛的方式传播,并且在公众心中留下了美好的印象,得到了全世界计算机爱好者的热心支持。

如今,Linux社区相当活跃,成为一个有成千上万人参与的项目。最初,爱好者们通过邮件将代码发给李纳斯,由他将代码规划到内核中。从2005年(Linux内核纳入git版本控制系统)到2017年,共有来自1400多家企业/社团的超过15000人为内核作出过贡献。现在平均每天仍会收到200次左右的代码提交或修改,每6个月左右就会有一个稳定的新版本向外公布,几乎每两个星期就会有一个子版本的更[15]新 。2018年8月发布的Linux-4.18版有6万多个文件,2000多万行代码。

Linux以其可靠性和稳定性,迅速进入服务器领域。全世界超级计算机统计网站公布的数据显示,1998年11月,性能最强的前500台超级计算机,99%以上都在使用UNIX,只有1台在使用Linux;次年6月,这个数字上升到17台;而到2018年6月,世界上最强大的500台超级计算机全部使用Linux。

在移动设备上,Linux 很早就进入了市场竞争,早期的个人数字助理(Personal Digital Assistant,PDA)、手机上都有它的身影。自从谷歌发布Android系统以后,几乎所有的移动设备生产厂商都开始采用这种基于 Linux 内核的操作系统打造手机和平板电脑。据全球网站通信流量检测机构 statcounter 统计,到2018年8月,Android 系统的手机市场占有率为72.9%,平板电脑上则几乎与苹果的iOS平分天下。

Linux操作系统虽有不少优势,但在向个人计算机市场普及过程中仍面临着巨大的障碍,桌面系统的Linux普及始终非常缓慢,到2018年也只占2%左右。大量的Windows用户无法在短时间内改变自己的使用习惯。随着移动设备的普及,Linux 迎来了新的发展机遇。安装 Linux操作系统的服务器配合采用Linux内核或操作系统的互联网设备和移动终端,让人们看到了Linux操作系统在性能上的优势。

Linux 的吉祥物是一个名叫 Tux的企鹅,身着一袭绅士服装,如图1.4所示。Tux可以解释为Torvalds UNIX。它也恰好是tuxedo(一种男式晚礼服)的缩写。Tux形象最早出现在1996年,创作者是美国程序员拉里·爱温(Larry Ewing)。图1.4 企鹅Tux1.2.4 POSIX标准

POSIX(Portable Operating System Interface,缩写中的字母X只是为了发音方便,不对应任何单词)是为了保持计算机系统之间的兼容性,由IEEE和ISO/IEC共同制定的一系列相互关联的标准的总称。该标准基于现有的 UNIX 实践和经验,定义了应用程序编程接口(Application Programming Interface,API)、命令行以及其他应用,保证应用程序在源代码一级上在各操作系统之间的可移植性。此标准源于20世纪80年代中期的一个项目,该项目曾试图将AT&T的System V和BSD UNIX系统的调用接口之间的区别加以调和。

第一个POSIX正式标准在1988年公布。POSIX在IEEE的编号是IEEE 1003,对应的国际标准化组织编号是ISO/IEC 9945。

90年代初,正是Linux刚刚起步的时候,这个标准为Linux提供了极为重要的参考,使得Linux能够在标准的指导下进行开发,并能够与绝大多数UNIX系统兼容。在最初的Linux内核代码中(0.01版、0.11版),就已经为Linux与POSIX标准的兼容做好了准备。1996年,美国国家标准技术局的计算机系统实验室确认Linux 1.2.13版符合[16]POSIX标准。1.3 Linux操作系统的特点

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

1.可靠性、稳定性

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

良好的用户使用习惯是一个重要因素。Linux操作系统对用户权限做了合理的设计,普通用户使用计算机时,无需系统管理员权限就可以完成绝大部分的日常工作,即使错误的操作也不会造成系统级的损害。在这种情况下,即使恶意软件入侵系统,也只能以普通用户的身份运行,不会危及整个系统,病毒丧失传播能力。一旦违反这个规[17]则,系统安全性仍将是一个问题。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;图[18]形界面可以选择功能完备的GNOME或KDE(K Desktop Environment)桌面环境,也可以选择轻量级的XFCE4,甚至在性能较低的平台上只开启窗口管理器(openbox/flwm),也同样能获得图形界面支持。这在一定程度上反而让用户无所适从。但Linux实际上给使用者提供的是机会,而不是困惑。1.4 Linux的主要发行版

我们平常所说的Linux有两个意思,一是指Linux内核,二是指以Linux内核为核心外加大量的GNU软件构建的一整套操作系统。为了区分,后者常常又以发行版名称来指代。

Linux内核遵循GPL开源版权协议,全世界成千上万的软件开发人员为开源世界贡献了无以计数的应用软件,这些软件足以打造一个功能强大的操作系统。任何人,只要遵守版权协议,无需付费,都可以根据自己的设计方案构建一个完整的操作系统,由此就出现了众多的Linux发行版。这种类型的发行版,软件界习惯称GNU/Linux,它表示基于Linux内核的、以GNU软件为基础构成的操作系统,以区别于虽是Linux内核、但应用层不是(或不主要是)GNU软件的操作系统,如Android,或者虽是GNU软件,但不是基于Linux内核的操作系统,[19]如GNU/Hurd。

不同的发行版各有风格,但功能差别并不明显。对使用者来说,主要是使用习惯上的差异;而对管理员来说,在服务器和安装包管理软件上会有一些差别。

表1.1列出了比较有影响的主流Linux发行版、它们的最初发行时间和安装包管理器。表1.1 主流Linux发行版1.4.1 Slackware

Slackware Linux源于SLS(Softland Linux System,最早的Linux[20]发行版之一)。最初的开发者是帕特里克· 福克丁。Slackware的设计理念是稳定、简洁,它力图成为最像Unix的Linux发行版。与其他现代Linux发行版不同,它极少使用图形界面,并且不提供软件包依赖关系的解决方案,只用纯文本文件和少量的脚本程序来管理系统。它也被认为是资深Linux用户的最佳选择。

Slackware Linux 是尚存的最古老的 Linux发行版。Slack一词意为“冷清的、懒惰的”。Slackware 的吉祥物是一个叼着烟斗的企鹅 Tux。帕特里克用这个名字给他的发行版命名,显得沉稳低调。

Slackware Linux 1.00于1993年7月17日发布,使用0.99.11 Alpha版本的内核。Slackware官方没有公布确定的维护周期。从历史上看,2002年6月到2007年7月发布的各个版本,直到2012年8月才停止维

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载