GNU为什么没有包含Unix内核,是因为GNU的开发策略。GNU计划是开发一个与Unix兼容的操作系统,在Unix系统内核已经非常完善的情况下,优先开发周边的应用程序,等自己的内核开发出来之后,直接替换掉内核即可。待大部分应用程序已经开发完毕的时候,GNU开始开发自己的内核,即GNU Hurd。但是GNU Hurd一直处于试验阶段,没有任何可用性,而这时刚好遇到了Linux的横空出世(1991.8.1 Linux发布0.0.1版,GNU Hurd1991.5月发布)。Linux作为内核,配合GNU丰富的应用程序,很自然的就结合在了一起,成为了风靡全球的GNU/Linux系统。
实际上市面上所有的Linux发行版其实都应该叫做GNU/Linux发行版,关于GNU的详细信息可以参考官网GNU Operating System
POSIXPortable Operating System Interface of Unix的缩写,定义了一套标准接口 - 操作系统为应用程序提供的接口。由于Unix系统的开放性,到了1988年,各种Unix系统满天飞,在一个系统上正常工作的应用程序不能移植到另一个系统上,这种不可移植性还往往还被大Unix厂商作为自己的卖点,极大地分裂和违背了Unix的初衷。为了统一这种乱象,出现了几种标准:AT&T成立了Unix international标准组织,几大厂商(DEC、HP、IBM等)成立了开放软件基金会(OSF, Open Software Foundation),而IEEE则发布了POSIX标准,这些标准的目的都是为了统一Unix的接口标准(但实际上,POSIX标准并不局限于Unix系统)。
POSIX标准意在期望获得源码级别的软件可移植性,即为一个POSIX兼容的操作系统编写的程序,可以在任何其它POSIX兼容的操作系统上编译执行。
BSDBerkeley Software Distribution,伯克利软件套件。
AT&A的贝尔实验室在1971年发布了第一版的Unix Time Sharing System,到了1975年已经发布到第6版。1974年,加州大学伯克利分校(Berkeley)获取到一份Unix的源码拷贝,在此基础上做一些学术上的研究。1978年,Berkeley的Bill Joy,基于AT&T的Unix V6,增加了一些自己的附件软件,打包在一起发布了一个版本,这个版本就是第一版的BSD。
1984年,Berkeley发布了第四版的BSD,该版本是世界上第一个支持TCP/IP的Unix发行版(同年,Bill Joy成立了SUN公司)
BSD有几个比较有名的“分支”系统:
FreeBSD,主打高性能和易用性
OpenBSD,主打安全性,很多银行系统和重要机构的系统都是基于OpenBSD
NetBSD,被设计为几乎可用在任何架构上,支持非常多的体系结构
DragonFly BSD,适用于多线程环境的操作系统,如计算机集群
Darwin/Mac OS X,Mac OS X基于Darwin操作系统,而Darwin基于BSD。苹果在BSD的基础上开发了MAC OS X和IOS(内核使用开源的BSD代码,其它大部分是闭源的Mac OS代码),类似于谷歌在Linux基础上开发Android
在今天,提到BSD,并非指任何一个BSD的衍生版本,而是指类Unix操作系统的一个分支的总称。
System VUnix操作系统在操作风格上主要分为System V和BSD。System V由AT&T发布,1983年发布了第一个版本,直到1998年发布了第四个版本,也是最经典的一个版本,简称SVR4。1985年,AT&A发布了SVID(SystemV Interface Definition),希望统一Unix的接口标准(目标和POSIX类似)。
MacOSMacOS最终可以追溯到BSD分支,其大致演化过程为:
BSD4.2(1983.9) -> Mach(1986) -> NeXTSTEP 1.0(1989.9) -> Mac OS X 10.0(2001.3)
1986年,Rick Rashid及其同事在Carnegie Mellon大学创造了Mach操作系统的第一个版本,用于取代BSD的Unix内核。
2001年,Apple 发布 Mac OS X,这是一个基于Mach内核和BSD开发的桌面操作系统。
AndroidAndroid系统是基于Linux系统发展而来的。在Linux的内核上运行了一个Java虚拟机(最开始叫Dalvik虚拟机,后面改为Android Run Time,ART虚拟机),由虚拟机来解释执行用java代码编写的应用程序。
开源从Unix诞生开始,就伴随着开源的概念。开源全称是Open Source,是开放源代码的意思,也就意味着开放,任何人都可以得到程序的源代码。但是开源并不意味着免费(虽然大部分都是免费),也是受限于版权限制的,只是这些版权相对闭源来说要开放宽松了很多。在版权限制范围内,可以基于源代码做修改并重新发行,甚至收费。开源的本质是在开放,是接纳、包容和发展,求同存异,互利共赢。
许可证开源并非是无限制的开放,也是有版权的,这些版权的声明就是开源许可证。比较常见的许可证有:GPL、BSD、Apache、MIT、LGPL、Mozilla等。下图根据网上搜索的信息简单整理了一下各许可证的主要许可范围,从图中可以看到MIT许可证是最宽松的,而GPL是相对比较严格的。
下面分别简单介绍上面几种许可证的特点: