UNIX C 学习笔记一:UNIX/Linux发展历史以及相关概念

一、UNIX 与 Linux 的发展历史

Unix 操作系统是一个强大的多用户,多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由 Ken Thompson, Dennis Titchie 和 Douglas Mcllroy 于 1969年在 AT&T 的贝尔实验室开发。目前它的商标权由国际开放标准组织所拥有,只有符合单一 UNIX 规范的 UNIX 系统才能使用 UNIX 这个名称,否则只能称为类 UNIX (UNIX-like)。
Linux是一套免费使用和自由传播的类 UNIX 操作系统,是一个基于 POSIX 和 UNIX 的多用户,多任务,支持多线程和多 CPU 的操作哦系统。能运行主要的 UNIX 工具软件,应用程序和网络协议,支持32位和64位硬件。
Linux 操作系统依赖于:UNIX 操作系统,MINIX 操作系统,GNU 计划, POSIX 标准 和 Internet 网络。

1965年

贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的计划,该计划要建立一套多使用者,多任务,多层次(multi-user, multi-processor, multi-level)的 MULTICS 操作系统。

1969年

因 MULTICS 计划的工作进度慢,该计划被停了下来。当时, Ken Thompson (后被称为 UNIX 之父)已经有了一个称为“星际旅行”的程序在 GE-635 的机器上跑,但是反应非常慢,正巧被他发现了一部被闲置的 PDP-7( Digital 的主机), Ken Thompson 和 Dennis Ritchie 就将“星际旅行”的程序移植到 PDP-7 上。
MULTICS 是 Multiplexed Information and Computing Services 的缩写,在1970年,那部 PDP-7 只能支持两个使用者,当时,Brian Kernighan 就开玩笑地称他们的系统其实是:UNiplexed Information and Computing Service,缩写为“UNICS”,后来,大家就其谐音,称其为 “UNIX” 了。

1970年 是 UNIX 元年。

1971年

UNIX 第一版出来了。

1973年

Ken Thompson 与 Dennis Ritchie 感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版,一开始使用 Fortran,失败了。后来用一个叫 BCPL(Basic Combined Programming Language)的语言开发,他们整合了 BCPL 形成 B 语言,后来 Dennis Ritchie 觉得 B 语言还是不能满足,于是改良了 B 语言,就是现在的 C 语言。于是 Ken Thompson 和 Dennis Ritchie 成功的用 C 语言重写了 Unix 的第三版内核。

1974年7月

Ken Thompson 和 Dennis Ritchie 在 The Communications of the ACM 发表了一篇题为“The UNIX Time Sharing System”,这是 Unix 与外界的首次接触。
Unix 第五版就以“仅用于教育目的”的协议,提供给各大学作为教学只用,称为当时操作系统课程中的范例教材。各大学公司开始通过 Unix 源码对 Unix 进行了各种各样的改进和扩展。于是 Unix 开始广泛流行。

1977年, BSD 分支诞生

伯克利大学的 Bill Joy 在取得了 UNIX 的核心源码之后,着手修改适合自己机器的版本,并且同时增加了很多工具软件与编译程序,最终将它命名为 Berkeley Software Distribution(BSD)。Bill Joy 也是 Sun 公司的创办者。

1979年, AT&T 的 UNIX V诞生

由于 UNIX 的高度可移植性与强大的功能,加上当时并没有商业纠纷,所以很多商业公司开始了 UNIX 操作系统的发展。但是他们开发出来的 UNIX 操作系统以及内含的相关软件都只是适合自己的硬件,并没有办法在其他的硬件架构下工作。直到 AT&T 推出的 System V 第七版 Unix, 其可以支持 x86 架构的个人计算机系统。由此 Unix 开始出现各种各样的变种。

1981年, IBM 公司推出了微型计算机 IBM PC

1984年,x86 架构的 Minix 操作系统诞生。

在1979年的版权声明中,影响最大的就是学校教 UNIX 核心源码的问题了。为了教学生 Andrew Tanenbaum(谭宁邦)教授动手写了 Minix 这个 Unix Like 的核心程序。1984年开始写,1986年完成,并于次年出版 Minix 相关书籍,

1984年,GNU计划与 FSF 基金会成立

