Linux C 浅析

一 Linux 和 UNIX

     Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。这应该是他们最大的不同,这种不同 体现在用户对前者有很高的自主权,而对后者却只能去被动的适应;这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一个黑 箱之中,只有相关的开发人员才能够接触的产品的原型。      Linux 的源头要追溯到最古老的UNIX。1969年,Bell实验室的Ken Thompson开始利用一台闲置的 PDP-7计算机开发了一种多用户,多任务操作系统。很快,Dennis Richie加入了这个项目,在他们共同努力下诞生了最早的UNIX。Richie受一个更早的项目——MULTICS的启发,将此操作系统命名为 Unix。早期UNIX是用汇编语言编写的,但其第三个版本用一种崭新的编程语言C重新设计了。C是Richie设计出来并用于编写操作系统的程序语言。 通过这次重新编写,Unix得以移植到更为强大的 DEC PDP-11/45与11/70计算机上运行。后来发生的一切,正如他们所说,已经成为历史。Unix从实验室走出来并成为了操作系统的主流,现在几乎每 个主要的计算机厂商都有其自有版本的Unix.      Linux起源于一个学生的简单需求。Linus Torvalds,Linux的作者与主要维护者,在其上大学时所买得起的唯一软件是Minix. Minix是一个类似Unix,被广泛用来辅助教学的简单操作系统。Linus 对Minix不是很满意,于是决定自己编写软件。他以学生时代熟悉的Unix作为原型, 在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果通过互连网与其他同学共享,主要用于学术领域。有人看到了这个软件并开始分发。每当 出现新问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。值得注意的是Linux并没有包括Unix源码。它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑 桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。      另外两大区别:      1) UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.      2) UNIX是商业软件,而Linux是自由软件,免费、公开源代码的.      UNIX(5万美圆)而Linux免费      [历史]      Unix的历史久于linux. Linux的思想源于Unix      [产品]      unix和linux都是操作系统的名称.但unix这四个字母除了是操作系统名称外,还作为商标归SCO所有.      Linux商业化的有RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等,还有Turbo Linux.  

        Unix主要有Sun 的Solaris、IBM 的AIX, HP的HP-UX,以及x86平台的的SCO Unix/Unixware      [其他区别]      linux的核心是免费的,自由使用的,核心源代码是开放的.      而unix的核心并不公开      在对硬件的要求上,linux比unix要低,没有unix那么苛刻.在安装上linux比unix容易掌握.      在使用上,linux相对没有unix那么复杂.      Unix多数是硬件厂商针对自己的硬件平台的操作系统,主要与CPU等有关,如Sun 的Solaris作为商用,定位在其使用SPARC/SPARCII的CPU的工作站及服务器上,当然Solaris也有x86的版本,而Linux也有其于RISC的版本。      但确切的讲,拿RISC上的Unix与x86上的Linux进行比较不太合适。      至于价格,个人使用的Linux基本上算是免费的,不同的Linux发行厂商针对企业级应用在基本的系统上有些优化,如RedHat的Enterprise产品,这些产品包括支持服务是比较贵的。      像IBM/HP/SUN的Unix,因为主要是针对其硬件平台,所以操作系统通常在设备价格中。(没有人单独去买一个Unix操作系统的)      在性能上,linux没有unix那么全面,但基本上对个人用户和小型应用来说是绰绰有余.      通常情况下,如果你有机会使用到Unix环境,比如银行、电信部门,那一般都是固定机型的Unix。比如电信里SUN的居多,民航里HP的居多,银行里IBM的居多。学习中,不同的Unix命令集有些不同,要注意。      至于学习,我看还是linux比较好学一点,而且现在喜欢和鼓捣linux的人也越来越多,各种有关linux的资料也很多.如果是自己想学习,那Linux或是BSD系统是不错的选择。一台x86的机器就可以。      应用上,除非是大型网站,一般企业或个人,使用Linux即可.      UNIX是一个功能强大、性能全面的多用户、多任务操作系统,可以应用从巨型计算机到普通PC机等多种不同的平台上,是应用面最广、影响力最大的操作系统。      

        Linux是一种外观和性能与UNIX相同或更好的操作系统,但,Linux不源于任何版本 的UNIX的源代码,并不是UNIX,而是一个类 似于UNIX的产品。Linux产品成功的模仿了UNIX系统和功能,具体讲Linux是一套兼容于System V以及BSD UNIX的操作系统,对于System V来说,目前把软件程序源代码拿到Linux底下重新编译之后就可以运行,而对于BSD UNIX来说它的可执行文件可以直接在Linux环境下运行。      一般来说,Linux是一套遵从POSIX(可移植操作系统环境)规范的一个操作系统,它能够在普通PC计算机上实现全部的UNIX特性,具 有多任务、多用户的能力。Linux受到广大计算机爱好者的喜爱的另一个主要原因是,它具有UNIX的全部功能,任何使用UNIX操作系统或想要学习 UNIX操作系统的人都可以从Linux中获益。      在网络管理能力和安全方面,使用过Linux的人都承认Linux与UNIX很相似。UNIX系统一直被用做高端应用或服务器系统,因此拥有一套完善的网络管理机制和规则, Linux沿用了这些出色的规则,使网络的可配置能力很强,为系统管理提供了极大的灵活性


