《第1章 Linux操作系统概述》由会员分享,可在线阅读,更多相关《第1章 Linux操作系统概述(23页珍藏版)》请在金锄头文库上搜索。
1、第第1 1章章 LinuxLinux操作系统概述操作系统概述Linux操作系统是目前上升最快的操作系统,从操作系统是目前上升最快的操作系统,从1991年年诞生到现在的二十多年间,诞生到现在的二十多年间,Linux逐步完善和发展。逐步完善和发展。Linux操操作系统在服务器、嵌入式等方向获得了长足的发展,并在个作系统在服务器、嵌入式等方向获得了长足的发展,并在个人操作系统方面有着大范围的应用,这主要得益于其开放性。人操作系统方面有着大范围的应用,这主要得益于其开放性。本章对本章对Linux的发展进行介绍,主要包含如下几个方面:的发展进行介绍,主要包含如下几个方面:Linux发展的历史,以时间为主
2、线对发展的历史,以时间为主线对Linux的诞生进行介的诞生进行介绍;绍;分析分析Linux和和UNIX操作系统的异同;操作系统的异同;介绍常用的几种介绍常用的几种Linux发行版本的特点;发行版本的特点;对对Linux操作系统的系统架构进行简单的介绍;操作系统的系统架构进行简单的介绍;介绍了介绍了GNU通用公共许可证及其特点。通用公共许可证及其特点。1.1 Linux1.1 Linux发展历史发展历史Linux操作系统于操作系统于1991年诞生,目前已经成为主流的操年诞生,目前已经成为主流的操作系统之一。其版本从开始的作系统之一。其版本从开始的0.01版本到目前的版本到目前的2.6.28.4版
3、版本经历了本经历了20多年的发展,从最初的蹒跚学步的婴儿成长为目多年的发展,从最初的蹒跚学步的婴儿成长为目前在服务器、嵌入式系统和个人计算机等多个方面得到广泛前在服务器、嵌入式系统和个人计算机等多个方面得到广泛应用的操作系统。应用的操作系统。1.1.1 Linux1.1.1 Linux的诞生和发展的诞生和发展Linux的诞生和发展与个人计算机的发展历程是紧密相的诞生和发展与个人计算机的发展历程是紧密相关的,特别是随着关的,特别是随着Intel的的i386个人计算机的发展而逐步成熟。个人计算机的发展而逐步成熟。在在1981年之前没有个人计算机,计算机是大型企业和政府部年之前没有个人计算机,计算机
4、是大型企业和政府部门才能使用的昂贵设备。门才能使用的昂贵设备。IBM公司在公司在1981年推出了个人计算年推出了个人计算机机IBM PC,从而造成个人计算机的发展和普及。刚开始的时,从而造成个人计算机的发展和普及。刚开始的时候,微软帮助候,微软帮助IBM公司开发的公司开发的MS-DOS操作系统在个人计算操作系统在个人计算机中占有统治地位。随着机中占有统治地位。随着IT行业的发展,个人计算机的硬件行业的发展,个人计算机的硬件价格虽然逐年在下降,但是软件特别是操作系统的价格一直价格虽然逐年在下降,但是软件特别是操作系统的价格一直居高不下。居高不下。与个人计算机对应,在大型机上的主流操作系统是与个人
5、计算机对应,在大型机上的主流操作系统是UNIX,而,而UNIX操作系统对操作系统的发展有诸多障碍:操作系统对操作系统的发展有诸多障碍:UNIX的经销商为了寻求高利率,将价格抬得很高,个的经销商为了寻求高利率,将价格抬得很高,个人计算机的用户就根本不能靠近它,不利于操作系统的普及。人计算机的用户就根本不能靠近它,不利于操作系统的普及。1.1.2 Linux1.1.2 Linux名称的由来名称的由来Linux操作系统的名称最初并没有被称作操作系统的名称最初并没有被称作Linux。Linus给他的操作系统取的名字是给他的操作系统取的名字是Freax,这个单词的含义是怪诞,这个单词的含义是怪诞的、怪物
6、、异想天开的意思。当的、怪物、异想天开的意思。当Torvalds将他的操作系统上将他的操作系统上传到服务器传到服务器ftp.funet.fi上的时候,这个服务器的管理员上的时候,这个服务器的管理员Ari Lemke对对Freax这个名称很不赞成,所以将操作系统的名称这个名称很不赞成,所以将操作系统的名称改为了改为了Linus的谐音的谐音Linux,于是这个操作系统的名称就以,于是这个操作系统的名称就以Linux流传下来。流传下来。在在Linus的自传的自传Just for Fun一书中,一书中,Linus解释解释说:说:“Ari Lemke,他十分不喜欢,他十分不喜欢Freax这个名字。倒喜欢
7、这个名字。倒喜欢我当时正在使用的另一个名字我当时正在使用的另一个名字Linux,并把我的邮件路径命,并把我的邮件路径命名为名为pub OS/Linux。我承认我并没有太坚持。但这一切都。我承认我并没有太坚持。但这一切都是他搞的。所以我既可以不惭愧地说自己不是那么以个人为是他搞的。所以我既可以不惭愧地说自己不是那么以个人为中心,但是也有一点个人的荣誉感。而且个人认为,中心,但是也有一点个人的荣誉感。而且个人认为,Linux是个不错的名字。是个不错的名字。”实际上,在早期的源文件中仍然使用实际上,在早期的源文件中仍然使用Freax作为操作系统的名字,可以从作为操作系统的名字,可以从Makefile
8、文件中看出此文件中看出此名称的一些蛛丝马迹。名称的一些蛛丝马迹。1.2 Linux1.2 Linux的发展要素的发展要素Linux操作系统是操作系统是UNIX的一种典型的克隆系统。在的一种典型的克隆系统。在Linux诞生之后,借助于诞生之后,借助于Internet网络,在全世界计算机爱网络,在全世界计算机爱好者的共同努力下,成为目前世界上使用者最多的一种类好者的共同努力下,成为目前世界上使用者最多的一种类UNIX操作系统。在操作系统。在Linux操作系统的诞生、成长和发展过程操作系统的诞生、成长和发展过程中,如下五个方面起了重要的作用:中,如下五个方面起了重要的作用:UNIX操作系统、操作系统
9、、Minix操作系统、操作系统、GNU计划、计划、POSIX标准和标准和Internet网络。网络。1.2.1 UNIX1.2.1 UNIX操作系统操作系统UNIX操作系统于操作系统于1969年在年在Bell实验室诞生,它是美国实验室诞生,它是美国贝尔实验室的贝尔实验室的Ken.Thompson和和Dennis Ritchie在在DEC PDP-7小型计算机系统上开发的一种分时操作系统。小型计算机系统上开发的一种分时操作系统。Ken Thompson开发开发UNIX操作系统的初衷是为了能在操作系统的初衷是为了能在一台闲置的一台闲置的PDP-7计算机上运行星际旅行游戏,他在计算机上运行星际旅行游
10、戏,他在1969年年夏天花费一个月的时间开发出了夏天花费一个月的时间开发出了UNIX操作系统的原型。最操作系统的原型。最开始,开发开始,开发UNIX操作系统使用的是操作系统使用的是BCPL语言(即通常所说语言(即通常所说的的B语言),后来语言),后来Dennis Ritchie于于1972年使用年使用C语言对语言对UNIX操作系统进行了改写。同时操作系统进行了改写。同时UNIX操作系统在大学中得操作系统在大学中得到广泛的推广,并将到广泛的推广,并将UNIX的授权分发给多个商业公司。的授权分发给多个商业公司。Linux是一种是一种UNIX的克隆系统,采用了几乎一致的系统的克隆系统,采用了几乎一致
11、的系统API接口。特别是网络方面,二者的接口的应用程序几乎完接口。特别是网络方面,二者的接口的应用程序几乎完全一致。全一致。1.2.2 MINIX1.2.2 MINIX操作系统操作系统Minix操作系统也是操作系统也是UNIX操作系统的一种克隆系统,它操作系统的一种克隆系统,它由荷兰由荷兰Amsterdam的的Vrije大学著名教授大学著名教授Andrew S.Tanenbaum于于1987年开发完成。年开发完成。Minux操作系统目的主操作系统目的主要用于学生学习操作系统原理时教学使用。在当时要用于学生学习操作系统原理时教学使用。在当时Minix操操作系统在大学中使用是免费的,但是其他用途则
12、需要收费。作系统在大学中使用是免费的,但是其他用途则需要收费。目前目前Minix操作系统已经都是免费的,可以从许多操作系统已经都是免费的,可以从许多FTP上下上下载,目前主要有载,目前主要有1.5版本和版本和2.0版本在使用。版本在使用。由于由于Minix操作系统提供源代码,并且与操作系统相结操作系统提供源代码,并且与操作系统相结合,有一本高质量的书籍介绍其实现原理,在当时全世界的合,有一本高质量的书籍介绍其实现原理,在当时全世界的大学中形成了学习大学中形成了学习Minix操作系统的风气,操作系统的风气,Linus刚开始就是刚开始就是参照此系统在参照此系统在1991年开始开发年开始开发Linu
13、x的。的。1.2.3 POSIX 1.2.3 POSIX 标准标准POSIX(Portable Operating System Interface for Computing Systems)是由)是由IEEE和和ISO/IEC开发的一套标开发的一套标准。准。POSIX标准是对标准是对UNIX操作系统的经验和实践的总结,操作系统的经验和实践的总结,对操作系统系统调用的服务接口进行了标准化,保证所编制对操作系统系统调用的服务接口进行了标准化,保证所编制的应用程序在源代码一级可以在多种操作系统上进行移植。的应用程序在源代码一级可以在多种操作系统上进行移植。在在90年代初,年代初,POSIX标准的
14、制定处于最后确定的投票标准的制定处于最后确定的投票阶段,而阶段,而Linux正处于开始的诞生时期。作为一个指导性的正处于开始的诞生时期。作为一个指导性的纲领性标准,纲领性标准,Linux的接口与的接口与POSIX相兼容。相兼容。1.3 Linux1.3 Linux与与UNIXUNIX异同异同Linux是是UNIX操作系统的一个克隆系统,没有操作系统的一个克隆系统,没有UNIX就就没有没有Linux。但是,。但是,Linux和传统的和传统的UNIX有很大的不同,两有很大的不同,两者之间的最大区别是关于版权方面的:者之间的最大区别是关于版权方面的:Linux是开放源代码是开放源代码的自由软件,而的
15、自由软件,而UNIX是对源代码实行知识产权保护的传统是对源代码实行知识产权保护的传统商业软件。两者之间还存在如下的区别:商业软件。两者之间还存在如下的区别:UNIX操作系统大多数是与硬件配套的,操作系统与硬操作系统大多数是与硬件配套的,操作系统与硬件进行了绑定;而件进行了绑定;而Linux则可运行在多种硬件平台上。则可运行在多种硬件平台上。UNIX操作系统是一种商业软件(授权费大约为操作系统是一种商业软件(授权费大约为5万美元)万美元);而;而Linux操作提供则是一种自由软件,是免费的,并且公操作提供则是一种自由软件,是免费的,并且公开源代码。开源代码。UNIX的历史要比的历史要比Linux
16、悠久,但是悠久,但是Linux操作系统由于操作系统由于吸取了其他操作系统的经验,其设计思想虽然源于吸取了其他操作系统的经验,其设计思想虽然源于UNIX但但是要优于是要优于UNIX。1.4 1.4 操作系统类型选择和内核版本的选择操作系统类型选择和内核版本的选择要在要在Linux环境下进行程序设计,首先要选择合适的环境下进行程序设计,首先要选择合适的Linux发行版本和发行版本和Linux的内核,选择一款适合自己的的内核,选择一款适合自己的Linux操作系统。本节对常用的发行版本和操作系统。本节对常用的发行版本和Linux内核的选择进行内核的选择进行了介绍,并简要讲解了如何定制自己的了介绍,并简
17、要讲解了如何定制自己的Linux操作系统。操作系统。1.4.1 1.4.1 常见不同公司发行的常见不同公司发行的LinuxLinux的异同的异同Linux的发行版本众多,曾有人收集过超过的发行版本众多,曾有人收集过超过300种的发行版本。种的发行版本。当然,不能在本书中介绍众多的发行版特点,这超出了本书的范围。当然,不能在本书中介绍众多的发行版特点,这超出了本书的范围。版本名称网址特点软件包管理器Debian Linuxwww.debian.org开放的开发模式,并且易于进行软件包升级aptFedora C拥有数量庞大的用户,优秀的社区技术支持,并且有许多创新up2date(rpm), yum
18、(rpm)CentOSwww.centos.orgCentOS是一种对RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于Linux是开发源代码的操作系统并不排斥基于源代码的再分发,CentOS就是将商业的Linux操作系统RHEL进行源代码在编译后分发,并在RHEL的基础上修正了不少已知的BugrpmSUSE L专业的操作系统,易用的YaST软件包管理系统开放。YaST(rpm),第三方apt(rpm)软件库(repository)M操作界面友好,使用图形配置工具,有庞大的社区进行技术支持,支持NTFS分区的大小变更rpmKNOPPIX可以直接在CD上运行,具
19、有优秀的硬件检测和适配能力,可作为系统的急救盘使用aptGentoo Linuxwww.gentoo.org高度的可定制性,使用手册完整portageU优秀易用的桌面环境,基于Debian的不稳定版本构建apt1.4.2 1.4.2 内核版本的选择内核版本的选择内核是内核是Linux操作系统的最重要的部分,从最初的操作系统的最重要的部分,从最初的0.95版本到目前的版本到目前的2.6.28.4版本,版本,Linux内核开发经过了近内核开发经过了近20年年的时间,其架构已经十分稳定。的时间,其架构已经十分稳定。Linux内核的编号采用如下内核的编号采用如下编号形式:编号形式:主版本号主版本号.次
20、版本号次版本号.主补丁号主补丁号.次补丁号次补丁号Linux内核版本的开发源代码树目前比较通用的是内核版本的开发源代码树目前比较通用的是2.6.xx的版本,当然,有部分的版本,当然,有部分2.4的版本仍在使用。与的版本仍在使用。与2.4版版本的内核相比较,本的内核相比较,2.6版本内核具有如下的优势:版本内核具有如下的优势:支持绝大多数的嵌入式系统,加入了之前嵌入式系统经支持绝大多数的嵌入式系统,加入了之前嵌入式系统经常使用的常使用的Clinux的大部分代码,并且子系统的支持更加细的大部分代码,并且子系统的支持更加细化可以支持硬件体系结构的多样性,可抢占内核的调度方式化可以支持硬件体系结构的多
21、样性,可抢占内核的调度方式支持实时系统,可定制内核。支持实时系统,可定制内核。1.5 Linux1.5 Linux的系统架构的系统架构Linux系统从应用角度来看,分为内核空间和用户空间系统从应用角度来看,分为内核空间和用户空间两个部分。内核空间是两个部分。内核空间是Linux操作系统的主要部分,但是仅操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的。丰富并且功能强有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程序包是一个操作系统成功的必要条件。大的应用程序包是一个操作系统成功的必要条件。1.5.1 Linux1.5.1 Linux内核的主要模块内核的主要模块Lin
22、ux的内核主要由的内核主要由5个子系统组成:进程调度、内存个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。下面依次讲管理、虚拟文件系统、网络接口、进程间通信。下面依次讲解这五个子系统。解这五个子系统。1进程调度进程调度SCHED2内存管理内存管理MMU3虚拟文件系统虚拟文件系统VFS4网络接口网络接口5进程间通讯进程间通讯1.5.2 Linux1.5.2 Linux的文件结构的文件结构与与Windows下的文件组织结构不同,下的文件组织结构不同,Linux不使用磁不使用磁盘分区符号来访问文件系统,而是将整个文件系统表示成树盘分区符号来访问文件系统,而是将整个文件系统表示成
23、树状的结构,状的结构,Linux系统每增加一个文件系统都会将其加入到系统每增加一个文件系统都会将其加入到这个树中。这个树中。操作系统文件结构的开始,只有一个单独的顶级目录结操作系统文件结构的开始,只有一个单独的顶级目录结构,叫做根目录。所有一切都从构,叫做根目录。所有一切都从“根根”开始,用开始,用“/”代表,代表,并且延伸到子目录。并且延伸到子目录。DOS/Windows下文件系统按照磁盘分下文件系统按照磁盘分区的概念分类,目录都存于分区上。区的概念分类,目录都存于分区上。Linux则通过则通过“挂接挂接”的方式把所有分区都放置在的方式把所有分区都放置在“根根”下各个目录里。下各个目录里。1
24、.5.2 Linux1.5.2 Linux的文件结构的文件结构1.6 GNU1.6 GNU通用公共许可证通用公共许可证GNU通用公共许可证(简称为通用公共许可证(简称为GPL)是由自由软件基)是由自由软件基金会发行的用于计算机软件的一种许可证制度。金会发行的用于计算机软件的一种许可证制度。GPL最初是最初是由由Richard Stallman为为GNU计划而撰写。目前,计划而撰写。目前,GNU通行通行证被决大多数的证被决大多数的GNU程序和超过半数的自由软件采用。此许程序和超过半数的自由软件采用。此许可证最新版本为可证最新版本为“版本版本3”,于,于2007年发布。年发布。GNU宽通用公宽通用
25、公共许可证(简称共许可证(简称LGPL)是由)是由GPL衍生出的许可证,被用于衍生出的许可证,被用于一些一些GNU程序库。程序库。1.6.1 GPL1.6.1 GPL许可证的历史许可证的历史GPL的的“版本版本1”,在,在1989年年1月诞生。在月诞生。在1990年时,因年时,因为一些共享库的使用而出现了对为一些共享库的使用而出现了对GPL许可证制度更为宽松的许可证制度更为宽松的需求,在需求,在GPL“版本版本2”在在1991年年6月发布时,另一许可证月发布时,另一许可证库通用许可证(库通用许可证(Library General Public License,简称,简称LGPL)也随之发布,并
26、记作)也随之发布,并记作“版本版本2”以示对以示对GPL的补充。的补充。在在LGPL版本版本2.1发布时与发布时与GPL版本不再对应,而版本不再对应,而LGPL也被也被重命名为重命名为GNU宽通用公共许可证(宽通用公共许可证(Lesser General Public License)。)。相对于相对于GPLv2,主要有四个不同的方面:,主要有四个不同的方面:数字版权问题。数字版权问题。专利扩散许可。专利扩散许可。衍生产品的定义。衍生产品的定义。GPLv3协议于其他协议的兼容问题。协议于其他协议的兼容问题。1.6.2 GPL1.6.2 GPL的自由理念的自由理念软件的版权保护机制在保护发明人权
27、益的同时,对软件软件的版权保护机制在保护发明人权益的同时,对软件的技术进步造成了影响。版权所有软件的最终用户几乎不能的技术进步造成了影响。版权所有软件的最终用户几乎不能从所购买的软件中得到任何软件设计相关的权利(除了使用从所购买的软件中得到任何软件设计相关的权利(除了使用的权利),甚至可能限制像逆向工程等法律允许范围内的行的权利),甚至可能限制像逆向工程等法律允许范围内的行为。与此对应,为。与此对应,GPL授予程序的接受方下述的权利,即授予程序的接受方下述的权利,即GPL所倡导的所倡导的“自由自由”:可以以任何目的运行所购买的程序;可以以任何目的运行所购买的程序; 在得到程序代码的前提下,可以
28、以学习为目的,对源程在得到程序代码的前提下,可以以学习为目的,对源程序进行修改;序进行修改; 可以对复制件进行再发行;可以对复制件进行再发行; 对所购买的程序进行改进,并进行公开发布;对所购买的程序进行改进,并进行公开发布; 1.6.3 GPL1.6.3 GPL的基本条款的基本条款GPL许可证作为许可证作为Linux平台软件的主要许可证,有很多平台软件的主要许可证,有很多独特的地方。独特的地方。GPL授权的软件并不是说使用者在得到此软件授权的软件并不是说使用者在得到此软件后可以无限制的使用,而是同样要遵循一定的规则,其中主后可以无限制的使用,而是同样要遵循一定的规则,其中主要的一点就是开放源代
29、码。使用要的一点就是开放源代码。使用GPL授权发布的商业软件,授权发布的商业软件,也并不是不要钱,其盈利模式是采用收取服务费用的方式来也并不是不要钱,其盈利模式是采用收取服务费用的方式来获取利益。获取利益。GPL中的主要条款包括权利授予、中的主要条款包括权利授予、copyleft。1授予的权利授予的权利2copyleft1.6.4 1.6.4 关于关于GPLGPL许可证的争议许可证的争议使用使用GPL的许可证造成了目前的很多争议,主要是对的许可证造成了目前的很多争议,主要是对软件的版权方面的界定、软件的版权方面的界定、GPL的软件传染性、商业开发方面的软件传染性、商业开发方面的困扰等等。比较有
30、代表性的是对的困扰等等。比较有代表性的是对GPL软件产品的链接库使软件产品的链接库使用的产品版权界定,即非用的产品版权界定,即非GPL软件是否可以链接到软件是否可以链接到GPL的库的库程序。程序。对于对于GPL开放源代码进行修改的产品演绎开放源代码进行修改的产品演绎GPL的授权的授权规定的很明确,但是对于使用规定的很明确,但是对于使用GPL链接库的产品是否是链接库的产品是否是GPL演绎产品就存在很多定义,演绎产品就存在很多定义,FSF认为这种作品就是演绎作品,认为这种作品就是演绎作品,但是其他专家并不认同这种观点,分成了自由和开放源代码但是其他专家并不认同这种观点,分成了自由和开放源代码社区两
31、派。这个问题其实不是技术问题,这是一个法律界定社区两派。这个问题其实不是技术问题,这是一个法律界定的问题,需要法律的案例来例证。的问题,需要法律的案例来例证。1.7 Linux1.7 Linux软件开发的可借鉴之处软件开发的可借鉴之处在在Linix的发展过程中,形成了一种独特的成功模式,包的发展过程中,形成了一种独特的成功模式,包含软件的开发模式。含软件的开发模式。使用集市模式进行软件开发应该有一个基本成型的软件使用集市模式进行软件开发应该有一个基本成型的软件原型,这样后来的参与者能够对此进行改进,更重要的是能原型,这样后来的参与者能够对此进行改进,更重要的是能够看到成功的曙光、可以看到不远的
32、将来能够成功,获得参够看到成功的曙光、可以看到不远的将来能够成功,获得参与的动力。与的动力。集市模式的开发把软件的使用者作为开发的协作者而不集市模式的开发把软件的使用者作为开发的协作者而不仅仅是一个简单的用户,这样开发者和使用者能够共同对作仅仅是一个简单的用户,这样开发者和使用者能够共同对作品进行快速的代码该井和高效路的调试。品进行快速的代码该井和高效路的调试。集市模式开发使用早发布、常发布的方法,来方便听取集市模式开发使用早发布、常发布的方法,来方便听取客户的建议,对软件进行改进。项目的开发者想出好主意是客户的建议,对软件进行改进。项目的开发者想出好主意是件好事,而从使用者那里发现主意是比前
33、者更好的事情。因件好事,而从使用者那里发现主意是比前者更好的事情。因为从使用者那里发现的主意是有的放矢,更加切合实际的。为从使用者那里发现的主意是有的放矢,更加切合实际的。1.8 1.8 小结小结本章对本章对Linux的形成历史进行了简单的介绍,并对其发的形成历史进行了简单的介绍,并对其发展历程中其重要作用的展历程中其重要作用的5个要素进行了解释。与个要素进行了解释。与UNIX系统相系统相比较,比较,Linix操作系统有很多不同之处,特别是在版权方面。操作系统有很多不同之处,特别是在版权方面。Linux的发行版本数以百计,其中的的发行版本数以百计,其中的Debian、Fedora Core及及openSUSE是比较有代表性的集中。本书中例子均是比较有代表性的集中。本书中例子均以以Debian为例进行介绍。并介绍了为例进行介绍。并介绍了Linux的系统架构和的系统架构和Linux内核模块之间的关系。对内核模块之间的关系。对GNU的通用公共许可证进行的通用公共许可证进行了介绍,特别是了介绍,特别是GNU的的copyleft概念。最后介绍了概念。最后介绍了Linux开开发模式的成功之处,对集市开发模式进行了简单的介绍。发模式的成功之处,对集市开发模式进行了简单的介绍。