Richard Mathew Stallman(史托曼)在1984年发起的 GNU 计划,GNU是“GNU's Not UNIX”的递归缩写,计划的目的:建立一个自由,开放的Unix操作系统(Free Unix)。
FSF, Free Sofeware Foundation 自由软件基金会。是一个致力于推广自由软件、促进计算机用户自由的美国民间非盈利性组织。它于1985年10月由理查德·斯托曼建立。其主要工作是执行GNU计划,开发更多的自由软件,完善自由软件理念。

1991年

芬兰的赫尔辛基大学的 Linus Torvalds 在 BBS 上贴了一则消息,宣称他以 bash, gcc等工具谢了一个小小的核心程序,这个核心程序可以在 Intel 的 386 机器上面运作,让很多人很感兴趣。

1994年

Linux 的核心正式版 version 1.0 发布。

1996年

version 2.0 发布。指明了企鹅为 Linux 的吉祥物。

二、Unix的特点:

1.UNIX系统是一个多用户,多任务的分时操作系统。
2.UNIX的系统结构可分为三部分:
	操作系统内核(是 UNIX 系统核心管理和控制中心,在系统启动或常驻内存),
	系统调用(供程序开发者开发应用程序时调用系统组件,包括进程管理,文件管理,设备状态等),
	应用程序(包括各种开发工具,编译器,网络通讯处理程序等,所有应用程序都在 Shell 的管理和控制下为用户服务)。
3.UNIX系统大部分是由C语言编写的,这使得系统易读,易修改,易移植。
4.UNIX提供了丰富的,精心挑选的系统调用,整个系统的实现十分紧凑,简洁。
5.UNIX提供了功能强大的可编程的Shell语言(外壳语言)作为用户界面具有简洁,高效的特点。
6.UNIX系统采用树状目录结构,具有良好的安全性,保密性和可维护性。
7.UNIX系统采用进程对换(Swapping)的内存管理机制和请求调页的存储方式,实现了虚拟内存管理,大大提高了内存的使用效率。
8.UNIX系统提供多种通信机制,如:管道通信,软中断通信,消息通信,共享存储器通信,信号灯通信。

三、POSIX 标准:

随着 Unix 的成长,其版本分支开始变多,而 UNIX 这个名字由于法律关系,谁也不能说自己的操作系统是 UNIX 而只能说是类 UNIX。所以现在 UNIX 系统严格意义上是不存在的。现在的Solaris, AIX, IRIS都是各公司在自己的硬件平台上做的商业化的 UNIX,这些系统都遵循 POSIX 标准。
POSIX 表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX 标准定义了操作系统应该为应用程序提供的接口标准,是 IEEE 为要在各种 UNIX 操作系统上运行的软件而定义的一系列 API 标准的总称,其正式称呼为 IEEE 1003,而国际标准名称为 ISO/IEC 9945。
POSIX 标准意在期望获得源代码级别的软件可移植性。换句话说,为一个 POSIX 兼容的操作系统编写的程序,应该可以在任何其它的 POSIX 操作系统(即使是来自另一个厂商)上编译执行。
POSIX 并不局限于 UNIX。许多其它的操作系统,例如 DEC OpenVMS 支持 POSIX 标准,尤其是 IEEE Std. 1003.1-1990(1995 年修订)或 POSIX.1,POSIX.1 提供了源代码级别的 C 语言应用编程接口(API)给操作系统的服务程序,例如读写文件。POSIX.1 已经被国际标准化组织(International Standards Organization,ISO)所接受,被命名为 ISO/IEC 9945-1:1990 标准。

四、类 UNIX
1.AIX(Advanced Interactive eXecutive)— IBM

是 IBM 开发的一套 UNIX 操作系统。它符合 Open group 的 UNIX 98 行业标准(The Open Group UNIX 98 Base Brand),通过全面集成对32-位和64-位应用的并行运行支持,为这些应用提供了全面的可扩展性。它可以在所有的 IBM ~ p 系列和 IBM RS/6000 工作站、服务器和大型并行超级计算机上运行。AIX 的一些流行特性例如 chuser、mkuser、rmuser 命令以及相似的东西允许如同管理文件一样来进行用户管理。AIX 级别的逻辑卷管理正逐渐被添加进各种自由的UNIX风格操作系统中。

