第1章 Linux操作系统概述.docx
《第1章 Linux操作系统概述.docx》由会员分享,可在线阅读,更多相关《第1章 Linux操作系统概述.docx(53页珍藏版)》请在冰豆网上搜索。
第1章Linux操作系统概述
第1章Linux操作系统概述
1.1什么是操作系统?
计算机根据指令来自动执行任务。
计算机程序指一系列按照特定顺序组织的计算机数据和指令的集合。
而计算机软件=程序+数据+文档。
计算机硬件指的是计算机的物理部件,包括主板、处理器、磁盘、键盘、鼠标、显示器、打印机、网卡等。
一般认为,计算机硬件包括五大基本单元,分别是输入单元、输出单元、算术逻辑单元、控制器和存储单元。
算术逻辑单元ALU(Arithmetic Logic Unit)也成为运算器,它是计算机对数据进行加工处理的部件,包括算术运算(加、减、乘、除等)和逻辑运算(与、或、非、异或、比较等)。
控制器负责从存储单元中取出指令,并对指令进行译码;根据指令的要求,按时间的先后顺序,负责向其它各部件发出控制信号,保证各部件协调一致地工作,一步一步地完成各种操作。
控制器和运算器组合在一起称为中央处理器CPU(Central Processing Unit,简称 CPU)。
存储单元是计算机记忆或暂存数据的部件。
计算机中的全部信息(包括数据和指令)都存放在存储单元中。
存储单元分为主存(内存)和外存两种,外存包括硬盘、U盘、SD卡等。
所有的单元都是由CPU内部的控制单元来负责协调和进行计算,CPU进行计算和判断的数据都来自于内存,因此内存的容量会影响整个系统的性能。
CPU的一个参数为CPU的指令一次可以读写的最大数据量,32位CPU指的是指令一次最多读取32位的数据,而64位CPU则指的是一次最多读取64位的数据。
一个32位的CPU访问的内存地址=
,即4GB。
存储单元由许多半导体器件组成,这些器件可以存储一个比特的数据(1或者0)。
计算机系统采用二进制运算,存储单元一般以8个比特(bit)即一个字节byte为单位(1B=8b)。
由于存储单元的容量一般比较大,进一步引入了kilo、mega等。
6GB的内存大小实际为6*1024*1024*1024=6442450944字节。
进制
Kilo
Mega
Giga
Tera
Peta
二进制
十进制
需要注意的是硬盘厂商在标注容量时采用十进制为单位,比如500GB,实际上是500*1000*1000*1000Byte。
而在计算机内显示时采用二进制,因此容量为466GB。
目前硬盘主要有两大类,分别是机械硬盘HDD(HardDiskDrive)和固态硬盘SSD(SolidStateDrive)。
主要的尺寸为3.5英寸(一般用于台式机)和2.5英寸(一般用于笔记本电脑和移动硬盘)。
HDD采用磁性碟片来存储,由磁盘和读取部件等组成。
早期硬盘采用与软盘类似的结构,由重叠的一组磁盘构成。
当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track)。
磁盘上的每个磁道被等分为若干个弧段,即扇区(sector),它是磁盘读写的基本单位,每一条磁道都具有相同的扇区数。
早期一个扇区一般为512个字节,现在也支持4K字节。
一个磁盘一般包括正反两面,磁头(Head)给出了是哪个盘片的哪一面。
具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。
这样硬盘的读写采用3D寻址方式CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),Head表示硬盘有只要知道了硬盘的CHS的数目,即可确定硬盘的容量,硬盘的容量=柱面数*磁头数*扇区数*512B。
老式硬盘中,由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费很多磁盘空间,人们改用等密度结构生产硬盘。
也就是说,外圈磁道的扇区比内圈磁道多,采用这种结构后,硬盘不再具有实际的3D参数,寻址方式也改为逻辑块寻址LBA(Logicalblockaddressing),这是一种线性寻址,即以扇区为单位进行寻址。
为了与使用3D寻址兼容,硬盘控制器内部安装了一个地址翻译器,由它负责将老式3D参数翻译成新的线性参数。
这样用户可以选择硬盘的不同工作模式,比如LBA、LARGE、NORMAL等。
硬盘与主板之间的接口包括IDE(PATA)、SCSI、SATA、IDE,而USB和eSATA接口用于外接移动硬盘、U盘等。
IDE(IntegratedDriveElectronics)接口也称为PATA(ParallelAdvancedTechnologyAttachment),采用传统的40-pin并口数据线,传输速率最大133MB/s。
由于并口线的抗干扰性太差,且排线占空间,不利计算机散热,逐渐被SATA所取代。
SATA(SerialATA)采用串行连接方式,具备更强的纠错能力,传输速率150MB/s。
最新的版本为SATA3.0,传输速率可达600MB/s。
SCSI(SmallComputerSystemInterface)接口并不是转为硬盘设计的接口,而是一种高速数据传输技术,具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等优点主要应用于中、高端服务器和高档工作站中。
光纤通道(FibreChannel)为多硬盘系统环境而设计的,能满足高端工作站、服务器、海量存储子网络、外设间通过集线器、交换机和点对点连接进行双向、串行数据通讯等系统对高数据传输率的要求。
SAS(SerialAttachedSCSI)即串行连接SCSI,是新一代的SCSI技术,通过采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。
固态硬盘SDD采用闪存颗粒来存储,相比机械硬盘,读写速度更快,低功耗、无噪音、轻便、防震抗摔,但是价格更贵,容量也要小。
什么是操作系统?
操作系统是计算机运行的总控制程序,管理和控制计算机系统中的硬件和软件资源,为用户提供一个功能强大、使用方便和可扩展的工作环境,从而在计算机与用户之间起到接口作用。
内核(kernel)是操作系统的核心,当计算机启动时,经过一个引导(bootstrap)过程来初始化计算机,加载操作系统,最后启动一个操作系统内核程序。
内核程序一直运行,管理计算机的资源,为用户提供服务。
考虑到有各种各样的硬件,因此内核通过驱动程序来管理和使用硬件,而应用程序通过系统调用接口来使用内核提供的服务来访问资源。
所有的操作系统除了内核外,还提供大量的系统程序以供使用,其中最重要的程序是为用户提供使用计算机的界面(UserInterface)的程序,一般会提供一个基于文本的用户界面(称为shell或者命令行)和一个基于图形的用户界面GUI(GraphicalUserInterface)。
除此之外还包括许多实用工具。
所以操作系统=内核+系统程序。
目前常用的操作系统包括MicrosoftWindows、MacintoshOS、Unix、Linux、Android和IOS等。
操作系统
1.2Linux历史
1965年,美国电话电报公司(AT&T)旗下的贝尔实验室(Bell)、麻省理工学院(MIT)及通用电器(GE)共同发起了Multics(MultiplexedInformationandComputingSystem)的计划,为大型机开发一个多用户多任务操作系统。
1969年贝尔实验室退出了该研究计划。
但是贝尔实验室的一个研究人员KenThompson有一个在Multics上开发的游戏SpaceTravel,回到Bell实验室后找到了一台空闲的DEC公司制造的微型计算机PDP-7,为了能够继续玩SpaceTravel,在该机器上开发了一个简单的小型操作系统,命名为UNICS(UniplexedInformationandComputingSystem),后来改名为Unix。
后来他们获得了一台较新的PDP-11,在当时PDP-11最大瓶颈之一是一次只能运行一个程序,1973年KenThompson和DennisRitchie(第一个C语言编译器的作者)一起将UNIX移植到PDP-11,用C语言重写了UNIX内核,在移植过程中将UNIX改造成一个支持多用户的分时系统,在1974年发布了UNIX第五版,1974年7月在CommunicationsoftheACM上发表了操作系统领域最重要的一篇论文“TheUNIXTime-sharingSystem”。
1975年KenThompson前往加州伯克利分校(UniversityofCaliforniaatBerkeley)进行一年的交流访问,同一年AT&T公司正式将UNIX许可给大学使用。
1977年,伯克利分校的BillJoy(后来创办了Sun公司)等创建和发布(1978年)了第一版的BSD(BerkeleySoftwareDistribution)。
1982年发布的4.1BSD支持TCP/IP,从而得到了广泛的使用,1983年发布了4.2BSD。
1979年AT&T公司意识到了UNIX系统的价值,宣布将UNIX作为一个商业产品进行销售,不再允许公司之外的人自由查看系统的源代码,同时要求所有的BSD用户购买相应的源代码License。
1982年AT&T发布了第一个商业版本UNIXSystemIII,1983年发布了SystemV。
在此后出现了两个UNIX的分支,分别是SYSV和BSD,两者非常类似,只是在文件系统结构、系统程序名称选项以及系统调用库有少许不同。
由于Unix的可移植性与强大的性能,许多商业公司包括HP、IBM、DEC、Sun、SCO等也为自己生产的硬件发布了各自的Unix操作系统。
由于AT&T要求用户购买源代码许可证,BSD对于AT&T的商业化运作不满,开始完全重写所有基于AT&T公司代码的内核和系统程序,最终BillJolitz和他的妻子LynneJolitz在1992年发布了一个开放源码的完全和AT&T无关的操作系统,称为386/BSD,很快流行起来。
由于BillJolitz拥有一份全职工作,没有时间处理所有的补丁和增强,于是一组志愿者接管了这项工作,同时将该操作系统重新命名为FreeBSD。
FreeBSD只能运行在PC硬件上,一些志愿者成立了新的小组将FreeBSD移植到其他类型的计算机上,该小组提供的版本称为NetBSD。
20世纪90年代中期,NetBSD进一步分出另一个分支来关注安全和密码学问题,其发布的版本称为OpenBSD。
1979年之后需要源代码License才能查看UNIX源代码,这使得大学里的操作系统学习再也无法采用UNIX了。
荷兰的AndrewTanenbaum教授从头构建了一个新的与UNIX类似但非常小的操作系统Minix(MinimalUnix),1987年发行了第一版本,Minix迅速成为学习操作系统以及体验操作系统的最佳工具。
之后许多程序员希望能够对官方版本进行增强,但是Tanenbaum否决了大部分请求,其坚持Minix应该是一个简单的操作系统,适合于教学需要。
1985年RichardStallman启动了一个称为自由软件基金会FSF(FreeSoftwareFoundation),其认为“计算机用户应该能够自由地修改软件以适应自己的需求,并且自由共享软件“,所谓”自由软件“指的是任何人都可以对自由软件进行检查、修改、共享以及发行,但是其并不排斥对于自由软件的服务或者发行进行收费。
为了避免混淆,自由软件现在称为开放源代码软件(OpenSourceSoftware)。
由于计算机的核心是操作系统,所以FSF的第一个目标是创建一个可以自由共享和修改的操作系统,这个类Unix操作系统的项目的名称被命名为GNU,注意其是“GNU’sNotUnix”的首字母缩写词,发音为Guh-NOO,或直接字母发音。
到20世纪80年代末,作为GNU项目的一部分,包括编辑器Emacs、C编译器gcc、C++编译器g++、调试器gdb、UnixShellBash等实用工具逐步发布,但是一直没有发布一个成型的类Unix内核(GNUHurd内核)。
1991年芬兰Helsinki大学计算机科学系的二年级学生LinusTorvalds在阅读了Tanenbaum的操作系统书籍以及附录中的12000行源代码后,编写了一个工作在PC机上的新的类UNIX操作系统内核,命名为Linux(来源于Linus'sUnix的缩写,发音为[ˈlɪnəks])。
Linux内核采用了FSF的GPL许可证,这样允许志愿者参与修改及扩展,同时Linus也尽可能快地发布新版本的内核,这使得Linux迅速变得非常流行。
Linux吸纳了Unix两大分支的优点,采用SYSV风格的启动文件样式和BSD风格的文件系统布局,支持SYSV、BSD以及IEEE的POSIX(PortableOperatingSystemInterface)系统调用。
操作系统内核可以分为两大类,分别是规模较大的单内核(monolithickernel)和规模较小的微内核(microkernel)。
微内核只执行最基本的任务,其他功能需要调用其它称为服务器的程序,由于采用模块化设计,容易理解,而且更易于定制和更新。
单内核中所有的功能在一个程序中完成,速度比较快。
Linux内核以及大多数Unix系统采用单内核的设计,不过MINIX采用微内核设计,1992年Tanenbaum批评Linux单内核已经落伍了,从而引发了与Linus之间的一场争论。
严格来讲,Linux指的是一个操作系统内核,一个完整的操作系统还需要包括其他实用工具。
人们提供的基于Linux内核的操作系统称为Linux发行版(Distribution)。
大多数Linux发行版使用FSF的GNU实用工具,所以Linux操作系统称为GNU/Linux可能更为恰当。
除了Linux和Unix操作系统外,目前比较流行的操作系统还包括微软的Windows系列以及Apple的MacintoshOSX。
OSX实际上基于Unix,采用基于Mach的微内核,可以通过Terminal窗口来访问Unix命令行。
在移动互联网平台上主要的操作系统为Android和苹果公司的IOS。
Android系统基于Linux,采用了Linux内核,在其上引入了一个框架来支持移动应用。
Linux是目前使用最为广泛的操作系统,在Internet下的许多服务和应用都是工作在Linux系统之上。
Linux也被广泛应用于嵌入式系统上,比如手机、平板电脑、路由器、电视和游戏机等。
Linux也可以作为日常的桌面系统来使用,绝大部分Linux发行版安装时都可以选择相应的桌面环境,比如GNOME和KDE等。
你会发现在Windows或者Mac系统中所使用的主要的桌面应用程序在Linux中都有相应的应用程序。
对于那些不能在Linux中使用的应用程序(比如部分Windows应用),你也可以通过安装wine来运行Windows应用。
当然需要指出的是,尽管Linux系统提供了桌面环境,但是目前桌面环境中仍然是Windows占据绝对的领先地位。
德国慕尼黑政府在2003年宣布1.4万台政府电脑从Windows切换到Linux,并且在2013年完成切换,但是仅仅几年之后,最近准备回归到Windows,预计在2020年前全部切换回Linux。
这也显示了Linux在桌面领域面临的艰巨挑战。
Linux桌面的市场份额在2%左右,而Windows大约是90%。
但是在服务器、移动市场和物联网市场等领域,Linux占据了绝对的领导地位。
微软的Windows10也提供了可选的WindowsSubsystemforlinux,可以直接运行Linux应用程序。
1.3许可证
从上面的描述可以看到,Linux和FreeBSD都支持PC机,而且重写BSD的工作实际上要更早一些。
为什么最终Linux占了主导地位?
一个原因是Linux要早于FreeBSD正式发布(Linus在实现Linux之前并不知道BillJolitz的工作,也幸好不知道,否则可能Linus不会自己来编写Linux内核了),其次Linux采用GPL许可证,更加鼓励共享。
GPL(GNUPublicLicense)是Linux以及其他许多开源软件遵循的许可证协议,它主要包括如下内容:
●软件最初的作者保留版权
●其他人可以修改后销售该软件,也可以在此基础上开发新的软件。
但必须保证这份源代码向公众开放。
●经过修改的软件仍然要受到GPL的约束,除非能够确定经过修改的部分是独立于原来作品的。
●如果软件在使用中引起了损失,开发人员不承担相关责任。
BSD许可证没有GPL那么严格,给予使用者很大自由,包括可以自由地使用和修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
但"为所欲为"的前提是必须在源代码或者二进制文件中包含原有代码中的BSD协议。
正是由于BSD许可证非常灵活,许多公司在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
除了GPL和BSD许可证外,后来还出现了MIT、LGPL、Apache、Mozilla许可证,这些许可证之间的区别在于修改源代码之后是否允许闭源,是否每个文件必须有版权说明等,具体区别如下图所示:
1.3Linux发行版
如果你是一个Linux的深度极客(geek),那么你可以编译一个Linux内核,然后整合GNU的实用工具以及其他开源程序,搭建一个完整的系统。
但是对于普通用户而言,这是一个非常困难的任务。
许多个人或者机构开始提供基于Linux的操作系统即Linux发行版,通过相应的安装程序就可以得到一个可以工作的Linux系统,一个Linux发行版包括Linux内核、GNU库和实用工具、桌面环境、各种应用软件,提供一个用来简化系统初始安装的安装工具、软件安装升级的软件包管理工具和详细的用户手册。
到目前为止大概有700多个发行版,目前300个左右的发行版仍然活跃(
1993年PatrickVolkerding创建了Slackware发行版,其重点在系统的稳定性和简洁性,它是第一个得到广泛使用的发行版,也是目前活跃的发行版中最古老的。
Debian发行版在1993年由IanMurdock创建,在DebianManifesto中,宣布将以开源的方式,本着Linux及GNU的精神发行一套GNU/Linux发行版。
Debian是为数极少的纯社区驱动的Linux发行版,而不是由商业公司或者政府机构所掌控。
Debian的软件被打包成deb格式,以便于安装、卸载和升级。
包管理系统名为dpkg(底层),前端工具有apt、aptitude和图形界面管理工具等。
Debian的包管理系统是其最出色的特性,深受其用户的喜爱和赞赏。
SUSE(发音/ˈsuːsə/)是第一个由商业公司发布的发行版,基于Slackware,目的是为德国用户提供量身定制的Linux,在很长一段时期是欧洲使用最为广泛的发行版之一。
第一个正式版本在1994年发布,该公司后来在2004年被Novell公司收购。
RedHat是美国Redhat公司于1994年发布的发行版,使用非常广泛,采用RPM包管理系统。
RedHat公司将其产品分为两个系列,一个是免费的RedHatLinux,另外一个是企业版本RHEL(RedHatEnterpriseLinux),需要license,由RedHat公司提供服务。
RedHat公司后来停止发行RedHatLinux,转而赞助FedoraProject来发行社区版本Fedora,对于用户而言,Fedora是一套功能完备、更新快速的免费操作系统,而对赞助者RedHat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到RedHatEnterpriseLinux中。
由于用户使用RHEL时需要付费才能获得RedHat的服务和技术支持,CentOS(CommunityEnterpriseOperatingSystem)的开发者使用RHEL的源代码进行再编译获得一个和RHEL近乎相同的Linux。
但是一切和RedHat有关的商标都被去除了,最初的版本在2004年发布。
许多希望搭建企业级应用平台,但是又不需要RedHat公司服务支持的团队会选择CentOS发行版。
CentOS的技术支持主要通过社区的官方邮件列表、论坛和聊天室。
2014年RedHat公司宣布与CentOSProject合作,帮助开发CentOS。
Ubuntu(/ʊˈbuːntʊ/uu-BOON-tuu,中文名乌班图)由MarkShuttleworth(马克·舍特尔沃斯)的公司Canonical提供支持,基于Debian的不稳定分支,其首个版本于2004年发布,Ubuntu每六个月便会发布一个新版,其命名规则为发行日期。
Ubuntu的开发目的是为了使个人电脑变得简单易用,同时也提供针对企业应用的服务器版本。
Ubuntu也许是使用最为广泛的发行版之一,大大促进了Linux桌面应用的发展。
Gentoo最初由DanielRobbins(FreeBSD的开发者之一)创建,采用与FreeBSDports类似的称为Portage包管理系统,其首个稳定版本发布于2002年。
Gentoo的出名是因为其高度的自定制性:
因为它是一个基于源代码的发行版。
尽管安装时可以选择预先编译好的软件包,但是大部分使用Gentoo的用户都选择自己手动编译,从而可以针对硬件进行优化,拥有优秀的性能。
这也是为什么Gentoo适合比较有Linux使用经验的老手使用的原因。
LinuxMint由LinuxMintTeam团队于2006年开始发行,基于Debian和Ubuntu,目的是为家庭用户和企业提供一个免费的、易用的、舒适而优雅的桌面操作系统。
LinuxMint可以在一个单系统的电脑上运行,但是它也可以自动检测安装的其他操作系统,设置多引导方式,同时也允许访问其他操作系统的分区。
LinuxMint提供一种更完整的即刻可用体验,这包括提供浏览器插件、多媒体编解码器、对DVD播放的支持、Java和其他组件,它也增加了一套定制桌面及各种菜单,一些独特的配置工具,以及一份基于web的软件包安装界面,目前已经成为全球桌面用户的首选之一。
Android是Google公司为平板和手机等移动设备设计的操作系统,构建在Linuxkernel之上,采用Dalvik虚拟机和Android应用框架为APP提供支持。
发行版
网址
说明
Slackware
第一个得到广泛使用的发行版
Debian
www.debian.org
纯社区驱动的Linux发行版,包管理工具dpkg
SUSE
德国Suse公司发布,其社区版本为openSUSE
Fedora
www.fedoraproject.org
RedHat公司赞助的社区发行版,包管理工具rpm
RHEL
RedHat公司发布的企业发行版
CentOS
www.centos.org
RHEL再编译后的企业社区版,RedHat公司提供支持
Ubuntu
www.ubuntu.org
基于Debian不稳定分支的发行版,很长一段时间是桌面用户的首选之一
Gentoo
www.gentoo.org
基于源代码的发行版,采用Portage包管理。
LinuxMint
基于Debian和Ubuntu的发行版,桌面用户的首选之一
有这么多发行版,到底如何选择呢?
如果你是一个桌面型用户,建议选择Lin