Unix

Unix
Unix System IIIPDP-11模拟器上运行
开发人员 Ken ThompsonDennis RitchieBrian KernighanDouglas McIlroyJoe OssannaBell Labs
写在 C组装语言
OS家庭 Unix
来源模型 从历史上看
初始发行 开发始于1969年
第一本手册于1971年11月在内部出版
1973年10月在贝尔实验室外宣布
可用 英语
内核类型 变化;整体微核杂种
被影响 CTSS多技术
预设
使用者介面
命令行界面图形WaylandX窗口系统Android SurfaceFlingerMacos Quartz
执照 变化;有些版本是专有的,另一些版本是免费/开源软件
官方网站 www .opengroup .org /unix

UnixYoo -Niks ;商标为Unix )是一个多任务多用户计算机操作系统的家族,源自原始AT&T Unix,其开发始于1969年,由Ken ThompsonDennis Ritchie等人在Bell Labs Research Center举行。

最初旨在在贝尔系统内使用, AT&T在1970年代后期获得外部聚会的许可UNIX,从而从加利福尼亚大学,伯克利分校BSD ), MicrosoftXenix ), Sun Microsystems ,包括加利福尼亚大学,伯克利分校(BSD),包括各种学术和商业Unix变体。 ( Sunos / Solaris ), HP / HPEHP-UX )和IBMAIX )。在1990年代初期, AT&T将其在UNIX的权利出售给Novell ,然后将UNIX商标卖给了Open Group ,该集团成立于1996年。公开集团允许使用符合单人的认证操作系统的商标使用标记UNIX规范(SUS)。

Unix的早期版本在PDP-11计算机上运行。

Unix系统的特征是模块化设计,有时被称为“ Unix Philosophy ”。根据这种理念,操作系统应提供一组简单的工具,每个工具都执行有限,定义明确的功能。一个统一和基于inode文件系统以及一种称为“管道的过程间通信机制是通信的主要手段,并且使用了脚本和命令语言( UNIX Shell )来组合执行复杂工作流程的工具。

Unix将自己与前任区分为第一个便携式操作系统:几乎整个操作系统都是用C编程语言编写的,该语言允许Unix在众多平台上运行。

概述

版本7 Unix ,所有现代Unix系统的研究Unix祖先

UNIX最初是为了使程序员在其和其他系统上开发软件,而不是针对非程序员。随着操作系统开始在学术界扩散,当用户将自己的工具添加到系统中并与同事共享时,该系统变得更大。

首先,Unix并非设计为可移植或用于多任务处理。后来,UNIX逐渐获得了及时配置中的可移植性,多任务和多用户功能。 UNIX系统的特征是各种概念:使用纯文本存储数据;分层文件系统;将设备和某些类型的过程间通信(IPC)视为文件;以及使用大量软件工具,可以通过使用管道的命令行解释将小程序串在一起,而不是使用包含所有相同功能的单个单片程序。这些概念共同被称为“ Unix哲学”。 Brian KernighanRob PikeUNIX编程环境中总结了这一点,因为“系统的力量更多来自程序之间的关系而不是程序本身的关系”。

到1980年代初,用户开始将UNIX视为一种潜在的通用操作系统,适用于各种尺寸的计算机。 UNIX环境和客户端 - 服务器计划模型是Internet开发的重要元素,以及以网络而不是单个计算机为中心的计算重塑。

UNIX和C编程语言都是由AT&T开发的,并分发给了政府和学术机构,这两者都比任何其他操作系统都将其移植到更广泛的机器家族中。

UNIX操作系统由许多库和实用程序以及总控制程序内核组成。内核提供服务,以启动和停止程序,处理大多数程序共享的文件系统和其他常见的“低级”任务,并计划访问程序,以避免程序尝试同时访问相同的资源或设备。为了调解此类访问,内核具有特殊权利,反映在用户空间内核空间的区别上,后者是大多数应用程序运行的较低优先领域。

历史

肯·汤普森(Ken Thompson )(坐)和丹尼斯·里奇(Dennis Ritchie)PDP-11一起工作

Unix的起源可以追溯到1960年代中期,当时马萨诸塞州理工学院贝尔实验室通用电气公司正在开发Multics ,这是GE-645大型机组计算机的时间共享操作系统。多技术具有几项创新,但也带来了严重的问题。贝尔实验室的个人研究人员因其目标的规模和复杂性而感到沮丧,但并非受到目标的目标,因此开始退出该项目。最后一个是肯·汤普森(Ken Thompson)丹尼斯·里奇(Dennis Ritchie)道格拉斯·麦克罗伊(Douglas McIlroy )和乔·奥萨娜(Joe Ossanna) ,他们决定在一个较小规模的新项目中重新实现自己的经验。这个新的操作系统最初是没有组织支持的,也没有名称。