2.Solaris 是SUN公司研制的类Unix操作系统。

直至2013年,Solaris的最新版为 Solaris 11。
早期的 Solaris 是由 BSDUnix 发展而来。这是因为升阳公司的创始人之一,比尔·乔伊(Bill Joy)来自加州大学伯克莱分校(U.C.Berkeley)。但是随着时间的推移,Solaris 在接口上正在逐渐向 System V 靠拢,但至今 Solaris 仍旧属于私有软件。2005年6月14日,Sun 公司将正在开发中的 Solaris 11 的源代码以 CDDL 许可开放,这一开放版本就是 OpenSolaris。
Sun的操作系统最初叫做 SunOS。SunOS 5.0开始,SUN 的操作系统开发开始转向 System V4,并且有了新的名字叫做 Solaris 2.0。Solaris 2.6 以后,SUN 删除了版本号中的"2",因此,SunOS 5.10 就叫做 Solaris 10。Solaris 的早期版本后来又被重新命名为Solaris 1.x. 所以"SunOS"这个词被用做专指 Solaris 操作系统的内核,因此 Solaris 被认为是由 SunOS,图形化的桌面计算环境,以及它网络增强部分组成。
Solaris运行在两个平台:Intel x86 及SPARC/UltraSPARC。后者是升阳工作站使用的处理器。因此,Solaris 在 SPARC 上拥有强大的处理能力和硬件支援,同时Intel x86上的性能也正在得到改善。对这两个平台,Solaris 屏蔽了底层平台差异,为用户提供了尽可能一样的使用体验。

3.HP-UX – HP

取自Hewlett Packard UniX,是惠普公司(HP,Hewlett-Packard)以 System V 为基础所研发成的类 UNIX 操作系统。

4.IRIX – Silicon GraphicsInc

是由硅谷图形公司(Silicon GraphicsInc.,一般用简称:SGI)以System V与BSD延伸程序为基础所发展成的UNIX操作系统,IRIX可以在SGI公司的RISC型电脑上运行,即是采行32位、64位MIPS架构的SGI工作站、服务器。

5.Xenix – 微软

是一种 UNIX 操作系统,可在个人电脑及微型计算机上使用。该系统由微软公司在1979年从美国电话电报公司获得授权,为 Intel 处理器所开发。它继承了 UNIX 的特性,Xenix 具备了多人多任务的工作环境,符合 UNIX System V 的接口规格 (SVID)。

6.A/UX

(取自Apple Unix)是苹果电脑(Apple Computer)公司所开发的 UNIX 操作系统,此操作系统可以在该公司的一些麦金塔电脑(Macintosh)上运行,最末(或说最新)的一套A/UX是在Macintosh II、Quadra及Centris等系列的电脑上运行。A/UX于1988年首次发表,最终的版本为3.1.1版,于1995年发表。A/UX 至少需要一颗具有浮点运算单元及标签页式的存储器管理单元(Paged Memory Management Unit,PMMU)的68k处理器才能运行。
A/UX 是以System V 2.2版为基础所发展,并且也使用System V 3(简称:SysV 3)、System V 4、BSD 4.2、BSD 4.3等的传统特色,它也遵循POSIX规范及SVID规范,不过遵循标准版本就难以支持最新的信息技术,因此在之后的第二版便开始加入TCP/IP网络功能。有传言表示有一个后续版本是以OSF/1为主要的代码基础,但却从未公开发表过,不过无从证实此版本是否真存在过。

7.BSD – Berkeley Software Distribution – 加州大学伯克利分校的计算机系统研究组(CSRG)研究开发和分发的。

