UNIX
- Bell实验室的Ken Thompson开始利用一台闲置的 PDP-7计算机开发了一种多用户,多任务操作系统。很快,Dennis Richie加入了这个项目,在他们共同努力下诞生了最早的UNIX。Richie受一个更早的项目——MULTICS的启发,将此操作系统命名为 Unix。
- 早期UNIX是用汇编语言编写的,但其第三个版本用一种崭新的编程语言C重新设计了。C是Richie设计出来并用于编写操作系统的程序语言。通过这次重新编写,Unix得以移植到更为强大的 DEC PDP-11/45与11/70计算机上运行。后来发生的一切,正如他们所说,已经成为历史。
- Unix从实验室走出来并成为了操作系统的主流,现在几乎每个主要的计算机厂商都有其自有版本的Unix。
POSIX
- 随着UNIX成长,后来占领了市场,公司多了,懂得人也多了,就分家了。而“UNIX”这个名字由于法律关系,谁也不能说自己的操作系统是“UNIX”而只能说是“UNIX兼容”系统了。所以现在“UNIX”系统严格意义上说是不存在的,存在的只是一个遥远的传说。那么现在那些Solaris,AIX,IRIS都是什么呢?那些都是各公司在他们硬件平提上作的商业UNIX,这些系统都遵循一个叫POSIX的古怪标准,对了,这个标准呢,是后来UNIX太多太乱,大家编程接口甚至命令都不一样了所以没办法座下来商量的一个协议。
- 可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX)是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称
GNU
- 也称GNU实用程序。除了使用内核控制硬件设备外,计算机操作系统还需要使用程序执行标准功能。GNU组织(GNU代表GNU’s Not Unix)开发了一个完整的Unix实用程序集。Linus的Linux内核与GNU操作系统实用程序的结合诞生了一个完整的、功能强大的免费操作系统。
- GNU就是GNU’s Not Unix的缩写, GNU 的创始人Stallman 认为UNIX虽然不是最好的操作系统,但是至少不会太差,而他自信有能力把UNIX 不足的地方加以改进,使它成为一个优良的操作系统,就是名为GNU的一个同UNIX兼容的操作系统,并且开发这 个系统的目的就是为了让所有计算机用户都可以自由地获得这个系统。任何人都可以免费地获得这个系统的源代码,并且可以相互自由拷贝GNU 是由自由软件基金会 (Free Software Foundation,FSF)的董事长Richard M. Stallman (RMS)于1984年发起的,如今已经有十几年的历史了。
- GNU 开始的策略就是先开发UNIX已经有的程序(因为计划中GNU将会是一个与UNIX兼容的操作系统,而UNIX下的标准使用界面已经非常完善了,所以先依照这个标准开发应用程序,将来GNU自己的系统核心一出来,就立即可以使用所有先前开发的GNU 应用程序),因此会先有emacs,GCC等工具软件开发出来。其中GCC更是GNU计划自立更生的一个重要步骤(不需要依靠商业软件来产生/编译整个GNU系统),如今这套程序开发工具已经很成熟了。
- 下一步要做的就是开发GNU的核心--Hurd了,只要Hurd一开发出来,GNU 就是一套能够自我开机,真正自给自足,完整的自由操作系统。Hurd是基于Mach这个微内核(micro kernel)上的操作系统核心。以后会使用尤他大学的Mach4(一个更为方便和快速的微内核),由于Hurd基于Mach,所以只要Mach移植到什么机器上,Hurd也立刻就是这种硬件平台的操作系统,就这一点而言,它是一种很前卫的操作系统。
- 但是,GNU的操作系统核心Hurd一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的GNU操作系统,但是GNU奠定了Linux用户基础和开发环境。自由软件基金会目前有一套以Linux为核心的GNU系统计划。这个计划就是自由软件基金会支持的 Debian Linux。 Debian Linux 是GNU软件与公共软件(Public Domain Software)最彻底的结合,它是一套完全由GNU和公共软件配置起来的,而且具有商业操作系统水平的操作系统。
- Linux加入GNU之后,成了“自由的OS”,称为“GNU/Linux”。
- 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计划自己的内核Hurd依然在开发中,目前已经发布Beta版本。)
- 许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。
- GNU软件包列表。该系统的基本组成包括GNU编译器套装(GCC)、GNU的C库(glibc)、以及GNU核心工具组(coreutils),另外也是GNU除错器(GDB)、GNU二进制实用程序(binutils)的GNU Cashshell中和GNOME桌面环境。
LINUX
- 1991年10月,林纳斯·托瓦兹发布了他的玩具内核源代码(Freeminix-like kernel sources for 386-AT)。这是他在学习Minix操作系统源码的过程中耗时六个月写出来的POSIX不完整兼容的内核,将GNU的基础软件Gcc和Bash成功的移植到了上面。这之后大量用户参与开发,并在1994年使用GPL协议发布了Linux 1.0内核。
- 相信了解一些IT知识的人都听过Linux这个名词。维基百科上的Linux词条是最经典和最准确的说明(http://zh.wikipedia.org/wiki/Linux),在此直接应用,免去班门弄斧之嫌。
- Linux操作系统(Linux),是一种计算机操作系统。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。
- Linux内核最初是为英特尔386微处理器设计的。现在Linux内核支持从个人电脑到大型主机甚至包括嵌入式系统在内的各种硬件设备。
- 在开始的时候,Linux只是个人狂热爱好的一种产物。但是现在,Linux已经成为了一种受到广泛关注和支持的一种操作系统。包括IBM和惠普在内的一些计算机业巨头也开始支持Linux。很多人认为,和其他的商用Unix系统以及微软 Windows相比,作为自由软件的Linux具有低成本,安全性高,更加可信赖的优势。
- Linux内核最初只是由芬兰人林纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。最初的设想中,Linux是一种类似Minix这样的一种操作系统。Linux的第一个版本在1991年9月被发布在Internet上,随后在10月份第二个版本就发布了。
- Linux的历史是和GNU紧密联系在一起的。从1983年开始的GNU计划致力于开发一个自由并且完整的类Unix操作系统,包括软件开发工具和各种应用程序。到1991年Linux内核发布的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。在Linus Torvalds和其他开发人员的努力下,GNU组件可以运行于Linux内核之上。整个内核是基于GNU通用公共许可,也就是GPL(General Pubic License)的,但是Linux内核并不是GNU 计划的一部分。
- Linux的标志和吉祥物是一只名字叫做Tux的企鹅,Linux的注册商标是Linus Torvalds所有的。这是由于在1996年,一个名字叫做William R. Della Croce的律师开始向各个Linux发布商发信,声明他拥有Linux商标的所有权,并且要求各个发布商支付版税,这些发行商集体进行上诉,要求将该注册商标重新分配给Linus Torvalds。
- Linux的某些版本是不需要安装就能使用的版本,他们称为LiveCD
GNU/Linux
- 通过回答上面两个问题,我们很明显可以注意到Linux只是一个操作系统内核而已,而GNU提供了大量的自由软件来丰富在其之上各种应用程序。因此,严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。基于这些组件的Linux软件被称为Linux发行版。一般来讲,一个Linux发行套件包含大量的软件,比如软件开发工具,数据库,Web服务器(例如Apache),X Window,桌面环境(比如GNOME和KDE),办公套件(比如OpenOffice.org),等等。
- 绝大多数基于Linux内核的操作系统使用了大量的GNU软件,包括了一个shell程序、工具、程序库、编译器及工具,还有许多其他程序,例如Emacs。正是由于Linux使用了许多GNU程序,GNU计划的开创者Richard Stallman博士提议将Linux操作系统改名为GNU/Linux。但有些人只把操作系统叫做"Linux"。
- 有部分Linux套件,包括了Debian,采用了“GNU/Linux”的称呼。但大多数商业Linux套件依然将操作系统称为Linux。有些人也认为“操作系统”一词指的应该只是系统的内核,其他程序都只能算是应用软件,这么一来,该操作系统的内核应叫Linux,而Linux套件是在Linux内核的基础上加入各种GNU工具。
类UNIX系统
- 类Unix系统(英文:Unix-like)是指继承UNIX的设计风格演变出来的系统(比如GNU/Linux、FreeBSD、OpenBSD、SUN公司的Solaris、Minix、QNX等),这些操作系统虽然有的是自由软件,有的是商业软件,但都相当程度地继承了原始UNIX的特性,有许多相似处,并且都在一定程度上遵守POSIX规范,但是它们却并不含有UNIX的源代码。UNIX的源代码为SCO公司所有,属于商业软件,UNIX的商标权和UNIX标准认定属于OPENGROUP所有。由于UNIX标准认定价格昂贵,所以唯一获得UNIX标准认定的为苹果的MACOS系统。
Shell
- Shell是一个特殊的交互式使用程序,它为用户提供了一种启动程序、管理文件系统中的文件和管理运行在Linux系统上的进程的方式。Shell的核心是命令提示符,命令提示符是shell用于交互的组成部分,它允许输入文本命令,解释命令,然后再内核中执行命令。
- bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。它也被移植到Microsoft Windows上的Cygwin与MinGW,或是可以在MS-DOS上使用的DJGPP项目。在Novell NetWare与Andriod在上也有移植。
GCC glibc
- GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)
- GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由 [2] 。
- glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库。
- glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个操作系统。
MINGW
- MinGW,即 Minimalist GNU For Windows
- 提供了,基于WINDOWS系统调用的C标准库,编译器等
个人理解
- UNIX系统遵守POSIX,类UNIX系统在一定程度上遵守POSIX
- LINUX实现了POSIX接口下的内核,GNU实现类POSIX接口上的应用程序(如编译器、shell、数据库、web服务器)
- MINGW提供了,基于WINDOWS系统调用的C标准库,编译器等