新的操作系统是一个单任务系统。 1970年,该小组为单面信息和计算服务创造了Unics名称,作为对多元技术双关语,该名称代表了多重信息和计算机服务Brian Kernighan赞扬了这个想法,但补充说,“没人能记住”最终拼写Unix的起源。丹尼斯·里奇(Dennis Ritchie),道格·麦克罗伊(Doug McIlroy)和彼得·诺伊曼(Peter G.

该操作系统最初是用汇编语言编写的,但在1973年,版本4 Unix在c中重写。但是,第4版UNIX仍然具有很多PDP-11特定代码,并且不适合移植。另一个平台的第一个港口是第6版的港口,四年后(1977年)在沃隆甘大学(University of Wollongong )的Interdata 7/32 ,随后是1977年Interdata 8/32的Bell Labs港口,以及1978年。

贝尔实验室生产了几个版本的UNIX,这些版本共同称为研究Unix 。 1975年, UNIX的第一个来源许可证出售给了伊利诺伊大学Urbana – Champaign计算机科学系(UIUC)的Donald B. Gillies

在1970年代末和1980年代初,Unix在学术界的影响导致商业初创公司大规模采用Unix( BSDSystem V ),这又导致Unix分散成多个,相似的,但通常是相似的,但通常是相互的不兼容 - 包括DynixHP-UXSunos / SolarisAIXXenix在内的系统。在1980年代后期, AT&T Unix系统实验室Sun Microsystems开发了System V版本4( SVR4 ),随后由许多商业Unix供应商采用。

在1990年代,UNIX和UNIX型系统越来越受欢迎,并成为全球最佳500个最快的超级计算机中90%以上的首选操作系统,因为BSDLinux发行版是通过全球程序员网络通过协作而开发的。 2000年,苹果公司发行了Darwin ,这也是UNIX系统,该系统成为Mac OS X操作系统的核心,后来更名为MacOS

UNIX样操作系统被广泛用于现代服务器工作站移动设备中。

标准

Common Desktop环境(CDE), Cose倡议的一部分

在1980年代后期,现在称为POSIX的开放操作系统标准化工作为所有操作系统提供了共同的基准。基于IEEE的POSIX围绕UNIX系统的主要竞争变体的共同结构,在1988年发布了第一个POSIX标准。在1990年代初期,由一个共同的开放软件环境(Cose)开始了一个单独但非常相似的努力)倡议,最终成为开放组管理的单个UNIX规范(SUS)。从1998年开始,Open Group和IEEE启动了Austin Group ,以提供POSIX和单个UNIX规范的共同定义,到2008年,该规范已成为开放的组基本规范。

1999年,为了兼容兼容性,几家UNIX系统供应商同意SVR4的可执行且可连接的格式(ELF)作为二进制和对象代码文件的标准。通用格式允许在同一CPU体系结构上运行的不同UNIX系统之间实质性的二进制兼容性。

创建了文件系统层次结构标准,以提供类似于Unix的操作系统的参考目录布局;它主要用于Linux。

成分

UNIX系统由最初包装在一起的几个组件组成。通过包括开发环境,库,文档和所有这些组件的便携式,可修改的源代码,除了操作系统的内核之外,Unix还是一个独立的软件系统。这是它作为重要的教学和学习工具出现的关键原因之一,并且具有广泛的影响力。

这些组件的包含并没有使系统大 - 原始的V7 Unix分布,由所有编译的二进制文件的副本以及所有源代码和文档占用少于10 MB,并在单个Track磁带上到达,赢得其作为便携式系统的声誉。印刷文档(来自在线资源的排版)包含在两卷中。