1983年 --	4.2 BSD		在 VAX 小型机上运行
1986年 --	4.3 BSD		在 VAX 小型机上运行
1988年 -- 4.3 BSD Tahoe		在 Tahoe 的小型机上运行
1990年 -- 4.3 BSD Reno		支持很多 POSIX.1 功能。
1989年 --	伯克利将 4.3 BSD Tahoe中很多非 AT&T 源代码包装成BSD 网络软件 1.0 版本,并使其成为公开获得的软件。
1991年 -- 发布了 BSD 网络软件 2.0 版,从 4.3 BSD Reno 版派生出来的,其目的是使大部分 4.4 BSD 不再受 AT&T 许可证的限制。最初的 BSD 系统包含了 AT&T 专有的源代码,需要 AT&T 的认可证。
1994年 -- 4.4 BSD-Lite 发布,不再需要具有 UNIX 源代码使用许可证就可以使用它。
1995年 -- CSRG 修复了 bug 的版本。4.4 BSD-Lite 第2发行版是 CSRG的最后一个 BSD 版本。

BSD 则代表“Berkeley Software Distribution,伯克利软件套件”,其源于对加州大学伯克利分校所开发的贝尔实验室 UNIX 的一系列修改,它最终发展成一个完整的操作系统,现在有多个不同的BSD分支。
今天,“BSD”并不特指任何一个 BSD 衍生版本,而是类 UNI X操作系统中的一个分支的总称。
以下是通常认可的三个“主流” BSD 操作系统:
	1)FreeBSD: FreeBSD 是最受欢迎的 BSD,针对高性能和易用性。它支持英特尔和 AMD 的32位和64位处理器。是基于 4.4BSD-Lite 操作系统的。
	2)NetBSD: NetBSD 被设计运行在几乎任何架构上,支持更多的体系结构。在他们的主页上的格言是"理所当然,我们运行在 NetBSD 上"。
	3)OpenBSD: OpenBSD 为最大化的安全性设计的 —— 这不仅仅它宣称的功能,在实践中也确实如此。它是为银行和其他重要机构的关键系统设计的。

还有两个其他的重要 BSD 操作系统:
	1)DragonFly BSD: DragonFly BSD 的设计目标是提供一个运行在多线程环境中的操作系统 —— 例如,计算机集群。
	2)Darwin / Mac OS X: Mac OS X 实际上基于 Darwin 操作系统,而 Darwin 系统基于 BSD。它与其他的 BSD 有点不同,虽然底层内核和其他的软件是开源代码(BSD 代码),但操作系统的大部分是闭源的 Mac OS 代码)。苹果在 BSD 基础上开发了 Mac OS X 和 iOS,这样他们就不必写操作系统底层,就像谷歌在 Linux 基础上开发 android 系统一样。

8.System V

曾经也被称为 AT&T System V,是 Unix 操作系统众多版本中的一支。它最初由 AT&T 开发,在1983年第一次发布。一共发行了4个 System V 的主要版本:版本1、2、3 和 4。System V Release 4,或者称为 SVR4,是最成功的版本。
SVR4(UNIX System V Release 4)是 AT&T 的 UNIX 系统实验室(UNIX System Laboratories, USL)的产品,将下列系统的功能合并到了一个一致的操作系统中:AT&T UNIX 系统 V 3.2(SVR3.2)、Sun Microssystems公司的 SunOS操作系统、加州大学伯克利分校的 4.3BSD 以及微软的 Xenix 系统。
SVR4 在1989年后期发布,在1990年开始向终端用户提供。
符合 POSIX 1003.1 标准和 X/Open XPG3标准。

9.Linux

Linux 是由 Linus Torvalds 在1991年为替代 MINIX 而研发的。

