你绝对能够看下去的linux发展史
Linux是一套免费使用和*传播的类Unix操作系统,
那什么是Unix以及类Unix操作系统。
UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。
引起了学术界的广泛兴趣并对其源码索取,Unix第五版就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。
后来AT&T意识到了Unix的商业价值,不再将Unix源码授权给学术机构使用,AT&T妄图私有化的Unix,为了私 有化Unix,在1986年,IEEE指定了一个委员会制定了一个开放作业系统的标准,称为 POSIX (Portable Operating Systems Interface)。
AT&T的这种商业态度,让当时许多的Unix的爱好者和软件开发者们感到相当的痛心和忧虑,他们认为商业化 的种种限制并不利于产品的发展,相反还能导制产品出现诸多的问题。
后来商业化Unix的版本确实出现了诸多问题,引起了大众的不满和反对。于是,大家开始有组织地结成“反叛 联盟”以此对抗AT&T的商业化行为。
另一方面,关于“大教堂”(集权、封闭、受控、保密)和“集市”(分权、公开、精细的同僚复审)两种开发模 式成为了新思潮的中心思想。这个新思潮对IT业产生了非常深远影响。为整个计算机世界带来了革命性的价值观。
此时,一个名叫Richard Stallman(理查德·斯托曼)的领袖出现了,他认为Unix是一个相当好的操作系统,如 果大家都能够将自己所学贡献出来,那么这个系统将会更加的优异!他倡导的Open Source的概念,就是反对Unix 实验室里的产品商业化私有化。
上图就是Richard Stallman
我们继续讲故事,哦不对,讲发展史
尽管Stallman既不是、也从来没有成为一个Unix程序员,但在后1980的大环境下,实现一个仿Unix操作系统成 了他追求的明确战略目标。Richard Stallman早期的捐助者大都是新踏入Unix土地的ARPANET黑客,他们对代码共 享的使命感甚至比那些有更多Unix背景的人强烈。
为了这个理想,Richard Stallman于1984年创业了GNU,又称革奴计划,计划开发一套与Unix相互兼容的软 件。1985 年 Richard Stallman 又创立了*软件基金会(Free Software Foundation)来为 GNU 计划提供技术、 法律以及财政支持。尽管 GNU 计划大部分时候是由个人自愿无偿贡献,但 FSF 有时还是会聘请程序员帮助编写。 当 GNU 计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被 Red Hat 兼 并的 Cygnus Solutions。
自90年代发起这个计划以来,GNU 开始大量的产生或收集各种系统所必备的组件,像是——函数库、编译器 gcc、调试工具gdb、文本编辑器vi、网站服务器,以及一个Unix的使用者接口(Unix shell)等等。但由于种种原 因,GNU一直没有开发出一款开源的操作系统kernel。正当Richard Stallman在为操作系统内核伤脑筋的时候, Linux出现了。
1990年,Linus Torvalds(林纳斯·托瓦兹)还是芬兰赫尔辛基大学的一名学生,最初是用汇编语言写了一个在 保护模式下处理多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小 的Unix操作系统,主要用于操 作系统教学)得到灵感,进一步产生了自认为狂妄的想法——写一个比Minix更好的Linux,于是开始写了一些硬件 的设备驱动程序,一个小的文件系统。这样0.0.1版本的Linux就出来了,但是它只具有操作系统内核的勉强的雏 形,甚至不能运行,你必须在有Minix的机器上编译以后才能玩。这时候Linus已经完全着迷而不想停止,决定踢开 Minix,于是在1991年10 月5号发布Linux 0.0.2版本,在这个版本中已经可以运行bash 和gcc。
从一开始,Linus就决定*扩散Linux,包括原代码,随即Linux引起黑客们(hacker)的注意,通过计算机 网络加入了Linux的内核开发。Linux倾向于成为一个黑客的系统——直到今天,在Linux社区里内核的开发被认为是 真正的编程。由于一批高水平黑客的加入,使Linux 发展迅猛,几乎一两个礼拜就有新版或修正版的出现,到1993 年底94年初,Linux 1.0终于诞生了!Linux 1.0已经是一个功能完备的操作系统,而且内核写得紧凑高效,可以充分 发挥硬件的性能,在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道。
Linux 的标志和吉祥物是一只名字叫做 Tux 的 企鹅,标志的由来是因为Linus在澳洲时曾被一只动物园里的企 鹅咬了一口,便选择了企鹅作为Linux的标志。
Linux 的历史是和GNU紧密联系在一起的。从1983年开始的GNU计划致力于开发一个*并且完整的类Unix 操作系统,包括软件开发工具和各种应用程序。到1991年 Linux 内核发布的时候,GNU已经几乎完成了除了系统内 核之外的各种必备软件的开发。在 Linus Torvalds 和其它开发人员的努力下,GNU组件可以运行于Linux内核之 上。整个内核是基于 GNU 通用公共许可,也就是GPL(GNU General Public License,GNU通用公共许可证)。
GNU
GNU计划,有译为“革奴计划”,是由理查德·斯托曼在1983年9月27日公开发起的,它的目标是创建一套完全*的操作系统。
理查德·斯托曼最早是在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。
GNU是“GNU’s Not UNIX”的递归缩写,为避免与gnu(非洲牛羚,发音与“new”相同)这个单词混淆,斯托曼宣布GNU应当发音为“Guh-NOO”,与“canoe”发音相似。
UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统。GNU计划采用了部分当时已经可*使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的*软件,这些软件也被移植到其他操作系统平台上,例如Microsoft Windows、BSD家族、Solaris及MacOS。
为保证GNU软件可以*地“使用、复制、修改和发布”,所有GNU软件都包含一份在禁止其他人添加任何限制的情况下,授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。这个就是被称为‘公共版权’的概念。GNU也针对不同场合,提供GNU宽通用公共许可证与GNU*文档许可证这两种协议条款。
下面是GNU计划的特性:
GNU 将能够执行 Unix 的程序,但是不会和 Unix 完全一样,特别是GNU计划拥有支持更长文件名、文件版本号、一个不怕死机的文件系统,或许还要有自动文件名补全、与终端机无关的显示支持、可能最后还要有一个基于Lisp的视窗系统,以使好几个 Lisp 程序和普通的 Unix 程序能共享同一屏幕。C 和 Lisp 都将成为系统的程序语言。我们会设法支持 UUCP,MIT Chaosnet,及 Internet 的通讯协议。
GNU 最初的目标是在有虚拟内存的 68000/16000 系列机器上开发,因为这样的环境是最容易开发程序来实现 GNU 的运行。剩下来让 GNU 能在其它较小的机器上运行的工作,将会留给那些希望能在这些机器上使用的人。
GNU不是公共的,毫无约束的软件(public domain)。GNU计划允许每一个人修改及传播 GNU,但是绝不允许传播者对他传播的程序再加进其他的限制。也就是说,不允许将修改后的程序据为己有。GNU计划希望能确保 GNU 所有的版本都能保持*。
GNU的核心精神是*与分享,和hacker精神有异曲同工之妙,虽不能说GNU精神就是hacker精神,不过很难把两者清楚的分开,实际上很多hacker都为GNU做出了巨大的贡献。对知识的渴求是支持他们探索的唯一动力。
GNU的发展历程要追溯到1985年。
1985年,理查德·斯托曼又创立了*软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的Cygnus Solutions。
到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs、C语言编译器GCC以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件,就是操作系统的内核(称为HURD)。
1991年,林纳斯·托瓦兹编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。
1992年,Linux与其他GNU软件结合,完全*的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。(尽管如此,GNU计划自己的内核Hurd依然在开发中,目前已经发布Beta版本。)
许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。
GNU工程十几年以来已经成为一个对软件开发主要的影响力量,创造了无数的重要的工具,例如:强健的编译器,有力的文本编辑器,甚至一个全功能的操作系统。这个工程是从1984年麻省理工学院的程序员理查德·斯托曼的想法得来的,他想要创建一个*的、和UNIX类似的操作环境。从那时开始,许多程序员聚集起来开始开发一个*的、高质量、易理解的软件。
上面内容来自于百度~~~
POSIX
可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX)是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE Std 1003,而国际标准名称为ISO/IEC 9945。此标准源于一个大约开始于1985年的项目。POSIX这个名称是由理查德·斯托曼(RMS)应IEEE的要求而提议的一个易于记忆的名称。它基本上是Portable Operating System Interface(可移植操作系统接口)的缩写,而X则表明其对Unix API的传承。
Linux基本上逐步实现了POSIX兼容,但并没有参加正式的POSIX认证。
微软的Windows NT声称部分实现了POSIX标准。
当前的POSIX主要分为四个部分:Base Definitions、System Interfaces、Shell and Utilities和Rationale。
可移植操作系统接口,通俗理解就是,不同的系统会提供不同OSAPI
语言层面会对于OSAPI进行封装,不同内核提供的系统调用(也就是一个函数)是不同的,那么如果在linux上通过C语言实现的代码在windows平台就无法运行了,这样就只能去修改移植到windows平台的源代码,这样显然是不合理的。所以linux和windows都遵循POSIX标准。那么linux平台和windows平台在OS实现的API可以是不同的,Linux程序员编写Linux系统API,windows程序员编写windows系统API,但是在向上封装的时候,提供的接口是一样的,这样的情况下即使底层系统API实现不同,但是向上的接口是一样的,这样,程序员编写普通应用时候,只用包含封装之后的函数接口,调用封装之后的函数,程序就在源代码级别可移植了。C/C++的标准库涉及到系统API的时候都是通过系统API进行封装,向上提供相同的接口。如果不涉及系统API,也会通过C/C++的标准库进行接口同一,这样代码的可移植性就会大幅度提高,让编程更加高效和方便。
小结
本来想要写一篇基础知识的博客,没想到变成了讲故事。linux开篇从故事开始~~~~~~~~~~