APUE.00::从Unix到Linux(Gnu、Posix是什么)

Unix的诞生:从SystemV 到 Unix-like

  • UNIX:1969,贝尔实验室的工程师,肯·汤普逊(Ken Thompson)和丹尼斯·里奇,在此时自行开发了Unix。
  • 当时的UNIX拥有者AT&T公司以低廉甚至免费的许可将Unix源码授权给学术机构做研究或教学之用,最著名的变种之一是由加州大学柏克莱分校开发的伯克利软件套件(BSD)产品
  • 1983年,AT&T发布了Unix最新版System V,这是一个商业化版本,付费才能使用,并且不得传播源码。
  • AT&T同BSD的官司…这场著作权官司一直打到AT&T将自己的Unix系统实验室卖掉,新接手的Novell采取了一种比较开明的做法,允许柏克莱分校自由发布自己的Unix变种
  • System V 和 BSD的分化:其他一些公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统,有些选择System V作为基础版本,有些则选择了BSD。4.4 BSD又是所有自由版本Unix的基础。
  • Unix除了System V 和 BSD两大分支,还有后来的的 Unix-like系统(GNU /Linux)

System V 第四版的发布,其特性成为一些UNIX共同特性的源头,例如 “SysV 初始化脚本” (/etc/init.d),用来控制系统启动和关闭,System V Interface Definition (SVID) 是一个System V 如何工作的标准定义。

GNU

GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU is Not Unix的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。

作为操作系统,GNU的发展仍未完成,其中最大的问题是具有完备功能的内核尚未被开发成功。GNU的内核,称为Hurd,是自由软件基金会发展的重点,但是其发展尚未成熟。在实际使用上,多半使用Linux内核、FreeBSD等替代方案,作为系统核心,其中主要的操作系统是Linux的发行版。Linux操作系统包涵了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux @ref: https://zh.wikipedia.org/zh-cn/GNU

GNU的协议:

  • GPL:GNU通用公共许可证(GNU General Public License),由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。
  • LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License ) ,在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。只要这些代码是动态连接的就没有限制。

从 GNU 到 Linux

  • 到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs、GCC(GNU Compiler Collection,GNU编译器集合);
  • 1991年 Linus Torvalds编写出了与 UNIX兼容的 Linux操作系统内核并在 GNU GPL协议条款下发布;
  • 如今,GNU的基本组成包括GNU编译器套装(GCC)、GNU的C库(glibc)、以及GNU核心工具组(coreutils),另外也是GNU除错器(GDB)、GNU二进制实用程序(binutils)的GNU Cashshell中和GNOME桌面环境;

C 标准函数库、POSIX、GNU C库的区别

  • 标准函数库通常会随附在编译器上。windows系统和Linux系统下都可以尽情使用。是最基本的C函数库,也叫ANSI C。直到最新版的C11,C标准函数库共有29个头文件;

  • ISO C是从ANSI C继承而来,也可以叫Standard C,同时ISO C也是POSIX的一个子集,除此之外,它还包含各种系统服务接口,如socket等。但是ISO C还是领先于POSIX的,很多C的新标准并没有进入POSIX中,比如线程相关部分。

  • POSIX是 Portable Operating System Interface(可移植操作系统接口) 的缩写,X表示UNIX,而X则表明其对Unix API的传承。它是 ISO C 的延伸,明定了一个 Unix-like的可移植的操作系统所应具备的种种条件。
    POSIX包括的标准有:进程控制、信号(Signal)、文件、管道、IO、线程、Shell、实用程序(包括awk、echo、ed)、还包括一个完整的 C Library (Standard C) ;
    20世纪80年代中期,为了提高兼容性和应用程序的可移植性,阻止这种趋势, IEEE(电气和电子工程师协会)开始努力标准化Unix的开发,后来由 Richard Stallman命名为“Posix”。Linux基本上逐步实现了POSIX兼容,但并没有参加正式的POSIX认证。 @ref: https://en.wikipedia.org/wiki/POSIX
    C POSIX library是C语言的POSIX系统下的标准库。包含了一些在C语言标准库之外的函数。

  • GNU C库(英语:GNU C Library,常简称为 glibc):是一种按照LGPL许可协议发布的、自由的、公开源代码的函数库。既包含C标准库,也包含POSIX库。glibc是linux下面c标准库的实现,即 GNU C Library。

Unix & Linux 分支:

  • System V:
  • BSD: 主要分支 FreeBSD、OpenBSD和NetBSD
    • macOS:这是Apple发布的类Unix的操作系统, 内核由XNU构成, 而XNU是基于NeXTSTEP和FreeBSD混合开发组成. 架构图如下:
  • Unix-like:Gnu/Linux
    • RH => Fedora
    • Debian => Ubuntu

Unix-Linux家族树: