零零碎碎的历史和概念

在看各种代码和文档的时候,老是会遇见各种不太认识的词汇,也不懂到底是啥,也不懂到底是从哪里来的,有什么意义。
但是计算机作为一个完全由人类从零创造的东西,知其然,知其所以然,还有很有意义的。
这里简单总结一下各个概念和相关的一些历史。
(本人水平有限,有不对的或者理解不对的地方,请大家见谅~ )

Unix

Multics

1965年,美国麻省理工大学(MIT),通用电气公司(GE)和AT&T(American Telephone and Telegraph)的贝尔实验室一起开发了一个系统,那就是Multics(MULTiplexed Information and Computing System)。
其中有两个人很重要,分别是肯·汤普逊和丹尼斯·里奇。其中,肯·汤普逊还在Multics上开发了一个小游戏——Star Travel。
但是因为种种原因吧,贝尔实验室退出了,这个项目应该是没有彻底完成,就结束了。

Unix

上面提到一个Star Travel的游戏,他的作者肯·汤普逊也许是为了能够继续玩他的游戏,所以就喊来了丹尼斯·里奇又写了一个新的系统,也就是Unix,但是当时还是叫Unics,毕竟是从Multics这里来的。
哦,对了,这两位大哥还是B语言和C语言的作者。刚开始Unix就是用B语言写的,后来写出了C语言之后,在1973年,他们又用C语言重新实现了一遍Unix。
因为这个Unix,这哥俩还获得了图灵奖。不过确实也是太强了,不说Unix,单说C语言也是够强。

System V 和 BSD

System V和BSD(Berkeley Software Distribution)其实是Unix的两个分支,前者就是由AT&T的贝尔实验室推出的,后者如其名,是加州大学伯克利分校搞得。
像是IBM的AIX,惠普的HP-UX都是System V风格的Unix,Sun的Solaris前期是BSD风格,后来也奔向了System V。
而像美国DEC公司的Ultrix,惠普的Tru64 UNIX都是BSD风格的。Mac OS的前身NeXTSTEP也是BSD风格的Unix系统。

类Unix

这里摘一段wiki的描述:
类Unix系统(英语:Unix-like;经常被称为UN*X或*nix)指各种Unix的派生系统,比如FreeBSD、OpenBSD、SUN的Solaris,以及各种与传统Unix类似的系统,例如Minix、Linux、QNX等。它们虽然有的是自由软件,有的是私有软件,但都相当程度地继承了原始UNIX的特性,有许多相似处,并且都在一定程度上遵守POSIX规范。 UNIX的商标权由国际开放标准组织所拥有,只有符合单一UNIX规范的UNIX系统才能使用UNIX这个名称,否则只能称为类UNIX(UNIX-like)。
然后百度百科是这么说的:
由于UNIX标准认定价格昂贵,所以唯一获得UNIX标准认定的为苹果的MACOS系统。
所以,我理解的,就是把Unix和类Unix当成一类东西就好了。

GNU

GNU并不是一个具体的系统或者软件,他是一个计划。
Unix系统诞生之后,逐渐变得繁荣,各个厂商开始为Unix系统开发软件,并推出了他们自己的Unix版本,比如AIX,Solaris等等。但是这些系统只能运行在大型计算机上面,而且价格非常贵。小公司以及个人基本不太可能用得起。为了对抗这些垄断,自由主义者理查德·斯托曼登上了历史舞台,他觉得“在自由的时代,用户应该免费享有对软件源码阅读和修改的权利”,所以他提出了GNU计划。
至于为啥叫GNU,其实他是“GNU is Not Unix”的缩写。他的目的就是开发出一套包括操作系统内核、SHELL、各种应用软件等,一整套完整的软件系统来代替Unix。

Linux

说到Linux,这里要先提一下Minix。百度百科的描述:
20世纪80年代,由于AT&T所有的UNIX版权的限制,荷兰的Andrew S. Tanenbaum教授决定写一个不包含任何AT&T源代码的UNIX系统,名为MINIX(即小型的UNIX),并开放全部源代码给大学教学和研究工作,Minix于2000年重新改为BSD授权,成为自由和开放源码软件,为全球注册商标。
再之后呢,芬兰人李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时使用了Minix系统,他可能是觉得这个系统用起来不太顺手,于是他也像自己写一个操作系统(大神就是大神,想干啥就能干啥)。于是,在1991年的9月他就完成了Linux的第一个版本。
然后,李纳斯他也是GNU计划的支持者,所以他贡献了Linux内核的全部代码,所以Linux也称GNU/Linux,同时他的贡献也算是补全了GNU计划。

POSIX

POSIX他是一个一直在发展的协议和标准,我们来看wiki怎么说的:
可移植操作系统接口(英语: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是干啥的呢?我们知道操作系统有多个分支,为了保证源代码层面的可移植,所以制定了这么一个标准。这样同样的一份代码,在不同的操作系统上编译出来的结果是一致的。

ISO C

这个东西其实也是一个标准,保证在各个平台上使用各个编译器对同一份源码能编译出相同的结果。
ISO C是从ANSI C继承而来,也可以叫Standard C,其实可以理解为是一样的东西,就是C的标准。
但是既然把他归类到POSIX下,那就肯定是跟POSIX有点关系呀~
ISO C其实是POSIX的一个子集,除此之外,它还包含各种系统服务接口,如socket等。但是ISO C还是领先于POSIX的,很多C的新标准并没有进入POSIX中,比如线程相关部分。
C中还有一个Posix库,他就是基于POSIX标准定义的一套头文件实现的lib库。

参考

Unix 发展史
Linux,Unix,GNU 到底有什么样的渊源?
POSIX 是什么?让我们听听 Richard Stallman 的诠释
可移植操作系统接口
UNIX System V
Berkeley Software Distribution
BSD
聊聊我理解的ANSI C、ISO C、GNU C、POSIX C
Difference between C standard library and C POSIX library

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值