二 Linux发展史

         1991年,Linus Torvalds,一个芬兰赫尔辛基大学的学生,为了能在家里的PC机上使用与学校一样的操作系统,开始了编写类似UNIX内核的工作。那是,linus使用的是MINUX,但是他希望能超过MINUX的标准。      到了1991 年的10 月5 日,Linus在comp.os.minix新闻组上发布消息,正式向外宣布Linux 内核系统的诞生(Free minix-like kernel sources for 386-AT)。这段消息可以称为Linux 的诞生宣言,并且一直广为流传。因此10 月5 日对Linux 社区来说是一个特殊的日子,许多后来Linux的新版本发布时都选择了这个日子。

        Linux的兴起可以说是一个奇迹。Linus Torvalds在开始其Linux 操作系统的设计时,他的目的只不过是想看一看Intel 386存储 管理硬件是怎样工作的,而绝对没有想到这一举动会在计算机界 产生如此重大的影响。他的设计进展得很顺利,只花了几个月时间就在一台Intel 386微机上完成了一个类似于Unix的操作系统, 这就是最早的Linux版本。1991年底,Linus Torvalds首次在Internet 上发布了基于Intel 386体系结构的Linux源代码,从此以后,奇迹开始发生了。由于Linux具有结构清晰、功能简捷等特点,许多大专院校的学生和科研机构的研究人员纷纷把它作为学习和研究的对象。他们在更正原有Linux版本中操作的同时,也不断地为Linux增加新的功能。在众多热心者的努力下,Linux逐渐成为一个稳定可靠、功能完善的操作系统。一些软件公司, 如Red Hat、InfoMagic等也不失时机地推出了自己的以Linux为核心的操作系统 版本,这大大推动了Linux的商品化。在一些大的计算机公司的支持下,Linux还被移植到以Alpha 、APX、PowerPC、Mips及Sparc等为处理机的系统上。Linux的使用日益广泛,其影响力直逼Unix。  第三部分 linux的发展  1.1 liunx的发行  在后来的几年中商业化和非商业的LINUX发行版本开始出现。MCC INTERIM LIUNX 于1992年而月在英国发行。SLACKWARE LINUx 是最来的linux发行版本,于1993年4月第一次发行。

       1992年,在Linux Kernel平台上工作的开发者只有100位;2010年,在Linux Kernel平台上工作的开发者有1000位。  1995年Linux Kernel里有代码25万行;2010年Linux Kernel里有代码1400万行。  1998年全球前500台超级计算机中只有1台运行着Linux;2011年全球前500台超级计算机中有413台运行着Linux。 第四部分 linux的黄金时代即将到来你准备好了吗?  现在,不管是否知道liunx,人们可能每天都会遇到它。当从Amazon.com在线购买图书室,会用到linux;当在Google上搜索网页时,会用到liunx;当用tivo(一家生产数字电视美国公司)录制电视节目时,会用到linux。另外,在口袋里的掌上电脑(PDA)可能也是基于linux技术的。在动画片史莱克2中的特技,就是由成千上万的linux工作站制作、再有其他上百个linux系统服务器着色而成的!


 三 什么是GNV计划

       GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。    GNU是“GNU's Not Unix”的递归缩写。Stallman宣布GNU应当发音为Guh-NOO,与canoe发音相同,以避免与gnu(非洲牛羚,发音与new相同)这个单词混淆。    UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。    为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都在一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。这个就是被称为“反版权”(或称Copyleft)的概念。    1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的Cygnus Solutions。    到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs,C语言编译器GCC,以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。    1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。(尽管如此GNU计划自己的内核Hurd依然在开发中,目前已经发布Beta版本。)    许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。


