UNIX
开发者 | 贝尔实验室的肯·汤普逊,丹尼斯·里奇,布萊恩·柯林漢,道格拉斯·麥克羅伊,喬伊·歐桑納 |
---|---|
编程语言 | C语言和組合語言 |
作業系統家族 | Unix |
運作狀態 | 當前 |
源码模式 | 历史上是闭源代码,但某些Unix计划(包括BSD家族和illumos)是开源软件 |
首次发布 | 开发起于1969年 内部首次出版手册于1971年11月[1] 在贝尔实验室外宣布于1973年10月[2] |
支持的语言 | 英语 |
内核类别 | 多种:单体内核,微内核,混合内核 |
默认用户界面 | 命令行界面和图形用户界面(X視窗系統) |
许可证 | 各种:某些版本是专有软件,另一些是自由软件/开源软件 |
官方網站 | opengroup |
UNIX(非複用信息和計算機服務,英語:Uniplexed Information and Computing Service,UnICS),一种多用户、多进程的计算机操作系统,源自于从20世纪70年代开始在美国AT&T公司的贝尔实验室开发的AT&T Unix。
簡介
UNIX操作系统,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由肯·汤普逊、丹尼斯·里奇和道格拉斯·麥克羅伊于1969年在AT&T的贝尔实验室开发。目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX规范的UNIX系统才能使用UNIX这个名称,否则只能称为类UNIX(UNIX-like)。
Unix的前身为1964年開始的Multics,1965年时,贝尔实验室加入一项由通用电气和麻省理工学院合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi-processor、multi-level)的MULTICS操作系统。贝尔实验室参与了这个操作系统的研发,但因为开发速度太慢,1969年贝尔实验室决定退出这个计划。贝尔实验室的工程师,肯·汤普逊和丹尼斯·里奇,在此时自行开发了Unix。
此後的10年,Unix在學術機構和大型企業中得到了廣泛的應用,當時的UNIX擁有者AT&T公司以低廉甚至免費的許可將Unix源碼授權給學術機構做研究或教學之用,許多機構在此源碼基礎上加以擴充和改進,形成了所謂的「Unix變種」,這些變種反過來也促進了Unix的發展,其中最著名的變種之一是由加州大學柏克萊分校開發的柏克萊軟件套件(BSD)產品。
后来AT&T意识到了Unix的商业价值,不再将Unix源码授权给学术机构,并对之前的Unix及其变种声明了版权权利。BSD在Unix的历史发展中具有相当大的影响力,被很多商业厂家采用,成为很多商用Unix的基础。其不断增大的影响力终于引起了AT&T的关注,于是开始了一场持久的版权官司,这场官司一直打到AT&T将自己的Unix系统实验室卖掉,新接手的Novell采取了一种比较开明的做法,允许柏克莱分校自由发布自己的Unix变种,但是前提是必须将来自于AT&T的代码完全删除,于是诞生了4.4 BSD Lite版,由于这个版本不存在法律问题,4.4 BSD Lite成为了现代柏克莱软件套件的基础版本。尽管后来,非商业版的Unix系统又经过了很多演变,但其中有不少最终都是建立在BSD版本上(Linux、Minix等系统除外)。所以从这个角度上,4.4 BSD又是所有自由版本Unix的基础,它们和System V及Linux等共同构成Unix操作系统。
BSD使用主版本加次版本的方法標識,如4.2、4.3BSD,在原始版本的基礎上還有派生版本,這些版本通常有自己的名字,如4.3BSD-Net/1,4.3BSD-Net/2等。BSD在發展中也逐漸衍生出3個主要的分支:FreeBSD、OpenBSD和NetBSD。
此後的幾十年中,Unix仍在不斷變化,其版權所有者不斷變更,授權者的數量也在增加。Unix的版權曾經為AT&T所有,之後Novell擁有取得了Unix,再之後Novell又將版權出售給了聖克魯茲作業,但不包括知识产权和专利权(這一事實雙方尚存在爭議)。有很多大公司在取得了Unix的授權之後,開發了自己的Unix產品,比如IBM的AIX、惠普的HP-UX、SCO的Openserver、SUN的Solaris(被Oracle收购)和SGI的IRIX。
Unix因为其安全可靠,高效强大的特点在服务器领域得到了广泛的应用。直到GNU/Linux流行开始前,Unix也是科学计算、大型机、超级计算机等所用操作系统的主流。现在其仍然被应用于一些对稳定性要求极高的数据中心之上。
历史
初创期
Unix最初受到Multics计划的启发。Multics是由麻省理工学院、通用电气和AT&T底下的贝尔实验室合作进行的操作系统项目,被设计运行在GE-645大型主机上。但是由于整个目标过于庞大,糅合了太多的特性,Multics虽然发布了一些产品,但是性能都很低,AT&T最终撤出了投入Multics项目的资源,退出这项合作计划。
贝尔实验室最初参与Multics计划的部门为计算器技术研发部门(Computing Techniques Research Department),部门主管为道格拉斯·麦克罗伊,其下的工程师,原有丹尼斯·里奇、布莱恩·柯林汉、道格拉斯·麦克罗伊、麦克·列斯克(Mike Lesk)与乔伊·欧桑纳(Joe Ossanna)等人,为了Multics计划,他们又召募了肯·汤普逊加入其中。肯·汤普逊进入Multics计划不久,计划就中止了,但因为机器仍然保留在贝尔实验室,他继续在GE-645上开发软件。肯·汤普逊在GE-645上,写出了一个仿真器,可以让一个文件系统与内存分页机制运作起来。他同时也写了一个程序语言Bon,编写了一个太空旅行游戏。经过实际运行后,他发现游戏速度很慢而且耗费昂贵,每次运行会花费75美元。在GE-645被搬走后,肯·汤普逊在实验室中寻找没人使用的机器,找到了几台PDP-7。丹尼斯·里奇的帮助下,汤普逊用PDP-7的組合語言重写了这个游戏,并使其在DEC PDP-7上运行起来。这次经历加上Multics项目的经验,促使汤普逊开始在DEC PDP-7上研究如何开发操作系统。
1969年,肯·汤普逊提议在PDP-7上开发一个新的阶层式操作系统的计划。Multics的原有成员,加上Rudd Canady,都投入这个计划。肯·汤普逊发现要编写驱动程序来驱动文件系统,进行测试,并不容易,于是开发了一个壳层(shell)与一些驱动程序,做出一个操作系统的雏形。在团队合作下,Multics的许多功能都被采纳,重新實作,最终做出了一个分时多任务操作系统,成为第一版UNIX。因为Multics来自“MULTiplexed Information and Computing System”的缩写,在1970年,那部PDP-7却只能支持两个使用者,彼得·纽曼(Peter G. Neumann)戏称他们的系统其实是:“UNiplexed Information and Computing System”,缩写为“UNICS”。于是这个项目被称为UnICS(Uniplexed Information and Computing System)。
因為PDP-7的效能不佳,肯·湯普遜與丹尼斯·里奇決定把第一版UNIX移植到PDP-11/20的機器上,開發第二版UNIX。在效能提升後,真正可以提供多人同時使用,布萊恩·柯林漢提議將它的名稱改為UNIX。
第一版UNIX是用PDP-7汇编语言编写的,一些应用是由叫做B语言的解释型语言和汇编语言混合编写的。在进行系统编程时不够强大,所以湯普遜和里奇对其进行了改造,并于1971年共同发明了C语言。1973年湯普遜和里奇用C语言重写了Unix,形成第三版UNIX。在当时,为了实现最高效率,系统程序都是由汇编语言编写,所以湯普遜和里奇此举是极具大胆创新和革命意义的。用C语言编写的Unix代码简洁紧凑、易移植、易读、易修改,为此后Unix的发展奠定了坚实基础。
发展期
1974年,湯普遜和里奇合作在ACM通信上发表了一篇关于UNIX的文章,这是UNIX第一次出现在贝尔实验室以外。此后UNIX被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。
1975年,UNIX发布了4、5、6三个版本。1978年,已经有大约600台计算机在运行UNIX。1979年,版本7发布,这是最后一个广泛发布的研究型UNIX版本。20世纪80年代相继发布的8、9、10版本只授权给了少数大学。此后这个方向上的研究导致了九号计划的出现,这是一个新的分布式操作系统。
1982年,AT&T基于版本7开发了UNIX System Ⅲ的第一个版本,这是一个商业版本仅供出售。为了解决混乱的UNIX版本情况,AT&T综合了其他大学和公司开发的各种UNIX,开发了UNIX System V Release 1。
这个新的UNIX商业发布版本不再包含源代码,所以加州大学柏克萊分校继续开发BSD UNIX,作为UNIX System III和V的替代选择。BSD对UNIX最重要的贡献之一是TCP/IP。BSD有8个主要的发行版中包含了TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4以及4.4-lite。这些发布版中的TCP/IP代码几乎是现在所有系统中TCP/IP实现的前辈,包括AT&T System V UNIX和Microsoft Windows。
其他一些公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统,有些选择System V作为基础版本,有些则选择了BSD。BSD的一名主要开发者,比尔·乔伊,在BSD基础上开发了SunOS,并最终创办了昇陽公司。
1991年,一群BSD开发者(Donn Seeley、Mike Karels、Bill Jolitz和Trent Hein)离开了加州大学,创办了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常见的Intel平台上提供全功能商业BSD UNIX的厂商。后来Bill Jolitz离开了BSDI,开始了386BSD的工作。386BSD被认为是FreeBSD、OpenBSD和NetBSD、DragonFlyBSD的先辈。
AT&T继续为UNIX System V增加了文件锁定,系统管理,作业控制,流和远程文件系统。1987到1989年,AT&T决定将Xenix(微软开发的一个x86-pc上的UNIX版本),BSD,SunOS和System V融合为System V Release 4(SVR4)。这个新发布版将多种特性融为一体,结束了混乱的竞争局面。
1993年以后,大多数商业UNIX发行商都基于SVR4开发自己的UNIX变体了。
1127部門的解散
根據一項報導指出,當年負責研發UNIX與後續維護工作的貝爾實驗室1127部門已於2005年8月正式宣告解散。肯·湯普遜已退休,現居加州;丹尼斯·里奇調到別的部門;而Douglas McIlroy則在達特茅斯學院擔任教授。
现况
UNIX System V Release 4发布后不久,AT&T就将其所有UNIX权利出售给了Novell。Novell期望以此来对抗微软的Windows NT,但其核心市场受到了严重伤害,1993年Novell将SVR4的商標权利出售给了X/OPEN公司,后者成為定义UNIX标准的機構。1996年,X/OPEN和OSF/1合并,创建了國際開放標準組織,由它公布的「單一UNIX規範」定义着具有什么特徵的作業系統可以冠上UNIX之名,相對地,不符合這些標準但與Unix有類似性的作業系統只能稱為「類Unix」(unix-like)。
UNIX代码著作權则由Novell售給聖克魯茲作業,2001年这家公司的商標與UNIX產品和業務都出售给了Caldera Systems,交易完成后,Caldera又被重命名为SCO Group。
截止到2020年6月,目前除类UNIX系统(BSD、GNU)外,仍有Oracle Solaris,IBM AIX,HP-UX,MINIX等符合标准的UNIX系统[3]。而原System V Unix则随着“1127”部门的解散而停止更新。[4]
文化
UNIX具有独特的技術特點和设计哲学[5]。其设计哲学和美学啓發了許多技术人员,影响了人们的思考方式和看待問題的角度。
UNIX的部分设计原则:
标准
从1980年代开始,POSIX,一个开放的操作系统标准就在制定中,IEEE制定的POSIX标准(ISO/IEC 9945)现在是UNIX系统的基础部分。
自由的类Unix系统
1984年,Richard Stallman发起了GNU项目,目标是创建一个完全自由且向下兼容UNIX的操作系统。这个项目不断发展壮大,包含了越来越多的内容。现在,GNU项目的产品,如Emacs、GCC等已经成为各种其它自由发布的类UNIX系统中的核心角色。
1990年,Linus Torvalds決定編寫一個自己的Minix內核,初名為Linus' Minix,意為Linus的Minix內核,後來改名為Linux。此內核於1991年正式发布,并逐渐引起人们的注意。当时GNU操作系统仍未完成,GNU系统软件集与Linux内核结合后,GNU软件构成了这个POSIX兼容操作系统GNU/Linux的基础。今天GNU/Linux已经成为发展最为活跃的自由/开放源码的類Unix操作系统。
1994年,受到GNU工程的鼓舞,BSD走上了复兴的道路。BSD的开发也走向了几个不同的方向,并最终导致了FreeBSD、NetBSD、OpenBSD和DragonFlyBSD等基于BSD的操作系统的出现。
参考文献
- ^ McIlroy, M. D. A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (技术报告). CSTR. Bell Labs. 1987 [2020-03-09]. 139. (原始内容存档 (PDF)于2017-11-11).
- ^ Ritchie, D. M.; Thompson, K. The UNIX Time-Sharing System (PDF). Communications of the ACM. 1974, 17 (7): 365–375 [2020-03-09]. (原始内容 (PDF)存档于2015-06-11).
- ^ 张春晓. UNIX从入门到精通. 北京: 清华大学出版社. 2013: 4–11. ISBN 9787302307358 (中文).
- ^ 贝尔实验室UNIX开发组正式解散. [2020-06-03]. (原始内容存档于2021-07-28).
- ^ Kernighan, Brian W. Pike, Rob. The UNIX Programming Environment. 1984: viii.