一、linux的框架
我们以下图为基础,说明Linux的架构(architecture)。
最内层是我们的硬件,最外层是我们常用的各种应用,比如说使用firefox浏览器,打开evolution查看邮件,运行一个计算流体模型等等。硬件是我们的物质基础,而应用是我们所要奋斗的目标,但在两者之间,还要经过一番周折。
还记得我们在Linux启动的时候。首先会启动内核 (kernel),内核是一段计算机程序,这个程序直接管理管理硬件,包括CPU、内存空间、硬盘接口、网络接口等等。所有的计算机操作都要通过内核传递给硬件。
为了我们方便调用内核,我们将内核的功能总结成为系统调用(system call)。系统调用看起来就像是的C语言函数,你也可以在程序中直接调用。Linux系统有两百多个这样的系统调用。系统调用给了上层程序一个清晰的接 口,隐藏了内核的复杂结构。一个操作系统上的功能可以看作是系统调用的组合的效果,而且一个操作系统不可能作出超越系统调用的动作。可以说一个系统调用函 数就像是汉字的一个笔画,任何一个汉字都要由基本的笔画(点、横、撇等等)构成,而且我们不能臆造出笔画。在命令行中输入$man 2 syscalls可以查看所有的系统调用。你也可以通过$man 2 read来查看系统调用read()的说明。在这两个命令中的2都表示我们要在2类(系统调用类)中查询 (具体各个类是什么可以通过$man man看到)。
由于系统调用非常基础,所以有时使用起来很麻烦。比如说一个简单的给变量分配内存空间的操作,就需要动用多个系统调用。Linux定义一些库函数(library routine)来将系统调用组合成某些常用的功能,以方便我们编程。比如上面的分配内存的操作,看以定义成为一个库函数(像malloc()这样的函 数)。再比如说,在读取文件的时候,系统调用要求我们设置好所需要的缓冲。我们这个时候可以使用Standard IO库中的读取函数,而这个读取函数既负责设置缓冲,又负责使用读取的系统调用函数。使用库函数对于机器来说并没有效率上的优势,但可以把程序员从细节中 解救出来。库函数就像是汉字的偏旁部首,它由笔画组成,但使用偏旁部首更容易组成字,比如"铁"。当然,你也完全可以不使用库函数,而直接调用系统函数,就像“人”字一样,不用偏旁部首。
(实际上,一个操作系统要称得上是UNIX系统,必须要拥有一些库函数,比如ISO C标准库,POSIX标准等。)
至于shell,可以看作一种特殊的应用。实际上我们之前所说的命令行,就是shell。shell是一个命令解释器(interpreter),当我们输入“ls -l”的时候,它将此字符串解释为1) 在默认路径找到该文件(/bin/ls),2) 执行该文件,并附带参数"-l"。我们之前用>表示重新定向,用|表示管道,也是通过shell进行理解&或者|的含义,再通过系统调用指挥kernel建立具体的重定向或者管道机制。在没有图形界面之前,shell充当了用户的界面,当用户要运行某些应用的时候,要通过shell输入命令,以建立运行程序。shell可以执行符合shell语法的文本,这样的文本叫做shell脚本(script)。我们可以在图中看到,shell下通系统调用,上通各种应用,同时还有许多自身的便利可以使用,这些条件让shell脚本可以实现非常强大的功能。UNIX的一条哲学是让每个程序尽量独立的做好一个小的功能。而shell充当了这些小功能之间的"胶水",让不同程序能够以一个清晰的接口(文本流)协同工作,从而增强各个程序的功能。(这也是我们鼓励多用shell,少用图形化界面的原因之一。)
(shell也有很多种,最常见的是bash, 另外还有sh, csh, tcsh, ksh。它们出现的年代不同,所支持的功能也有差异。)
一个使用bash shell的终端
一个shell对应一个终端 (terminal)。曾经来说,终端是一个硬件设备,用来输入并显示输出。如今,由于图形化界面的普及,终端往往就像上图一样,是一个图形化的窗口。你 可以通过这个窗口输入或者输出文本。这个文本直接传递给shell进行分析解释,然后执行。
最后,我们进入一般的应用。应用是一个程序,它可以1) 直接调用系统函数 2) 调用库函数 3) 运行shell script。这些应用可以由多种语言开发(当然,最常见的是C语言),以满足我们使用计算机的各种需要。
我们可以看 到,Linux利用kernel实现软硬件的对话。通过系统调用的这个重要的接口,Linux将上层的应用与下层的kernel完全分离开,为程序员隐藏 了底层的复杂性(相应的,也提高了上层应用的可移植性)。当我们在升级kernel的时候,也可以保持系统调用的语句不变,从而让上层应用不感受到下层的 改变。库函数利用系统调用创造出模块化的功能,而shell则提供了一个用户界面,并让我们可以利用shell的语法编写脚本,以整合程序。
而所有的这些安排也为其他应用的开发提供了便利。
二、linux的种类
主流的Linux发行版 Ubuntu, DebianGNU/Linux ,Fedora,Gentoo,MandrivaLinux ,PCLinuxOS,SlackwareLinux ,openSUSE,ArchLinux,Puppylinux,Mint,CentOS,Red Hat等
Ubuntu是一个以桌面应用为主的Linux操作系统
Linux Mint于2006年开始发行,是一份基于Debian和Ubuntu的Linux发行版
锐意的Fedora :最早Fedora Linux社区的目标是为Red Hat Linux制作并发布第三方的软件包,然而当Red Hat Linux停止发行后,Fedora社区便集成到Red Hat赞助的Fedora Project,目标是开发出由社区支持的操作系统(事实上,Fedora Project除了由志愿者组织外,也有许多Red Hat的员工参与开发)。Red Hat Enterprise Linux则取代Red Hat Linux成为官方支持的系统版本
华丽的openSUSE :openSUSE 项目是由 Novell 发起的开源社区计划。旨在推进 Linux 的广泛使用。openSUSEorg提供了自由简单的方法来获得世界上最好用的 Linux 发行版,SUSELinux。openSUSE 项目为 Linux开发者和爱好者提供了开始使用 Linux 所需要的一切
自由的Debian :DebianGNU/Linux是由一个叫做伊恩·默多克(IanMurdock)的牛人在1993年发起的,他的名字以Ian开头,他太太的名字Debra开头三个字母是Deb,于是在爱情的力量下,他发起了DebianGNU/Linux组织。
简洁的Slackware :Slackware logo
SlackwareLinux是由Patrick Volkerding制作的GNU/Linux发行版,它是世界上依然存活的最久的Linux发行版,在它的辉煌时期,曾经在所有发行版中拥有最多的用户数量。但是,随着 Linux商业化的浪潮,Redhat、Mandrake 和Suse 这些产品通过大规模的商业推广,占据了广大的市场;Debian作为一个社区发行版,也拥有很大的用户群。相比之下,Slackware的不事声张,使得它从许多人(尤其是使用Linux的新用户)的视野中消失了
老牌的RedHat :Red Hat是全球最大的开源技术厂家,其产品Red Hat Linux也是全世界应用最广泛的Linux。Red Hat公司总部位于美国北卡罗来纳州。在全球拥有22个分部。
2004年4月30日,Red Hat公司正式停止对Red Hat 9.0版本的支持,标志著Red Hat Linux的正式完结。原本的桌面版Red Hat Linux发行包则与来自民间的Fedora计划合并,成为Fedora Core发行版本。Red Hat公司不再开发桌面版的Linux发行包,而将全部力量集中在服务器版的开发上,也就是Red Hat Enterprise Linux版。2005年10月RHEL4发布。
三、Linux的优缺点
个人认为最大的优点是开源,能及大家之所长,因为全世界的程序爱好者都在为他的成长添砖加瓦,使之更稳定,能接受住更大的考验。
详细点吧***************************
Linux 的优点:
稳定性和高效性:因为 Linux 是由 Unix 发展而来,因此 Linux 与 Unix 有许多相似之处,不只是用户接口和操作方式,Linux 还继承了 Unix 卓越的稳定性和高效性。对于使用 Linux 作为操作系统的服务器,连续运行一年不宕机是相当平常的事情;
低配置要求:Linux 对硬件的要求很低,它可以在数年前的电脑上很流畅的运行。使用 Windows,则需要不断升级机器的硬件;
免费或者少许费用:Linux 基于 GPL (General Public Lisence),因此任何人可以免费使用或者修改其中的原代码。只有在选择某些厂商制作的 Linux 的发行版时,才会需要一点点费用。当然,依然比 Windows 所需要的费用低得多。(大多数情况下,我们都使用免费的 Linux 发行版)
强大的支持:大量的 Linux 爱好者会进行交流讨论,并且开发分享一些好的软件,有非常开放的使用氛围
安全性:Linux 拥有相当庞大的用户和社区支持,因此能很快发现系统漏洞,并迅速发布安全补丁;
真正的多用户:Linux 实现不同的用户共同登录系统,并且资源分享比较公平。而不是像 Windows 那样的伪多用户操作系统,如果需要登录更多的用户,要么退出当前用户,要么向微软购买多用户授权;
Linux 还有许多其它优点,如强大的网络支持、方便的控制台操作等等,虽然整体上而言 Linux 做得很好,但它依然还是存在一些不足之处。
Linux 的缺点:
没有特定的支持厂商:因为 Linux 上面的软件都是免费发行的,所以自然不会有售后服务之类的支持。不过好消息是,只要我们用心去搜索,总能找到解决问题的方法 :D
图形界面不够好:这恐怕是影响 Linux 桌面端普及的最重要原因了。但随着时间的流逝,X-window 也变得越来越好用,越来越优秀了。目前各大 Linux 发行版,都能很好地做为桌面端计算机使用。