四 什么是GPL协议

     在自由软件所使用的各种许可证之中,最为人们注意的也许是通用性公开许可证(General Public License,简称GPL)。  GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。  GPL还规定:只要这种修改文本在整体上或者其某个部分来源于遵循GPL的程序,该修改文本的 整体就必须按照GPL流通,不仅该修改文本的源码必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制。因此,一项遵循GPL流通 的程序不能同非自由的软件合并。GPL所表达的这种流通规则称为copyleft,表示与copyright(版权)的概念“相左”。  GPL协议最主要的几个原则:  1、确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。  2、GPL 大致就是一个左侧版权(Copyleft,或译为“反版权”、“版权属左”、“版权所无”、“版责”等)的体现。你可以去掉所有原作的版权 信息,只要你保持开源,并且随源代码、二进制版附上 GPL 的许可证就行,让后人可以很明确地得知此软件的授权信息。GPL 精髓就是,只要使软件在完整开源 的情况下,尽可能使使用者得到自由发挥的空间,使软件得到更快更好的发展。  3、无论软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,清楚地提供源代码下载的链接。如果以光盘形式发布,就必须同时附上源文件的光盘。  4、开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。


五 POSIX标准

        POSIX,全称为可移植性操作系统接口,是一种关于信息技术的IEEE标准。它包括了系统应用程序接口(简称API),以及实时扩展[C语言]。  该标准的目的是定义了标准的基于UNIX操作系统的系统接口和环境来支持源代码级的可移植性。现在,标准主要提供了依赖C语言的一系列标准服务,再将来的版本中,标准将致力于提供基于不同语言的规范。  该标准对核心需求部分定义了一系列任何编程语言都通用的服务,这一部分服务主要从其功能需求方面阐述,而非定义依赖于编程语言的接口。语言规范主要有两部分组成。一部分包括了访问核心服务的编程语言的标准接口,这些核心服务为标准中基于编程语言的核心需求部分所定义;另一部分包含了一个特殊语言服务的标准接口。基于任何语言,与该标准一致的执行都必须遵循语言规范的任何章节。 该标准一共被分为四个部分:  (1)陈述的范围和一系列标准参考(第一章); (2)定义和总概念;(第二章) (3)各种接口设备;(第三章到第九章,第十一章到第十五章) (4)数据交换格式;(第十章) 该标准的主要目的有: (1)面向应用  (2)定义接口,而不是它的具体实现;  (3)        涉及资源和可移植性,而非对象; (4)        基于c语言;  (5)无超级用户,无系统管理;  (6)        最小限度的接口,最小限度的定义; (7)应用领域广泛;  (8)对以前的实现进行最小限度改变; (9)对原有程序代码做最小的修改; (10)   实时扩展。

猜你喜欢

转载自blog.csdn.net/klb555/article/details/59109868