在整个系统历史记录中,UNIX组件的名称和文件系统位置发生了很大变化。但是,许多人认为V7实施具有规范的早期结构:

  • 内核- /usr /sys中的源代码,由几个子组件组成:
    • conf - 配置和机器依赖性零件,包括引导代码
    • 开发人员- 用于控制硬件的设备驱动程序(以及一些伪硬件)
    • 系统- 操作系统“内核”,处理内存管理,过程调度,系统呼叫等。
    • H - 标题文件,定义系统内的关键结构以及重要的系统特定不变
  • 开发环境- UNIX的早期版本包含一个足以从源代码重新创建整个系统的开发环境:
    • ED - 文本编辑器,用于创建源代码文件
    • CC - C语言编译器(首次出现在V3 Unix中)
    • AS - 机器的机器汇编器
    • LD -链接器,用于组合对象文件
    • LIB - 对象代码库(安装在 /lib或 /usr /lib中)。 LIBC是具有C运行时间支持的系统库,是主要库,但是诸如数学函数( LIBM )或数据库访问之类的内容始终还有其他库。 V7 UNIX引入了现代“标准I/O”库的第一个版本,作为系统库的一部分。后来的实施大大增加了图书馆的数量。
    • 制造- 构建经理(在PWB/UNIX中引入),以有效地自动化构建过程
    • 包括- 用于软件开发的标题文件,定义标准接口和系统不变性
    • 其他语言- v7 Unix包含Fortran-77编译器,可编程的任意计算器( BCDC )和Awk脚本语言;以后的版本和实现包含许多其他语言编译器和工具集。早期的BSD版本包括Pascal工具,许多现代的Unix系统还包括GNU编译器收集以及或代替专有编译器系统。
    • 其他工具- 包括对象代码档案管理器( AR ),符号表李斯特( NM ),编译器开发工具(例如LEXYACC )和调试工具。
  • 命令- UNIX在系统操作和维护(例如CRON ),通用实用程序(例如GREP )的命令(用户级程序)之间几乎没有区别,以及更多通用的应用程序,例如文本格式格式和排便程序包。但是,一些主要类别是:
    • SH - “ shell”可编程命令行解释器,窗口系统出现之前的UNIX上的主要用户界面,即使之后(在“命令窗口”中)。
    • 实用程序- UNIX命令集的核心工具包,包括CPLSGREPFIND等。子类别包括:
      • 系统实用程序- MKFSFSCK等管理工具。
      • 用户公用事业- 环境管理工具,例如PassWDKill等。
    • 文档格式- 从一开始就使用了UNIX系统,用于文档准备和排版系统,并包括许多相关程序,例如NROFFTroffTBLEQNCosePIC 。一些现代的Unix系统还包括TexGhostscript等软件包。
    • 图形-绘图子系统提供了以独立于设备的格式生产简单矢量图的设施,并带有特定于设备的解释器来显示此类文件。现代Unix系统通常还包括X11作为标准窗口系统和GUI ,许多支持OpenGL
    • 通信- 早期的UNIX系统不包含系统间的通信,但确实包含了用户间通信程序邮件写入。 V7引入了早期系统间通信系统UUCP ,并以BSD版本4.1C开头的系统包括TCP/IP实用程序。
  • 文档- UNIX是最早以机器可读形式在线包含其所有文档的操作系统之一。文档包括:
    • - 每个命令,库组件,系统呼叫,标头文件等的手册页面。
    • 文档- 详细详细介绍主要子系统的更长文档,例如C语言和Troff

影响

研究Unix的主要开发商Ken ThompsonDennis Ritchie
1984年Usenix的照片,包括Dennis Ritchie (中心)

UNIX系统对其他操作系统产生了重大影响。它通过交互性,通过廉价的硬件运行以及易于适应和移动到不同的机器来提供该软件,从而通过其交互性来实现其声誉。 Unix最初是用汇编语言编写的,但很快就用C (一种高级编程语言C)重写。尽管这遵循了CTSSMulticsBurroughs MCP的领导,但正是Unix推广了这个想法。

与许多当代操作系统相比,UNIX具有大幅简化的文件模型:将各种文件视为简单的字节数组。文件系统层次结构包含机器服务和设备(例如打印机终端磁盘驱动器),提供均匀的界面,但以偶尔需要其他机制(例如ioctl和模式标志)来访问硬件的功能,以付出额外适合简单的“字节流”模型。计划9操作系统进一步推动了该模型,并消除了对其他机制的需求。

Unix还使用任意嵌套的子目录(最初由Multics介绍的任意嵌套的子目录)普及了分层文件系统。该时代的其他常见操作系统还可以将存储设备分为多个目录或部分,但是它们具有固定数量的级别,通常只有一个级别。几个主要的专有操作系统最终添加了递归的子目录功能,也以多技术为图案。 DEC的RSX-11M的“组,用户”层次结构演变为OpenVMS目录, CP/M的量演变为MS-DOS 2.0+子目录,以及HP的MPE组。计算层次结构和IBM的SSPOS/400库系统被折叠进入更广泛的POSIX文件系统。

使命令解释器成为普通的用户级程序,并提供其他命令作为单独的程序,是UNIX普及的另一种多功能创新。 Unix Shell使用与脚本相同的语言进行交互式命令( Shell Scripts - 没有像IBM的JCL这样的单独的作业控制语言)。由于Shell和OS命令是“只是另一个程序”,因此用户可以选择(甚至写)自己的外壳。可以在不更改外壳本身的情况下添加新命令。 UNIX的创新命令行语法,用于创建生产者 - 消费者流程( Pipelines )的模块化链,使一个强大的编程范式( Coroutines )广泛可用。许多后来的命令行解释者受到UNIX Shell的启发。

