`
音频数据
  • 浏览: 36812 次
文章分类
社区版块
存档分类
最新评论

GUN与Linux历史

 
阅读更多

GUN的发起者是Richard Stallman,他是一个著名的黑客。这里的黑客不是指破坏别人系统的黑客,黑客的真正含义是极度热爱编程的人。当年的Unix操作系统有一段时间跟windows一样也要收费了,不提供源码,要花钱购买copy,copy不允许被安装到别人的机器上,跟windows或其余软件的做法如出一辙。
Stallman是一个有理想的人,他想建立一个完全自由的操作系统,公开源码,任何人都可以修改该系统。他给这个操作系统取的名字叫GNU,即GNU is NOT Unix的递归缩写。要提供一个完整的操作系统,需要包含内核、编译器、编辑工具、C库、Shell等等一系列重要组成部件,Stallman开发了Emacs、gcc、gdb等等一系列大牛的东西。。。。;到了1990年左右的时候,GUN社区已经大成气候了,但这时还缺一个内核,Stallman开始开发内核,取名为Hurd,但由于各种原因Hurd被耽误了。这时Linus Torvalds开发了一个linux内核,由于也遵循自由软件之精神,跟GUN完美的融合在一起,终于形成了一个完美的操作系统。革命成功后总要分江山的,从Stallman的观点来看,Linux仅仅是整个GUN项目的一部分,因此我们目前含义上的Linux操作系统应该叫GUN/Linux,这样才能更加贴切的说明GUN和Linux之间的关系,但这个提法没有多少人真正的响应。
下面再来说说C语言的标准,就跟TCP/IP一样,有个ISO标准,还有一个美国标准。C语言也不例外,有个美国标准ANSI C和ISO标准,但事实上各主流编译器厂商遵循的都是ANSI C标准。比较有名的分别是C89(1989年出的标准)、C90(1990年出的标准)、C99(2000年出,采纳了ISO/IEC 9899:1990建议)及最新的C11(2011年出,采纳了ISO/IEC 9899:2011)
上面说的是C,C++也有自己的标准,分别为C++98、C++03、C++11。其中C++98是第一个正式C++标准,C++03是在C++98上面进行了小幅度的修订,C++11则是最新的标准。C++目前主要执行的是ISO标准。标准分为两个部分,一为语言本身的特性、语法等核心内容,另外一部分为标准库,目前C++的标准库涵盖容器、字符串、算法等等一系列内容。C++标准库兼容了C标准库,比如是C++标准库对C库的兼容版本,但里面的变量或函数需要包含在std的namespace下面,也不能完全做到跟C库兼容,因此C++标准库还提供了完全的C库兼容内容,包括了等C库内容。真是由于C++标准里面包含了标准库,因此有些扩充库走在了标准之前,即虽然暂时不是标准,但可能会被合并进下一个标准,因此以technical report的形式出来,比如我们经常看到的std::tr1,就代表这种含义。tr1的内容基本都被合并进入了C++11。
C++还有一个著名的库就是Boost,由于标准的滞后性,在C++98和C++11之间,Java等其它语言取得了长足的发展,Boost提供的各种库功能对于C++的完善和增强起到了巨大的作用。一般来讲,一个新的功能或feature先出现在Boost库,然后进入tr1,有数据统计tr1中有60%的功能来自于boost,然后再通过tr1进入到std。由于Boost社区中有很大一部分人,包括其发起者都是C++标准委员会的成员,因此从Boost到最终进入std这条路是比较顺畅的。
当然,在Linux平台上,我们使用的C++编辑器及标准库,都是GUN社区提供的GCC(GNU Compiler Collection)版本。
C/C++有标准,操作系统其实也有标准,称为POSIX(Portable Operating System Interface for Computing Systems),是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口(API),用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。Linux基本上实现了POSIX兼容,但没有参与其认证,Windows部分实现了POSIX。
POSIX除了包含API之外,还包括了C库,即一个操作系统若声称是POSIX兼容的话,不光要满足POSIX的的API接口,同时需要满足C库的接口,C库和API共同组成了系统的调用接口。虽然POSIX是在UNIX的基础上建立起来的,但POSIX并不针对Unix,许多专有的操作系统,都号称自己是POSIX兼容的。
对于Unix操作系统而言,还有一个标准就是The Single Unix Specification(SUS),它是在POSIX基层上的一个超集,包含了比POSIX更多的接口及功能。凡是通过SUS认证的系统,才能号称自己是Unix System。OpenGroup组织拥有UNIX的商标,所有想要贴上Unix商标的系统,必须通过其强制认证。
Unix的起源在Bell实验室,起初是用B语言写的,后来两位Unix创始人发明了C语言,重写了整个Unix系统。这使得Unix的跨平台及迁移能力特别强,因为其不用汇编写的,汇编一般跟目标硬件是绑定的,用C来写隔离了硬件信息,使得迁移时只要修改编译器能让其支持不同平台就可以了。Unix刚刚开始的时候,由于AT&T受到反垄断法的限制,不允许从事跟计算机有关的商业活动,因此Unix是比较开放的,谁要都可以给源代码。Berkeley大学首先看到了Unix的巨大前景,引入到学校并对其进行了大规模的改写、功能的增强,这就是后来的BSD版本。后来BSD版本的创始人离开了学校创办了Sun,他以BSD版本为基础,建立了新的分支,成为Solaris。而Bell实验室后面自己的版本称为了System Release V,简称为SRV版本。这三个版本称为Unix的三大主流派系,其余比如IBM,HP等版本就不说了。到了后来AT&T感觉到了Unix的商机,开始想赚钱了,开始封闭了Unix的版本,不允许学校再对其源码进行传播和改写,并且针对Unix的商业行为都要收取版权费了。也正是这个是RSM开始搞GUN。到后来AT&T跟SUN结成了联盟,跟BSD打起了旷日持久的官司。BSD声称BSD版本的源码几乎没有了Bell实验室的代码,因为经过连续几年的功能改进和重写,原有的代码已经非常少了。这个官司最后不了了之,庭外和解。也正是由于Unix开始对大学封闭,一个非常有名的教授AndrewTanenbaum为了教学目的,开发了一个微小的操作系统Minix。还在上大学的Linus也想写一个内核,其主要参考和学习了Minix的源代码。Linus在写Linux时,做的一个非常正确的决定就是让Linux和Unix保持兼容,即Linux符合POSIX标准,使得Unix上的程序都能够在Linux上面运行起来。
我们经常说的开源软件其free指的是“自由”,而不是免费。因此当Linux出来后,为了用户安装使用方便,同时提供有效的技术支持服务,因此推出了商业的套装操作系统,比如RedHat公司通过rpm进行发布,其包含了linux内核、所有需要的库、各种服务器程序及其自己开发的各种工具。这个套装是收费的,但套装提供的核心组件内容都是遵守开源协议的。

分享到:
评论

相关推荐

    Linux培训GUN与Unix命令

    【Linux培训GUN与Unix命令】知识详解 GUN(GNU's Not Unix)是一个由Richard Stallman于1983年发起的开源软件项目,旨在创建一个与Unix兼容的自由软件操作系统。GUN计划的核心理念是推动软件自由,鼓励用户自由地...

    Debian GUN/Linux 参考手册

    - Debian 使用了一个严格的版本控制系统来跟踪软件包的变化历史。 - 这样可以确保用户能够轻松回滚到之前的版本,或者追踪引入问题的具体变更。 #### Debian 的国际化与本地化 - **多语言支持**: - Debian 提供...

    gnu_linux编程指南.pdf

    四、使用 GUN make管理项目 make是一个广泛使用的项目构建工具,用于自动化编译过程。通过编写Makefile,程序员可以轻松管理复杂的编译规则,使得构建过程更加高效。 五、创建可移植的自配软件 编写可移植的软件...

    《Linux操作系统实用教程》

    在Linux的发展历史中,Linux内核版本由三部分数字组成:r.x.y,其中r代表主版本号,x代表次版本号,y代表错误修补次数。偶数的次版本号表示稳定版本,如2.6.18;奇数的次版本号通常代表开发中的测试版本,例如2.7.22...

    linux网络操作系统及实训课后习题答案.doc

    1. Linux 操作系统的历史发展:Linux 最早是由 Linus Torvalds 开发的, Linus Torvalds 是芬兰的一名计算机科学家。 2. Linux 的特点:Linux 操作系统有多任务、多用户、设备独立性、开放性等特点。 3. Linux 的...

    linux 相关资料A

    首先,从"初识Linux"开始,学习者将了解到Linux的历史、它与Unix的关系以及为何选择Linux作为嵌入式开发平台的原因。Linux的核心哲学是"一切都是文件",这一概念将在学习过程中得到深入解释。此外,课件会介绍Linux...

    Linux网络操作系统与实训第2版教材课后习题答案.docx

    本资料主要涵盖了Linux操作系统的基础知识,包括选择题、填空题和简答题,重点在于理解Linux系统的基本概念、历史、特性和应用。以下是相关知识点的详细说明: 1. **Linux的起源与特点** - Linux是由计算机爱好者...

    GUN工具之GCC的介绍及使用

    GCC的版本历史见证了其功能的不断扩展和优化。例如,GCC 2.95、3.0、3.2、3.3等早期版本分别在1999年、2001年、2002年和2003年发布,每个新版本都带来了性能提升和新的语言支持。到了GCC 4.3.0,这个版本要求构建时...

    Linux系统开发基础\

    FSF(自由软件基金会)是一个重要的组织,倡导并维护这种理念,而GPL(GNU通用公共许可证)是广泛使用的自由软件授权协议,GUN工程则与FSF密切相关。 Linux操作系统的历史和发展被详细讲解,包括其内核版本的迭代...

    LINUX 相关资料B

    首先,初识Linux,我们需要了解它的历史和特性。Linux是由Linus Torvalds于1991年创建的,它是一个自由、开放源码的操作系统内核,基于UNIX哲学,强调简洁、模块化的设计。Linux系统以其稳定性、安全性及高度可定制...

    《Linux操作系统及应用项目教程》习题宣贯.pdf

    【知识点详解】 1. Linux操作系统基础: - GUN代表GNU,它是一个...这些知识点涵盖了Linux操作系统的基础知识,包括其历史、结构、安装、管理、命令行操作和系统维护等方面,对于学习和使用Linux操作系统非常重要。

    认识Linux,走进Linux世界

    1:Linux的历史 自由软件之父(开源之父):理查德.斯托曼 linux之父:林纳斯.本纳第克特.托瓦兹(Linus Benedict Torvalds) linux内核发明人。1991年创造了这套系统内核之一 2:Linux常见发行版本 RHEL(Red Hat...

    Linux发展编年表

    在这篇文章里,我们向你展示完整的Linux 23年来发展的历史年表。 1991 8月25号 : 21岁的芬兰学生Linus Benedict Torvalds 在comp.os.minix 新闻组上宣布了它正在编写一个免费的操作系统。 9月1号 : Linux 0.01在网上...

    php-8.1.7压缩包

    PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。安装过程很简单。 如果你的机器解决了2000问题,那么PHP也一样没有...

    PHP MySQL初级教程.doc

    ...PHP 遵守 GNU 公共许可(GPL),在这一...在大多数 Unix 平台,GUN/Linux 和微软 Windows 平台上均可以运行。 PHP 的应用前景广阔,随着互联网的发展,PHP 的应用领域也将不断扩展,PHP 是一种非常有前途的编程语言。

    bash shell

    描述:“GUN的shell源代码,学习Linux必备” 标签:“shell” 在Linux操作系统中,shell扮演着用户与系统交互的重要角色。Bash(Bourne-Again SHell)是GNU项目的一个组成部分,是Unix-like系统中最常用的默认...

    GNU汇编gas权威手册 using as

    在Linux环境下,尤其是当你需要查看或编写汇编语言代码时,GNU汇编器手册是一个非常有价值的参考资料。汇编语言是一种低级编程语言,它与计算机的硬件架构紧密相关,因此不同的CPU架构会有不同的汇编指令集和语法...

    PHP教程 初级教程

    PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到,也可以查阅网页陶吧的“PHP安装全攻备”专题文章。安装过程很简单。 ...

Global site tag (gtag.js) - Google Analytics