五、几种比较

  1. Linux 与 BSD

     1)许可证
     	许可证是典型的差异,虽然它不会对大多数人产生影响。
     		Linux 使用 GNU 通用公共许可证,即 GPL。如果你修改了 Linux 内核,并将其分发,你就必须放出您的修改的源代码。
     	BSD 使用 BSD 许可证。如果你修改了 BSD 内核或发行版,并且发布它,你根本不需要必须发布其源代码。你可以自由地对你的 BSD 代码做任何你想做的事情,你没有义务发布的你修改的源代码,当然你想发布也行。
     	两者都是开放源码的,但是以不同的方式。人们有时会陷入关于哪种许可证是“更自由”的辩论。GPL 可以帮助用户以确保他们可以拥有 GPL 软件的源代码,并限制开发人员迫使他们开放代码。BSD 许可证并不能确保用户可以拥有源代码,而是给开发人员选择是否公布代码的权利,即使他们想要把它变成一个闭源项目。
    
     2)使用
     	Linux 显然比 FreeBSD 更受欢迎。例如,Linux 往往会比 FreeBSD 更早提供新硬件的支持。BSD 有一个兼容包可用,使之能像大多数的其他软件一样原生的执行 Linux 二进制程序。
     	如果您使用过 Linux, FreeBSD 不会让你感觉到太大的不同。如果把 FreeBSD 作为桌面操作系统,你也可以使用相同的 GNOME,KDE 或 Xfce 桌面环境,你也可以在BSD上使用 Linux 上的大多数的其他软件。有一点需要注意,FreeBSD 不会自动安装的图形化桌面,所以你要花相对于 Linux 更多的心思来照顾你的BSD。BSD 更守旧一些。
     	FreeBSD 的可靠性和稳定性也许更适合作为服务器的操作系统。而厂商也会选择 BSD 而不是 Linux 作为其操作系统,因为这样他们就不必放出他们修改的代码。
     	如果你是一个 PC 桌面用户,你真的不需要太过在意 BSD。你可能会喜欢 Linux,因为它具有更先进的硬件支持,更容易安装,具有现代操作系统的特点。如果你关注服务器或嵌入式的设备,你可能会更喜欢 FreeBSD。
     	我们可能会听到一些人说他们在桌面电脑上使用 FreeBSD,你当然也可能是其中之一!但像 Ubuntu 或 Mint 一样的开源操作系统对于多数用户来说更体验良好和更先进些。
    
  2. System V 和 BSD

     Unix操作系统在操作风格上主要分为 System V 和 BSD (目前一般采用 BSD 的第4个版本 SVR4),前者的代表的操作系统有 Solaris 操作系统,在 Solaris1.X 之前,Solaris 采用的是 BSD 风格,2.x 之后才投奔S ystem V 阵营。后者的代表的操作系统有FreeBSD。
     System V 它最初由 AT&T 开发,曾经也被称为 AT&T System V,是 Unix 操作系统众多版本中的一支。在1983年第一次发布,一共发行了4个System V的主要版本,System V Release 4,或者称为 SVR4,是最成功的版本,该版本有些风格成为一些UNIX共同特性的源头,如下表格的初始化脚本/etc/init.d。用来控制系统的启动和关闭。
     BSD(Berkeley Software Distribution,伯克利软件套件)是 Unix 的衍生系统,1970年代由伯克利加州大学(Uni Versity of California, Berkeley)开创。BSD用来代表由此派生出的各种套件集合。
    
  3. Poxis 和 System V

     System V 的概念如上所述。
     Posix 是Portable Operating System Interface(可移植性操作系统接口)的简称,是一个电气与电子工程学会即IEEE开发的一系列标准,目的是为运行在不同操作系统的应用程序提供统一的接口,实现者是不同的操作系统内核。
    
     将这两个名词放在一起讨论的一般是在 Linux 的进程间通信中,如在信号量编程中,有 Posix 信号量和 System V 信号量。它们都可以用于进程或者线程间的同步。
     Posix 信号量是基于内存的,即信号量值是放在共享内存中的,它使与文件系统中的路径名对应的名字来标识。当我们谈论“Posix 信号量”时,所指的是单个计数信号量。在 Linux 操作系统中,Posix 信号量(共享内存、消息队列)可以通过 ipcs 命令查看。Posix 信号量多用于进程间通信。
     System v 信号量测试基于内核的,它放在内核里面,要使用 System V 信号量需要进入内核态,所以在多线程编程中一般不建议使用 System V 信号量,因为线程相对于进程是轻量级的,从操作系统的调度开销角度看,如果使用 System V 信号量会使得每次调用都要进入内核态,丧失了线程的轻量优势。当我们讨论“System v信号量”时,所指的是计数信号量集。
    

参考:
https://blog.csdn.net/tfygg/article/details/46619115
https://baike.baidu.com/item/unix
https://blog.csdn.net/qq_29344757/article/details/78657874
《UNIX 环境高级编程 第三版》

声明:
本博客的所有内容,仅是自己的一些学习笔记,如有错误,欢迎指正。如有侵权,请告知修改。

猜你喜欢

转载自blog.csdn.net/lijing_2011/article/details/82903829