UNIX的基本简化假设是其关注Newline的关注 - 几乎所有文件格式的划界文本。 UNIX的原始版本中没有“二进制”编辑器 - 整个系统是使用Textual Shell命令脚本配置的。 I/O系统中的共同点是字节 - 与“基于记录”的文件系统不同。重点是表示几乎所有使Unix管道的所有内容都特别有用的文本,并鼓励开发简单的一般工具,这些工具可以轻松地组合起来,以执行更复杂的临时任务。对文本和字节的关注使系统比其他系统更可扩展和便携。随着时间的流逝,基于文本的应用程序在应用领域(例如打印语言( PostScriptODF ))以及Internet协议的应用层,例如,例如FTP ,FTP, SMTPHTTPSOAPSIP

Unix为正式表达式提供了一种语法,这些语法发现了广泛使用。 UNIX编程接口成为广泛实现的操作系统界面标准的基础(POSIX,请参见上文)。 C编程语言很快就会超越UNIX,现在在系统和应用程序编程中无处不在。

早期的UNIX开发人员对于将模块化可重复使用的概念带入软件工程实践,产生“软件工具”运动很重要。随着时间的流逝,UNIX的领先开发商(以及在其上运行的程序)建立了一套用于开发软件的文化规范,这些规范与Unix本身一样重要和有影响力;这被称为Unix哲学

TCP/IP网络协议迅速在相对便宜的计算机上广泛使用的UNIX版本上实施,这有助于全球,实时连接的Internet爆炸,并为在许多其他平台上实现构成了基础。

UNIX广泛的在线文档和(多年来)准备访问所有系统源代码的程序员期望的政策,并在1983年启动了自由软件运动

免费的Unix和类似Unix的变体

Debian (顶部,流行的Linux发行版)和FreeBSD的控制台屏幕截图(底部,流行的Unix式操作系统)

