第1章Linux操作系统概述Word文档格式.docx
- 文档编号:16568973
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:13
- 大小:45.66KB
第1章Linux操作系统概述Word文档格式.docx
《第1章Linux操作系统概述Word文档格式.docx》由会员分享,可在线阅读,更多相关《第1章Linux操作系统概述Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
注意:
当时苹果公司的Mac系列操作系统不论从性能方面还是用户的易用性方面来说都是最好的,但是其价格也是最高的(现在的情况基本也是如此)。
1.1.2Linux名称的由来
Linux操作系统的名称最初并没有被称做Linux。
Linus给他的操作系统取的名字是Freax,这个单词的含义是怪诞的、怪物、异想天开的意思。
当Torvalds将他的操作系统上传到服务器ftp.funet.fi上的时候,这个服务器的管理员AriLemke对Freax这个名称很不赞成,所以将操作系统的名称改为了Linus的谐音Linux,于是这个操作系统的名称就以Linux流传下来。
在Linus的自传《JustforFun》一书中,Linus解释说:
“AriLemke,他十分不喜欢Freax这个名字。
倒喜欢我当时正在使用的另一个名字Linux,并把我的邮件路径命名为pubOS/Linux。
我承认我并没有太坚持。
但这一切都是他搞的。
所以我既可以不惭愧地说自己不是那么以个人为中心,但是也有一点个人的荣誉感。
而且个人认为,Linux是个不错的名字。
”实际上,在早期的源文件中仍然使用Freax作为操作系统的名字,可以从Makefile文件中看出此名称的一些蛛丝马迹。
关于Linux的发音有各种说法,例如['
linΛks],但是按照Torvalds的说法,Linux中Li中i的发音类似于Minix中i的发音,而nux中u的发音类似于英文单词pronounce中第一个o的发音。
根据Torvalds对此的解释,依照国际音标其发音为['
linэks],与“喱呐科斯”类似。
在网络上有一份Torvalds本人说话的音频,音频中的内容为“Hello,thisisLinusTorvalds,andIpronounceLinuxasLinux”,其下载网络地址为http:
//www.paul.sladen.org/pronunciation/torvalds-says-Linux.wav。
对于Linux发音的解释,还有一份Torvalds本人的解说片段,这一片段发音的视频可以从如下的URL下载:
http:
//www.L
1.2Linux的发展要素
Linux操作系统是UNIX的一种典型的克隆系统。
在Linux诞生之后,借助于Internet网络,在全世界计算机爱好者的共同努力下,成为目前世界上使用者最多的一种类似UNIX的操作系统。
在Linux操作系统的诞生、成长和发展过程中,以下5个方面起到了重要的作用:
UNIX操作系统、Minix操作系统、GNU计划、POSIX标准和Internet网络。
1.2.1UNIX操作系统
UNIX操作系统于1969年在Bell实验室诞生,它是美国贝尔实验室的Ken.Thompson和DennisRitchie在DECPDP-7小型计算机系统上开发的一种分时操作系统。
KenThompson开发UNIX操作系统的初衷是为了能在一台闲置的PDP-7计算机上运行星际旅行游戏,他在1969年夏天花费一个月的时间开发出了UNIX操作系统的原型。
最开始,开发UNIX操作系统使用的是BCPL语言(即通常所说的B语言),后来DennisRitchie于1972年使用C语言对UNIX操作系统进行了改写。
同时UNIX操作系统在大学中得到广泛的推广,并将UNIX的授权分发给多个商业公司。
自从UNIX操作系统从实验室走出来之后,得到了长足的发展。
目前已经成为大型系统的主流操作系统,现在几乎每个主要的计算机厂商都有其自有版本的UNIX。
UNIX是一个功能强大、性能全面的、多用户、多任务的分时操作系统,在从巨型计算机到普通PC等多种不同的平台上,都有着十分广泛的应用。
通常情况下,比较大型的系统应用,例如银行、电信部门,一般都采用固定机型的UNIX解决方案:
在电信系统中以SUN的UNIX系统方案居多,在民航里以HP的系统方案居多,在银行里以IBM的系统方案居多。
Linux是一种UNIX的克隆系统,采用了几乎一致的系统API接口。
特别是网络方面,二者接口的应用程序几乎完全一致。
1.2.2Minix操作系统
Minix操作系统也是UNIX操作系统的一种克隆系统,它由荷兰Amsterdam的Vrije大学著名教授AndrewS.Tanenbaum于1987年开发完成。
Minux操作系统目的主要用于学生学习操作系统原理时教学使用。
在当时Minix操作系统在大学中是免费使用的,但是其他用途则需要收费。
目前Minix操作系统已经全部是免费的,可以从许多FTP上下载,目前主要有1.5版本和2.0版本在使用。
由于Minix操作系统提供源代码,并且与操作系统相结合,有一本高质量的书籍介绍其实现原理,在当时全世界的大学中形成了学习Minix操作系统的风气,Linus刚开始就是参照此系统在1991年开始开发Linux的。
实际上,Minix操作系统并不是很优秀,但是这个操作系统提供了C语言和汇编语言的源代码。
而当时的UNIX操作系统源代码除了极少的范围外一直是保密的,Minix操作系统对程序员来说是一个福音。
为了可以让学生在一个学期内能够学完操作系统的课程,AST保持了Minix操作系统的小型化,没有接受世界各界对Minix扩展的要求,而正是这个原因激发了Linus编写Linux操作系统。
1.2.3POSIX标准
POSIX(PortableOperatingSystemInterfaceforComputingSystems)是由IEEE和ISO/IEC开发的一套标准。
POSIX标准是对UNIX操作系统的经验和实践的总结,对操作系统调用的服务接口进行了标准化,保证所编制的应用程序在源代码一级可以在多种操作系统上进行移植。
在90年代初,POSIX标准的制定处于最后确定的投票阶段,而Linux正处于开始的诞生时期。
作为一个指导性的纲领性标准,Linux的接口与POSIX相兼容。
1.3Linux与UNIX的异同
Linux是UNIX操作系统的一个克隆系统,没有UNIX就没有Linux。
但是,Linux和传统的UNIX有很大的不同,两者之间的最大区别是关于版权方面的:
Linux是开放源代码的自由软件,而UNIX是对源代码实行知识产权保护的传统商业软件。
两者之间还存在如下的区别:
❑UNIX操作系统大多数是与硬件配套的,操作系统与硬件进行了绑定;
而Linux则可运行在多种硬件平台上。
❑UNIX操作系统是一种商业软件(授权费大约为5万美元);
而Linux操作提供则是一种自由软件,是免费的,并且公开源代码。
❑UNIX的历史要比Linux悠久,但是Linux操作系统由于吸取了其他操作系统的经验,其设计思想虽然源于UNIX但是要优于UNIX。
❑虽然UNIX和Linux都是操作系统的名称,但UNIX除了是一种操作系统的名称外,作为商标,它归SCO所有。
❑Linux的商业化版本有RedHatLinux、SuSeLinux、slakewareLinux、国内的红旗Linux等,还有TurboLinux;
UNIX主要有Sun的Solaris、IBM的AIX,HP的HP-UX,以及基于x86平台的SCOUNIX/UNIXware。
❑Linux操作系统的内核是免费的;
而UNIX的内核并不公开。
❑在对硬件的要求上,Linux操作系统要比UNIX要求低,并且没有UNIX对硬件要求的那么苛刻;
在对系统的安装难易度上,Linux比UNIX容易得多;
在使用上,Linux相对没有UNIX那么复杂。
总体来说,Linux操作系统无论在外观上还是在性能上都与UNIX相同或者比UNIX更好,但是Linux操作系统不同于UNIX的源代码。
在功能上,Linux仿制了UNIX的一部分,与UNIX的SystemV和BSDUNIX相兼容。
在UNIX上可以运行的源代码,一般情况下在Linux上重新进行编译后就可以运行,甚至BSDUNIX的执行文件可以在Linux操作系统上直接运行。
1.4操作系统类型选择和内核版本的选择
要在Linux环境下进行程序设计,首先要选择合适的Linux发行版本和Linux的内核,选择一款适合自己的Linux操作系统。
本节对常用的发行版本和Linux内核的选择进行了介绍,并简要讲解了如何定制自己的Linux操作系统。
1.4.1常见的不同公司发行的Linux异同
Linux的发行版本众多,曾有人收集过超过300种的发行版本。
当然,不能在本书中介绍众多的发行版特点,这超出了本书的范围。
本小节对最常用的发行版本进行简单的介绍,表1.1为经常采用的版本。
读者可以去相关网址查找,选择适合的版本使用。
本书所使用的Linux为Debian。
表1.1常用Linux发行版本特点
版本名称
网址
特点
软件包管理器
DebianLinux
www.debian.org
开放的开发模式,并且易于进行软件包升级
apt
FedoraCore
拥有数量庞大的用户,优秀的社区技术支持,并且有许多创新
up2date(rpm),yum(rpm)
CentOS
www.centos.org
CentOS是一种对RHEL(RedHatEnterpriseLinux)源代码再编译的产物,由于Linux是开发源代码的操作系统,并不排斥基于源代码的再分发,CentOS就是将商业的Linux操作系统RHEL进行源代码在编译后分发,并在RHEL的基础上修正了不少已知的bug
rpm
SUSELinux
专业的操作系统,易用的YaST软件包管理系统开放
YaST(rpm),第三方apt(rpm)软件库(repository)
Mandriva
操作界面友好,使用图形配置工具,有庞大的社区进行技术支持,支持NTFS分区的大小变更
KNOPPIX
可以直接在CD上运行,具有优秀的硬件检测和适配能力,可作为系统的急救盘使用
GentooLinux
www.gentoo.org
高度的可定制性,使用手册完整
portage
Ubuntu
优秀易用的桌面环境,基于Debian的不稳定版本构建
1.4.2内核版本的选择
内核是Linux操作系统的最重要的部分,从最初的0.95版本到目前的2.6.28.4版本,Linux内核开发经过了近20年的时间,其架构已经十分稳定。
Linux内核的编号采用如下编号形式:
主版本号.次版本号.主补丁号.次补丁号
例如2.6.26.3各数字的含义如下:
❑第1个数字
(2)是主版本号,表示第2大版本;
❑第2个数字(6)是次版本号,有两个含义:
既表示是Linux内核大版本的第6个小版本,同时因为6是偶数表示为发布版本(奇数表示测试版);
❑第3个数字(26)是主版本补丁号,表示指定小版本的第26个补丁包;
❑第4个数字(3)是次版本补丁号,表示次补丁号的第3个小补丁。
在安装Linux操作系统的时候,最好不要采用发行版本号中的小版本号是奇数的内核,因为开发中的版本没有经过比较完善的测试,有一些bug是未知的,有可能造成使用中不必要的麻烦。
DebianLinux内核的版本稍有不同,如2.6.18-3,可以发现多了一组数字(3),该数字是构建号。
每个构建号可以增加少量新的驱动程序或缺陷修复。
Linux内核版本的开发源代码树目前比较通用的是2.6.xx的版本,当然,有部分2.4的版本仍在使用。
与2.4版本的内核相比较,2.6版本内核具有如下的优势:
❑支持绝大多数的嵌入式系统,加入了之前嵌入式系统经常使用的μClinux的大部分代码,并且子系统的支持更加细化可以支持硬件体系结构的多样性,可抢占内核的调度方式支持实时系统,可定制内核。
❑支持目前最新的CPU,例如Intel的超线程、可扩展的地址空间访问。
❑驱动程序框架变更,例如用.ko替代了原来的.o方式,消除内核竞争,更加透明的子模块方式。
❑增加了更多的内核级的硬件支持。
本书中的环境对Linux的内核没有特殊要求,因此读者在选择内核版本的时候不需要重新编译内核,使用操作系统自带的内核就可以满足需要。
本书作者的操作系统内核为Linux-2.6.18.3-686。
1.5Linux的系统架构
Linux系统从应用角度来看,分为内核空间和用户空间两个部分。
内核空间是Linux操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的。
丰富并且功能强大的应用程序包是一个操作系统成功的必要条件。
1.5.1Linux内核的主要模块
Linux的内核主要由5个子系统组成:
进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。
下面依次讲解这5个子系统。
1.进程调度SCHED
进程调度指的是系统对进程的多种状态之间转换的策略。
Linux下的进程调度有3种策略:
SCHED_OTHER、SCHED_FIFO和SCHED_RR。
❑SCHED_OTHER是用于针对普通进程的时间片轮转调度策略。
这种策略中,系统给所有的运行状态的进程分配时间片。
在当前进程的时间片用完之后,系统从进程中优先级最高的进程中选择进程运行。
❑SCHED_FIFO是针对运行的实时性要求比较高、运行时间短的进程调度策略。
这种策略中,系统按照进入队列的先后进行进程的调度,在没有更高优先级进程到来或者当前进程没有因为等待资源而阻塞的情况下,会一直运行。
❑SCHED_RR是针对实时性要求比较高、运行时间比较长的进程调度策略。
这种策略与SCHED_OTHER的策略类似,只不过SCHED_RR进程的优先级要高得多。
系统分配给SCHED_RR进程时间片,然后轮循运行这些进程,将时间片用完的进程放入队列的末尾。
由于存在多种调度方式,Linux进程调度采用的是“有条件可剥夺”的调度方式。
普通进程中采用的是SCHED_OTHER的时间片轮循方式,实时进程可以剥夺普通进程。
如果普通进程在用户空间运行,则普通进程立即停止运行,将资源让给实时进程;
如果普通进程运行在内核空间,需要等系统调用返回用户空间后方可剥夺资源。
2.内存管理MMU
内存管理是多个进程间的内存共享策略。
在Linux系统中,内存管理的主要概念是虚拟内存。
虚拟内存可以让进程拥有比实际物理内存更大的内存,可以是实际内存的很多倍。
每个进程的虚拟内存有不同的地址空间,多个进程的虚拟内存不会冲突。
虚拟内存的分配策略是每个进程都可以公平地使用虚拟内存。
虚拟内存的大小通常设置为物理内存的两倍。
3.虚拟文件系统VFS
在Linux下支持多种文件系统,如ext、ext2、minix、umsdos、msdos、vfat、ntfs、proc、smb、ncp、iso9660、sysv、hpfs、affs等。
目前Linux下最常用的文件格式是ext2和ext3。
ext2文件系统用于固定文件系统和可活动文件系统,是ext文件系统的扩展。
ext3文件系统是在ext2上增加日志功能后的扩展,它兼容ext2。
两种文件系统之间可以互相转换,ext2不用格式化就可以转换为ext3文件系统,而ext3文件系统转换为ext2文件系统也不会丢失数据。
4.网络接口
Linux是在Internet飞速发展的时期成长起来的,所以Linux支持多种网络接口和协议。
网络接口分为网络协议和驱动程序,网络协议是一种网络传输的通信标准,而网络驱动则是对硬件设备的驱动程序。
Linux支持的网络设备多种多样,几乎目前所有网络设备都有驱动程序。
5.进程间通信
Linux操作系统支持多进程,进程之间需要进行数据的交流才能完成控制、协同工作等功能,Linux的进程间通信是从UNIX系统继承过来的。
Linux下的进程间通信方式主要有管道方式、信号方式、消息队列方式、共享内存和套接字等方法。
1.5.2Linux的文件结构
与Windows下的文件组织结构不同,Linux不使用磁盘分区符号来访问文件系统,而是将整个文件系统表示成树状的结构,Linux系统每增加一个文件系统都会将其加入到这个树中。
图1.1Linux文件系统结构示意图
操作系统文件结构的开始,只有一个单独的顶级目录结构,叫做根目录。
所有一切都从“根”开始,用“/”代表,并且延伸到子目录。
DOS/Windows下文件系统按照磁盘分区的概念分类,目录都存于分区上。
Linux则通过“挂接”的方式把所有分区都放置在“根”下各个目录里。
一个Linux系统的文件结构如图1.1所示。
不同的Linux发行版本的目录结构和具体的实现功能存在一些细微的差别。
但是主要的功能都是一致的。
一些常用目录的作用如下:
❑/etc:
包括绝大多数Linux系统引导所需要的配置文件,系统引导时读取配置文件,按照配置文件的选项进行不同情况的启动,例如fstab、host.conf等。
❑/lib:
包含C编译程序需要的函数库,是一组二进制文件,例如glibc等。
❑/usr:
包括所有其他内容,如src、local。
Linux的内核就在/usr/src中。
其下有子目录/bin,存放所有安装语言的命令,如gcc、perl等。
❑/var:
包含系统定义表,以便在系统运行改变时可以只备份该目录,如cache。
❑/tmp:
用于临时性的存储。
❑/bin:
大多数命令存放在这里。
❑/home:
主要存放用户账号,并且可以支持ftp的用户管理。
系统管理员增加用户时,系统在home目录下创建与用户同名的目录,此目录下一般默认有Desktop目录。
❑/dev:
这个目录下存放一种设备文件的特殊文件,如fd0、had等。
❑/mnt:
在Linux系统中,它是专门给外挂的文件系统使用的,里面有两个文件cdrom、floopy,登录光驱、软驱时要用到。
刚开始使用Linux的人比较容易混淆的是Linux下使用斜杠“/”,而在DOS/Windows下使用的是反斜杠“\”。
例如在Linux中,由于从UNIX集成的关系,路径用“/usr/src/Linux”表示,而在Windows下则用“\usr\src\Linux”表示。
在Linux下更加普遍的问题是大小写敏感,这样字母的大小写十分重要,例如文件Hello.c和文件hello.c在Linux下不是一个文件,而在Windows下则表示同一个文件。
1.6GNU通用公共许可证
GNU通用公共许可证(简称为GPL)是由自由软件基金会发行的用于计算机软件的一种许可证制度。
GPL最初是由RichardStallman为GNU计划而撰写。
目前,GNU通行证被绝大多数的GNU程序和超过半数的自由软件采用。
此许可证最新版本为“版本3”,于2007年发布。
GNU宽通用公共许可证(简称LGPL)是由GPL衍生出的许可证,被用于一些GNU程序库。
1.6.1GPL许可证的历史
GNU通用公共许可证是由RichardStallman为了GNU计划而撰写的,它以GNU的Emacs、GDB、GCC的早期许可证为蓝本。
上述的这些许可证都包含了一些GPL中的版权思想,但是仅仅针对特定的某个程序。
RichardStallman的目标是创造出一种通用的软件许可证制度,来为所有的开源软件代码计划使用。
GPL的“版本1”,在1989年1月诞生。
在1990年时,因为一些共享库的使用而出现了对GPL许可证制度更为宽松的需求,在GPL“版本2”于1991年6月发布时,另一许可证——库通用许可证(LibraryGeneralPublicLicense,简称LGPL)也随之发布,并记做“版本2”以示对GPL的补充。
在LGPL版本2.1发布时与GPL版本不再对应,而LGPL也被重命名为GNU宽通用公共许可证(LesserGeneralPublicLicense)。
GPLv3在2007年6月份开始使用,由于对专利权和数字版权限制的问题造成了自由软件阵营的一次很大的争论。
Stallman于2006年2月25日在自由开源软件开发者欧洲会议上发表的演讲中,对GPLv3的特点作了解释,相对于GPLv2,主要有4个不同的方面:
❑数字版权问题。
在GPLv3中禁止使用GPLv3本身作为数字版权的一部分,同时消费类电子设备上使用GPLv3代码必须开放源代码,而且允许用户自己重新构建。
❑专利扩散许可。
在GPLv3中如果具有专利的代码加入之后,此专利会自动向整个应用程序授权此专利。
❑衍生产品的定义。
在GPLv3中定义了衍生产品,即如果某个模块采用了GPLv3协议,某个产品使用此模块动态链接后,如果此模块可以被其他模块代替,则这个产品不是GPLv3协议,否则需要采用GPLv3协议。
❑GPLv3协议与其他协议的兼容问题。
1.6.2GPL的自由理念
软件的版权保护机制在保护发明人权益的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统 概述