1983年,理查德·史塔曼(Richard Stallman)宣布了GNU (“ GNU的Not Unix”项目缩写)项目,这是为创建一个免费软件Unix式系统的雄心勃勃的努力- “免费”,因为每个收到副本的人都可以免费使用,免费使用,研究,修改和重新分配它。 GNU项目自己的内核开发项目GNU Hurd尚未生产出工作的内核,但在1991年, Linus TorvaldsGNU通用公共许可证下发布了Linus内核作为免费软件。除了它们在GNU操作系统中的使用外,许多GNU软件包(例如GNU编译器藏品(以及其余的GNU工具链), GNU C库GNU Core Core Utilities - 都继续在其他中扮演中心角色免费的UNIX系统。

Linux发行版由Linux内核和大量兼容软件组成,既在个人用户和业务中都广受欢迎。流行的分布包括Red Hat Enterprise LinuxFedoraSuse Linux EnterpriseOpensuseDebianUbuntuLinux MintOpenMandrivaSlackware LinuxArch LinuxGentoo

BSD Unix( 386BSD )的免费衍生品已于1992年发布,并导致了NetBSDFreeBSD项目。随着1994年针对加利福尼亚大学和伯克利大学软件设计公司( USL诉BSDI )提起的诉讼,由Unix System Laboratories提起诉讼,据澄清,如果需要,伯克利有权免费分发BSD Unix。从那时起,BSD Unix已在几个不同的产品分支中开发,包括OpenBSDDraginfly BSD

Linux和BSD Unix越来越多地满足了专有UNIX操作系统传统上满足的市场需求,并扩展到消费者台式机,移动设备和嵌入式设备等新市场。由于UNIX模型的模块化设计,共享组件相对常见:大多数或所有类似UNIX的系统至少包含一些BSD代码,而有些系统则包括GNU实用程序。

在1999年的一次采访中,丹尼斯·里奇(Dennis Ritchie)表达了他的观点,即Linux和BSD Unix操作系统是UNIX设计基础的延续,并且是Unix的衍生产品:

我认为Linux现象非常令人愉悦,因为它在Unix提供的基础上如此强烈。 Linux似乎是Direct Unix衍生产品中最健康的衍生产品之一,尽管还有各种BSD系统以及工作站和大型机制造商的官方产品。

在同一次采访中,他指出,他将Unix和Linux视为“肯和我以及其他许多人在很多年前开始的想法的延续”。

OpenSolarisSun Microsystems开发的Solaris自由软件,其中包括CDDL确定的内核和主要是GNU Userland。但是, Oracle在收购Sun时停止了该项目,这促使一群前太阳雇员和OpenSolaris社区成员将Opensolaris送入Illumos内核。截至2014年,Illumos仍然是唯一活跃的开源系统V衍生产品。

Arpanet

1975年5月,RFC 681描述了伊利诺伊大学Urbana-Champaign高级计算中心的Network Unix的开发。据说Unix系统“作为Arpanet Mini-Host提出了一些有趣的功能”。当时,UNIX需要贝尔电话实验室的许可证,该许可费用为非大学机构,而大学可以以150美元的名义费用获得许可证。据指出,贝尔对范围内的ARPANET许可证“向建议开放”。

RFC专门提到UNIX“在用户程序,几个编译器,基于QED的编辑器,多功能文档准备系统以及具有复杂访问控制的高效文件系统的情况下提供了功能强大的本地处理设施。以及将外围设备作为特殊文件的统一处理。”后者允许将网络控制程序(NCP)集成到UNIX文件系统中,将网络连接视为可以通过标准UNIX I/O调用访问的特殊文件,其中包括关闭程序退出中所有连接的额外好处,用户应该忽略这样做。为了“为了“最大程度地减少添加到基本Unix内核的代码量”,NCP代码的大部分在可交换的用户过程中运行,仅在需要时运行。

品牌

数字设备公司的促销车牌,实际车牌由乔恩·霍尔(Jon Hall)使用
HP 9000运行HP-UX的工作站,经认证的UNIX操作系统

1993年10月, Novell是当时拥有Unix System V来源权利的公司,将UNIX的商标转移到X/Open Company(现为开放集团),并于1995年将相关业务卖给了圣诞老人克鲁兹操作(SCO )。 Novell是否还将版权卖给了实际软件,这是2006年联邦诉讼的主题,Novell赢得的SCO诉NOVELL 。该案已上诉,但在2011年8月30日,美国第十巡回上诉法院确认了审判裁决,结束了该案。 Unix供应商SCO Group Inc.指责Novell诽谤冠军

商标Unix的现任所有者是开放集团,一个行业标准财团。只有完全符合单个UNIX规范的系统才有资格为“ Unix”(其他系统称为“ Unix-like ”)。

按照开放组的法令,“ UNIX”一词更多地指的是操作系统的一类,而不是操作系统的特定实现。在操作系统的供应商向开放集团支付大量认证费和年度商标特许权使用费之后,符合公开集团单一规格的那些符合公开集团单一规范的操作系统应能够承担UNIX 98UNIX 03商标。已获得许可使用UNIX商标的系统包括AIXEULEROSHP-UXINSSUR K-UXIRIXMACOS ,SOLARIS, SOLARISTRU64 UNIX (以前为“ Digital Unix”或OSF/1 )和Z/OS 。值得注意的是,Euleros和Inser K-UX是Linux发行版,被认证为UNIX 03符合条件。

有时,诸如Un *x*nix*n?x之类的表示形式用于指示类似于Unix的所有操作系统。这来自许多公用事业中的星号( * )和问号字符作为通配符指标。该符号还用于描述其他类似于Unix的系统,这些系统尚未满足开放组的Unix品牌要求。

开放组要求UNIX始终用作形容词,然后使用通用术语(例如系统) ,以帮助避免创建通用商标

Unix是原始格式,但是UNIX的使用仍然很普遍,因为它曾经是小帽子UNIX )的排版。根据丹尼斯·里奇(Dennis Ritchie)的说法,在美国计算机机械协会(ACM)的第三次操作系统研讨会上展示原始的Unix纸时,“我们刚刚发明了一个新的排字和Troff帽子”。许多操作系统的前辈和同时代人都使用了全义书,因此许多人在习惯上为上案写下了这个名字。这不是首字母缩写。

商标名称可以由不同国家 /地区的不同实体注册,某些国家 /地区的商标法可以允许同一商标名称由两个不同实体控制,如果每个实体在易于区分的类别中使用该商标。结果是Unix已被用作各种产品的品牌名称,包括书架,墨水笔,瓶装胶,尿布,发液液和食品容器。

几种复数形式的UNIX被随便地指代多个品牌的UNIX和类似Unix的系统。最常见的是传统的Unixes ,但是将Unix视为第三个变化拉丁名词,也很受欢迎。伪撒克逊人的复数形式Unixen并不常见,尽管偶尔会看到。 Solaris变体的开发人员Sun Microsystems断言, Unix术语本身是复数,指的是其许多实现。

也可以看看