词条 | unix |
释义 | UNIX ,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、DennisRitchie和DouglasMcIlroy于1969年在AT&T的贝尔实验室开发。 简介UNIX操作系统,是美国AT&T公司于1971年在PDP-11上运行的操作系统。具有多用户、多任务的特点,支持多种处理器架构,最早由肯·汤普逊(Kenneth Lane Thompson)、丹尼斯·里奇(Dennis MacAlistair Ritchie)和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。 目前它的商标权由国际开放标准组织(The Open Group)所拥有。 历史起源上世纪六十年代时,大部分计算机都是采用批处理(Batch Processing)的方式(也就是说,当作业积累一定数量的时候,计算机才会进行处理)。那时,我们熟知的美国电话及电报公司(American Telephone and Telegraph Inc.;AT&T)、通用电器公司(General Electrics;G.E.)及麻省理工学院(Massachusetts Institute of Technology;MIT)计划合作开发一个多用途(General-Purpose)、分时(Time-Sharing)及多用户(Multi-User)的操作系统,也就是这个MULTICS,其被设计运行在GE-645大型主机上。不过,这个项目由于太过复杂,整个目标过于庞大,糅合了太多的特性,进展太慢,几年下来都没有任何成果,而且性能都很低。于是到了1969年2月,贝尔实验室(Bell Labs)决定退出这个项目。 贝尔实验室中的有个叫Ken Thompson的人,他为MULTICS这个操作系统写了个叫“Space Travel”的游戏,在MULTICS上经过实际运行后,他发现游戏速度很慢而且耗费昂贵 —— 每次运行会花费75美元。退出这个项目以后。他为了让这个游戏能玩,所以他找来Dennis Ritchie为这个游戏开发一个极其简单的操作系统。这就是后来的Unix。(值得一提的是,当时他们本想在DEC-10上写,后来没有申请到,只好在实验室的墙角边找了一台被人遗弃的Digital PDP-7的迷你计算机进行他们的计划,这台计算机上连个操作系统都没有,于是他们用汇编语言仅一个月的时间就开发了一个操作系统的原型)他们的同事Brian Kernighan非常不喜欢这个系统,嘲笑Ken Thompson说:“你写的系统真差劲,干脆叫Unics算了。”Unics的名字就是相对于MULTICS的一种戏称,后来改成了Unix。 流行1971年,Ken Thompson写了充分长篇的申请报告,申请到了一台PDP-11/24的机器。于是Unix第一版出来了。在一台PDP-11/24的机器上完成。这台电脑只有24KB的物理内存和500K磁盘空间。Unix占用了12KB的内存,剩下的一半内存可以支持两用户进行Space Travel的游戏。而著名的fork()系统调用也就是在这时出现的。 到了1973年的时候,Ken Thompson 与Dennis Ritchie感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版,对于当时完全以汇编语言来开发程序的年代,他们的想法算是相当的疯狂。一开始他们想尝试用Fortran,可是失败了。后来他们用一个叫BCPL(Basic Combined Programming Language)的语言开发,他们整合了BCPL形成B语言,后来Dennis Ritchie觉得B语言还是不能满足要求,于是就改良了B语言,这就是今天的大名鼎鼎的C语言。于是,Ken Thompson 与Dennis Ritchie成功地用C语言重写了Unix的第三版内核。至此,Unix这个操作系统修改、移植相当便利,为Unix日后的普及打下了坚实的基础。而Unix和C完美地结合成为一个统一体,C与Unix很快成为世界的主导。 Unix的第一篇文章 “The UNIX Time Sharing System”由Ken Thompson和Dennis Ritchie于1974年7月的 the Communications of the ACM发表。这是UNIX与外界的首次接触。结果引起了学术界的广泛兴趣并对其源码索取,所以,Unix第五版就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。各大学公司开始通过Unix源码对Unix进行了各种各样的改进和扩展。于是,Unix开始广泛流行。 分裂1978年,对 Unix而言是革命性的一年;因为学术界的老大柏克利大学 (UC Berkeley),推出了一份以第六版为基础,加上一些改进和新功能而成的 Unix。这就是著名的“1 BSD(1st Berkeley Software Distribution)”,开创了Unix的另一个分支:BSD 系列。同时期,AT&T成立USG(Unix Support Group),将 Unix变成商业化的产品。从此,BSD的 Unix 便和AT&T 的Unix 分庭抗礼,Unix就分为System IV和4.x BSD这两大主流,各自蓬勃发展。 1979年发布的Unix 第七版被称为是“最后一个真正的Unix”,这个版本的Unix内核只有40K bytes。后来这个版本被移植到VAX机上。20世纪80年代相继发布的8、9、10版本只授权给了少数大学。 1982年,AT&T基于版本7开发了UNIX System Ⅲ的第一个版本,这是一个商业版本仅供出售。为了解决混乱的UNIX版本情况,AT&T综合了其他大学和公司开发的各种UNIX,开发了UNIX System V Release 1。这个新的UNIX商业发布版本不再包含源代码,所以加州大学Berkeley分校继续开发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中的TCP/IP都参照了BSD的源码。 同时,其他一些公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统,有些选择System V作为基础版本,有些则选择了BSD。BSD的一名主要开发者,Bill Joy,在BSD基础上开发了SunOS,并最终创办了Sun Microsystems。 纠纷Berkeley Software Design,Inc(BSDI)很快就与AT&T的UNIX Systems Laboratories(USL)附属公司产生了法律纠纷,USL是AT&T注册的公司。AT&T为了拥有System V版权,以及Unix商标,为了垄断Unix,1992年,USL正式对BSDI提起诉讼,说BSD剽窃他的源码。而最终了结了好评如潮的BSD系统。 由于最后判决悬而未决,这桩法律诉讼将BSD后裔的开发,特别是自由软件,延迟了两年,这导致没有法律问题的Linux内核获得了极大的支持。Linux跟386BSD的开发几乎同时起步,Linus说,当时如果有自由的基于386的Unix-like操作系统,他就可能不会创造Linux。尽管无法预料这给以后的软件业究竟造成了什么样的影响,但有一点可以肯定,Linux更加丰富了这块土壤。 这场官司一直打到 AT&T将自己的Unix系统实验室卖掉,新接手的Novell公司采取了一种比较开明的做法,允许BSDI自由发布自己的BSD,但是前提是必须将来自于AT&T的代码完全删除,于是诞生了4.4 BSD Lite版,由于这个版本不存在法律问题,4.4BSD Lite成为了现代BSD系统的基础版本。 这桩诉讼最终在1994年1月了结,更多地满足了BSDI的利益。伯克利套件的18,000个文件中,只有3个文件要求删除,另有70个文件要求修改,并显示USL的版权说明。这项调解另外要求,USL不得对4.4BSD提起诉讼,不管是用户还是BSDI代码的分发者。于是,BSD Unix走上了复兴的道路。BSD的开发也走向了几个不同的方向,并最终导致了FreeBSD、OpenBSD和NetBSD的出现。 从AT&T意识到了Unix的商业价值,不再将Unix源码授权给学术机构以来,到以后的几十年,Unix仍在不断变化,其版权所有者不断变更,授权者的数量也在增加。Unix的版权曾经为AT&T所有,之后Novell拥有了Unix,再之后Novell又将版权出售给了SCO(这一事实双方尚存在争议)。有很多大公司在取得了Unix的授权之后,开发了自己的Unix产品。 由于Unix是由C语言写的,所以修改和移植都很容易,因此,很多商业公司及学术机构均加入这个操作系统的研发,各个不同版本的Unix也开始蓬勃发展。这才产生了今天这么多的各式各样的Unix衍生产品。如AIX、Solaris、HP-UX、IRIX、OSF、Ultrix等等。 开源AT&T的这种商业态度,让当时许许多的Unix的爱好者和软件开发者们感到相当的痛心和忧虑,他们认为商业化的种种限制并不利于产生的发展,相反还能导制产品出现诸多的问题。随着商业化Unix的版本的种种限制和诸多问题,引起了大众的不满和反对。于是,大家开始有组织地结成“反叛联盟”以此对抗欺行罢市的AT&T等商业化行为。 另一方面,关于“大教堂”(集权、封闭、受控、保密)和“集市”(分权、公开、精细的同僚复审)两种开发模式的对比成为了新思潮的中心思想。这个新思潮对IT业产生了非常深远影响。为整个计算机世界带来了革命性的价值观。 此时,一个名叫Richard Stallman的领袖出现了,他认为Unix是一个相当好的操作系统,如果大家都能够将自己所学贡献出来,那么这个系统将会更加的优异!他倡导的Open Source的概念,就是针对Unix这一事实反对实验室里的产品商业化私有化。尽管Stallman既不是、也从来没有成为一个Unix程序员,但在后1980的大环境下,实现一个仿Unix操作系统成了他追求的明确战略目标。Richard Stallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他们对代码共享的使命感甚至比那些有更多Unix背景的人强烈。 为了这个理想,Richard Stallman于1984年创业了GNU,计划开发一套与Unix相互兼容的的软件。1985 年 Richard Stallman 又创立了自由软件基金会(Free Software Foundation)来为 GNU 计划提供技术、法律以及财政支持。尽管 GNU 计划大部分时候是由个人自愿无偿贡献,但 FSF 有时还是会聘请程序员帮助编写。当 GNU 计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被 Red Hat 兼并的 Cygnus Solutions。 GNU组织的建立,延续了当年Unix刚出现时的情形,并为这种情形建立了可靠的法律和财务保障。GNU 工程十几年以来,已经成为一个对软件开发主要的影响力量, 创造了无数的重要的工具。例如:强健的编译器,有力的文本编辑器,甚至一个全功能的操作系统。从那时开始,许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件,让这使得Unix社区生机勃勃,一派繁荣景象。 自90年代发起这个计划以来,GNU 开始大量的产生或收集各种系统所必备的组件,像是——函数库(libraries)、编译器(compilers)、调试工具(debugs)、文本编辑器(text editors)、网站服务器(web server),以及一个Unix的使用者接口(Unix shell)等等,等等。但由于种种原因,GNU一直没有开发操作系统的kernel。正当Richard Stallman在为操作系统内核伤脑筋的时候,Linux出现了。 操作对于一个典型的计算机系统包括硬件、系统软件和应用软件这三部分。操作系统则是控制和协调计算机行为的系统软件。当然UNIX操作系统也是一个程序的集合,其中包括文本编辑器、编译器和其他系统程序。 下面我们就来认识一下这个分层结构: 内核:在UNIX中,也被称为基本操作系统,负责管理所有与硬件相关的功能。这些功能由UNIX内核中的各个模块实现。其中包括直接控制硬件的各模块,这也是系统中最重要的部分,用户当然也不能直接访问内核的。 常驻模块层:常驻模块层提供了执行我们请示的服务例程。它提供的服务包括输入/输出控制服务、文件/磁盘访问服务以及进程创建和中止服务。我们的程序通过系统调用来访问常驻模块层。 工具层:是UNIX的用户接口,就是常用的shell。它和其他UNIX命令和工具一样都单独的程序,是UNIX系统软件的组成部分,但不是内核的组成部分。 虚拟计算机:是向系统中的每个用户指定一个执行环境。这个环境包括一个与用户进行交流的终端和共享的其他计算机资源,如最重要的CPU。如果是多用户的操作系统,UNIX视为一个虚拟计算机的集合。而对每一个用户都有一个自己的专用虚拟计算机。但是由于CPU和其他硬件是共享的,虚拟计算机比真实的计算机速度要慢一些。 进程:UNIX通过进程向用户和程序分配资源。每个进程都有一个作为进程标识的整数和一组相关的资源。当然它也可以在虚拟计算机环境中执行。 家谱Unix成长为一个非私有的操作系统,是因为1956年的AT&T公司受命于联邦去经营电报电话服务。当然也可以开发软件,甚至那个软件可以有”合理”收费的许可证,但是这个公司却被禁止从事任何和计算机有关的商业活动。 Unix,在开发的过程中,没有任何的奖励制度和管理,从一开始在AT&T公司出现时,其是一种近似于好奇或兴趣的东西。 然而,20世纪70年代,AT&T公司开始注意到Unix所带来的商业价值。公司的律师开始寻找一些手段来保护Unix,并让其成为一种商业机秘。从1979年Unix的版本V7开始,Unix的许可证开始禁止大学使用Unix的源码,包括在授课中学习。 没问题!一个荷兰阿姆斯特朗Vrije大学使用版本V6的计算机科学系的教授Andrew Tanenbaum说。在1987年,他为教学目的克隆了一个Unix,创建一个叫Minix的开源的操作系统,并可以在80286的Intel芯片上运行。 “Minix使用了所有和Unix一样的想法,并且这是一个非常灿烂的事物”,Salus说,”只有一个专门是程序员的并且非常了解操作系统内部的人才成干出这件事来”。Minix从此变成了另一个起点–Linus Torvalids 在1991年使用Minix创造了Linux –这并不是一个简单的Unix克隆版本,只不过它长得像Unix。 让我们再回到Linux出现的十年以前,Bill Joy,毕业于加利福尼亚州大学伯克利分校,当年,他在学校的时候拷贝了Bell 实验室的Unix版本,并且发现了这是一个很不错的可以使用Pascal编译器和文本编译器的操作系统平台。 于是,他更改变扩展了Unix,形成了Unix的第二个最主要的分枝–BSD(Berkeley Software Distribution)Unix。在1978年3月,Joy卖出了第一个BSD的拷贝:50美金。 到了1980年,有两个最主要的Unix的版本线,一个是Berkeley的BSD,另一个是AT&T的Unix,在这个时候,很显然,竞争最终引发了Unix的战争。在这场战争中,好的是,软件开发人员还是能够得到Unix的源码并对其按照自己的需要和兴致进行裁剪。而不好的是,Unix开始一发不可收拾地开发不停地出现各种各样的变种。 1982年,Joy创建了Sun Microsystems公司并提供了工作站–Sun-1,运行在当时的一个BSD的版本,叫SunOS(Solaris以之后的十年出现)。而AT&T则在随后的几年中发布了Unix System V的第一版,一个具有强大影响力的操作系统,最终造就了IBM的AIX和HP的HP-UX。 三大派生版本System V主要有A/UX,AIX,HP-UX,IRIX,LynxOS,SCOOpenServer,Tru64,Xenix。 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为主要的代码基础,但却从未公开发表过,不过无从证实此版本是否真存在过。 AIX(Advanced Interactive eXecutive)是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风格操作系统中。 Solaris是SUN公司研制的类Unix操作系统。目前最新版为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 V 4, 并且有了新的名字叫做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屏蔽了底层平台差异,为用户提供了尽可能一样的使用体验。 HP-UX(取自Hewlett Packard UniX)是惠普科技公司(HP,Hewlett-Packard)以SystemV为基础所研发成的类UNIX操作系统。HP-UX可以在HP的PA-RISC处理器、Intel的Itanium处理器的电脑上运行,另外过去也能用于后期的阿波罗电脑(Apollo/Domain)系统上。较早版本的HP-UX也能用于HP 9000系列200型、300型、400型的电脑系统(使用Motorola的68000处理器)上,和HP-9000系列500型电脑(使用HP专属的FOCUS处理器架构)。 IRIX是由硅谷图形公司(Silicon GraphicsInc.,一般用简称:SGI)以System V与BSD延伸程序为基础所发展成的UNIX操作系统,IRIX可以在SGI公司的RISC型电脑上运行,即是采行32位、64位MIPS架构的SGI工作站、服务器。 Xenix是一种UNIX操作系统,可在个人电脑及微型计算机上使用。该系统由微软公司在1979年从美国电话电报公司获得授权,为Intel处理器所开发。后来,SCO公司收购了其独家使用权,自那以后,该公司开始以SCO UNIX(亦被称作SCO OpenServer)为名发售。值得一提的是,它还能在DECPDP-11或是Apple Lisa电脑运行。它继承了UNIX的特性,Xenix具备了多人多任务的工作环境,符合UNIX System V的接口规格 (SVID)。 Berkley主要有386BSD,DragonFly BSD,FreeBSD,NetBSD,NEXTSTEP,Mac OS X,OpenBSD,Solaris,(OpenSolaris,OpenIndiana) 不同的BSD操作系统针对不同的用途及用户,可应用于多种硬件构架。在政府机构中常能看到BSD的身影。虽然下面的BSD功能可能并非独有,但每种BSD在各自的领域,都逐渐具有了良好声誉,有的专注于性能,有的则以安全见长。 FreeBSD是一种类UNIX操作系统,但不是真正意义上的UNIX操作系统,它是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支,它支持 x86 兼容(包括 Pentium; 和Athlon(TM))、amd64 兼容(包括 Opteron(TM)、Athlon 64 和 EM64T)、 Alpha/AXP、IA-64、PC-98以及 UltraSPARC® 架构的计算机。它运行在Intelx86 family兼容处理器、DEC Alpha、Sun微系统的UltraSPARC、Itanium(IA-64)和AMD64处理器上。针对PowerPC的支持正在开发中。它被普遍认为是相当可靠和稳定的。苹果电脑的Mac OSX即以 Mach 为内核, 配合 FreeBSD 的驱动程序和实用工具为基础。FreeBSD 源于 BSD ──美国加州大学伯克利分校开发 UNIX® 版本它由来自世界各地的志愿者开发和维护.FreeBSD 为不同架构的计算机系统提供了不同程度的支持. FreeBSD是以一个完善的操作系统的定位来做开发。其内核、驱动程序以及所有的用户层(Userland)应用程序(比方说是Shell)均由同一源代码版本控制系统保存(目前使用Subversion并与CVS兼容)。相较于另一知名的的操作系统Linux,其内核为一组开发人员设计,而用户应用程序则交由他人开发(例如GNU计划),最后再由其他团体集成并包装成Linux包。 FreeBSD默认是无桌面环境的命令行界面,想要使用桌面环境必须自行安装,或是使用PC-BSD之类的桌面发行版。 NetBSD 是一份免费,安全的具有高度可定制性的类Unix操作系统,适于多种平台,从64位AMDAthlon服务器和桌面系统到手持设备和嵌入式设备。它设计简洁,代码规范,拥有众多先进特性,使得它在业界和学术界广受好评,用户可以通过完整的源代码获得支持。许多程序都可以很容易地通过NetBSD Packages Collection获得。可以在许 多平台上执行,从 64bit alpha 服务器到掌上型的设备。由于简洁的设计 和先进的特征,使得它在生产和研究方面,都有卓越的表现,而且它也有受 使用者支持的完整的原始码。许多应用程序也是易于移植的。 OpenBSD是一个从NetBSD衍生出来的类Unix操作系统。专案领导人希欧·德若特(Theo De Raadt)在1995年发起了OpenBSD专案,希望创造一个注重安全的操作系统,此外OpenBSD也以高品质的文件、坚持开放程式码以及严格的软体授权著名。OpenBSD的吉祥物是刺豚。 OpenBSD包含了一些在其他操作系统缺少或是选择性的安全功能,此外OpenBSD极度重视程式码的品质,任何对核心的修改都需要经过严格的审查。OpenBSD可以在17种不同的硬体环境下运作,包含DEC Alpha、Intel i386、Hewlett-Packard PA-RISC、AMD64、Motorola 68000、PowerPC、Sun SPARC等。 OpenBSD在密码学和安全方面特别出众,可移植性也很好,当然略逊于NetBSD。安全功能如OpenSSH,是由OpenBSD率先开创的。OpenBSD作为安全请求机器(security demanding machines)运行,受到好评。 DragonFly是一个以与 FreeBSD 采用的实现方式不同的方式来实现并发、SMP、集群以及其他操作系统特性的 BSD 分支。 DragonFly BSD 是一套开放源代码的类Unix操作系统,自FreeBSD 4.8分支。 由于FreeBSD开发组将于FreeBSD 4.11后不再推出新的4系列版本(仅做安全性更新),而新的FreeBSD 5系列初期又有效能及稳定性等等的质疑,因此Matt Dillon在2003年六月另外成立分支计划,并于同年七月时于FreeBSD的邮件讨论组群上公布。 Dillon当时认为FreeBSD 5所使用的Threading与SMP架构将会使得系统难以维护,但不被FreeBSD的发展团队接受,于是决定自行发展分支。即便如此,DragonFly BSD的发展团队仍与FreeBSD密切合作,双方仍然经常互相帮助对方修正臭虫,以及驱动程序的更新。 DragonFly 项目的创始人和目前的 leader,Matthew Dillon曾经是 FreeBSD SMPng 项目的重要开发人员,在 FreeBSD 3.x 时代开始,他对 FreeBSD 虚拟内存子系统、VFS子系统等多个重要部分进行了重写和增强,这些工作给 FreeBSD 4.x 系列的可靠性和性能打下了坚实的基础。FreeBSD 项目于 2000 年 6 月在 Sunnyvale 的 Yahoo 公司总部举行了 SMP 峰会,并正式启动了 SMPng 计划,即利用 BSDi 捐赠的 BSD/OS 源代码和相关的设计思想来改善 FreeBSD 的 SMP 能力。 DragonflyBSD是最年轻的BSD,专门提供比FreeBSD更优秀的对称多处理机系统,并使内核直接支持SSI集群,以取得更好的计算效果。这个项目在此方向上,才开始数年,主要关注i386平台。 Mac OS X是苹果公司(原苹果电脑公司)为麦金塔电脑开发的专属操作系统Mac OS的最新版本。Mac OS X于2001年首次在市场上推出,并从2002年起随麦金塔电脑发售。它是一套Unix基础的操作系统,包含两个主要的部份:核心名为Darwin,是以FreeBSD源代码和Mach微核心为基础,由苹果公司和独立开发者社区协力开发;及一个由苹果电脑开发,名为Aqua之专有版权的图形用户界面。 Mac OS X Server亦同时于2001年发售,架构上来说与工作站(客户端)版本相同,只有在包含的工作组管理和管理软件工具上有所差异,提供对于关键网络服务的简化访问,像是邮件传输服务器,Samba软件,LDAP目录服务器,以及名称服务器(DNS)。同时它也有不同的授权型态。 简单来说,它是Mac OS "版本10 "的分支,然而它与早期发行的Mac OS相比,在Mac OS的历史上是倾向独立发展的。它以Mach核心为基础,加入UNIX的BSD实现,再集成到NeXTSTEP当中(NeXTSTEP为当时史蒂夫·乔布斯(Steve Jobs)于1985年被迫离开苹果后,创建NeXT公司所发展的)。 同时,苹果电脑企图创造一个独家拥有的"新世代"操作系统,但只有少部份成功。最后NeXT的操作系统—(在当时称作OPENSTEP—)被选为苹果下个操作系统的基础形式,然后苹果电脑将NeXT全部买下来,并重新聘雇乔布斯。 乔布斯重回苹果的领导层次结构后,带领着苹果公司把原本倾向便利程序员的OPENSTEP,转换到苹果电脑主要销售的家用市场,以及受到专业人士欢迎的Rhapsody系统上。经历过打击Mac OS独立开发者忠诚度的失算策略、Mac OS 9转换到新系统,减轻转变之后,Rhapsody演化为Mac OS X。 Hybrid主要有GNU / Linux,Minix,QNXUnix的特点 Minix的名称取自英语Mini UNIX,是一个迷你版本的类Unix操作系统(约300MB),其它类似的系统还有Idris,Coherent,和Uniflex等。这些类Unix操作系统都是重新发展的,并没有使用任何AT&T的程序码。 Minix原来是荷兰阿姆斯特丹的Vrije大学计算机科学系的Andrew S. Tanenbaum教授所发展的一个类Unix操作系统。全部的程序码共约12,000行,并置于他的著作Operating Systems: Design and Implementation(ISBN 0-13-637331-3)的附录里作为范例。Minix的系统要求在当时来说非常简单,只要三片磁片就可以起动。 全套Minix除了起动的部份以汇编语言编写以外,其他大部份都是纯粹用C语言编写。分为:内核、内存管理及档案管理三部份。 Minix原始是设计给1980年代到1990年代的IBM PC和IBM PC/AT兼容电脑上执行。1.5版也有移植到已Motorola 68000系列CPU为基础的电脑上(如Atari ST,Amiga,和早期的Apple Macintosh)和以SPARC为基础的机器(如升阳sun公司的工作站)。2.0版则只有x86架构的版本。 Linux,是一类Unix计算机操作系统的统称。该操作系统的核心的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。 严格来讲,Linux这个词本身只表示Linux核心,但在实际上人们已经习惯了用Linux来形容整个基于Linux核心,并且使用GNU工程各种工具和数据库的操作系统(也被称为GNU/Linux)。基于这些组件的Linux软件被称为Linux发行版。一般来讲,一个Linux发行包包含大量的软件,比如软件开发工具、数据库(例如PostgreSQL、MySQL)、网络服务器(例如Apache)、X Window、桌面环境(例如GNOME和KDE)、办公包(例如OpenOffice)、脚本语言(例如Perl、PHP和Python)等等。 Linux核心最初是为英特尔386微处理器设计的。现在Linux核心支持从个人电脑到大型主机甚至包括嵌入式系统在内的各种硬件设备。 现在,Linux已经成为了一种受到广泛关注和支持的操作系统。包括国际商用机器公司和惠普、戴尔在内的一些信息业巨头也陆续支持Linux,并且成立了一些组织支持其发展,如Open Invention Network(OIN)(成员有IBM,索尼,NEC,Philips,Novell,Red Hat 等)购买了微软专利,允许任何个体以开放的原则使用。很多人认为,和微软Windows相比,作为自由软件的Linux具有低软件成本,高安全性,更加可信赖等优势,但是同时却需要更多的人力成本。 区别与Linux的区别和联系 UNIX是一个功能强大、性能全面的多用户、多任务操作系统,可以应用从巨型计算机到普通PC机等多种不同的平台上,是应用面最广、影响力最大的操作系统。 Linux是一种外观和性能与UNIX相同或更好的操作系统,但,Linux不源于任何版本的UNIX的源代码,并不是UNIX,而是一个类似于 UNIX的产品。Linux产品成功的模仿了UNIX系统和功能,具体讲Linux是一套兼容于System V以及BSD UNIX的操作系统,对于System V来说,目前把软件程序源代码拿到Linux底下重新编译之后就可以运行,而对于BSD UNIX来说它的可执行文件可以直接在Linux环境下运行。 linux就是模仿unix界面和功能的操作系统,但是源代码和unix一点关系都没有。换句话讲,linux不是unix,但像unix。(Linux is not unix!) 另外两大区别: 1) UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上. 2) UNIX有些版本比如aix,hp-ux是商业软件是闭源的(不过solaris,*bsd等unix都是开源的),而Linux是自由软件,免费、公开源代码的. 命令透过 PC 登录工作站 执行格式:telnet hostname (在 dos 下执行) telnet ip-address Example: telnet doc telnet 140.122.77.120 注:可利用指令 arp hostname 或 arp domain_name 查询 ip_address 登录步骤 login : _______ > 输入 username password : _______ > 输入密码 登出步骤 % logout 或 % exit 或 % 或按[Ctrl-D] sdsfsdfsdfsdfsdfsdfsdf 更改帐号密码 % yppasswd > 执行后将会出现下列信息 Changing NIS password for user on ice. Old password: ______ > 输入旧密码 New password: ______ > 输入新密码(最好6-8字,英文字母与数字混合) Retype new password: ______ > 再输入一次密码 在线帮助指令说明 执行格式:man command-name Example: % man ls 进入远端电脑系统 执行格式:rlogin hostname [-1 username] Example: fdfd %rlogin doc remote login 进入工作站 doc 中。 %rlogin doc -l user 使用 user 帐号进入工作站 doc 中。 执行格式:telnet hostname 或 telnet IP address Example: %telnet doc or %telnet 140.109.20.251 文件或目录处理 列出文件或目录下之文件名称 执行格式:ls [-atFlgR] [name] ( name 可为文件名或目录名称。) Example : ls 列出目前目录下之文件名。 ls –a 列出包含以.起始的隐藏档所有文件名。 ls –t 依照文件最后修改时间之顺序,依序列出文件名。 ls –F 列出目前目录下之文件名及其类型。”/” 结尾表示为目录名称,“*” 结尾表示为执行档,”@” 结尾表示为 symblic link。 ls –l 列出目录下所有文件之许可权、拥有者、文件大小、修改时间及名称。 ls –lg 同上,并显示出文件之拥有者群组名称。 ls –R 显示出目录下,以及其所有子目录之文件名。( recursive listing ) 目录之缩写: ~ 使用者 login 时的 working directory ( 起始目录 ) ~username 指定某位 user 的 working directory ( 起始目录 ) . 目前的工作目录 ( current working directory ) .. 目前目录的上一层目录 ( parent of working directory) 改变工作目录位置 执行格式:cd [name] :name 可为目录名称、路径或目录缩写。 Example: cd 改变目录位置,至使用者 login 时的 working directory (起始目录)。 cd dir1 改变目录位置,至 dir1 之目录位置下。 cd ~user 改变目录位置,至使用者的 working directory (起始目录)。 cd .. 改变目录位置,至目前目录的上层( 即 parent of working directory) cd ../user 改变目录位置,至相对路径 user 之目录位置下。 cd /../.. 改变目录位置,至绝对路径( Full path ) 之目录位置下。 复制文件 执行格式:cp [-r] source destination 建立新目录 执行格式:mkdir directory-name 删除目录 执行格式:rmdir directory-name 或 rm -r directory-name 删除文件 执行格式:rm filename (filename 可为文件名,或文件名缩写符号。) 列出目前所在之目录位置 执行格式:pwd 查看文件内容 执行格式:cat filename 查看目录所占磁盘容量 执行格式:du [-s] directory Example : du dir1 显示目录 dir1 的总容量及其次目录的容量(以 k byte 为容量)。 du -s dir1 显示目录 dir1 的总容量。 查看自己的 disk quota 使用状况 disk quota : 工作站磁盘空间的使用限额。 执行格式:quota -v 文件传输 拷贝文件或目录至远端工作站 执行格式:rcp [-r] source hostname:destination source 可为文件名、目录名或路径,hostname 为工作站站名,destination 为路径名称. 自远端工作站,拷贝文件或目录 执行格式:rcp [-r] hostname:source destination ( hostname 为工作站名,source 为路径名,destination 可为文件名、目录名或路径 )。 ftp doc 与远端工作站 doc ,进行文件传输 Name (doc:user-name) : 输入帐号 Password (doc:user-name): 输入密码 ftp> help 列出 ftp 文件传输,可使用之任何命令。 ftp> !ls 列出本地工作站,目前目录下之所有文件名。 ftp> !pwd 列出本地工作站,目前所在之工作目录位置。 ftp> ls 列出远端工作站目前目录下之所有文件名。 ftp> dir 列出远端工作站目前目录下之所有文件名(略同于 UNIX 的 ls -l 指令). ftp> dir . |more 同上,但每页会暂停(可能不适用 Unix 以外的 ftp)。 ftp> pwd 列出远端工作站目前所在之目录位置。 ftp> cd dir1 更改远端工作站之工作目录位置至 dir1 之下。 ftp> get file1 将远端工作站之文件 file1 ,拷贝到本地工作站中。 ftp> put file2 将本地工作站之文件 file2 ,拷贝到远端工作站中。 ftp> mget *.c 将远端工作站中,副文件名为 c 之所有文件,拷贝到本地工作站中。 ftp> mput *.txt 将本地工作站中,副文件名为 txt 之所有文件,拷贝远端工作站中。 ftp> prompt 切换交谈式指令(使用 mput/mget 时不用每个文件皆询问yes/no)。 ftp> quit 结束 ftp 工作。 ftp> bye 结束 ftp 工作。 注:从PC与工作站间的文件传输也可透过在 PC端的 FTP指令进行文件传输,指令用法与上所述大致相同。 文件模式之设定 ] 改变文件或目录之读、写、执行之允许权 执行格式:chmod [-R] mode name ( name 可为文件名或目录名;mode可为 3 个 8 位元之数字,或利用ls -l 命令,列出文件或目录之读、写、执行允许权之文字缩写。) mode : rwx rwx rwx r:read w:write x:execute user group other 缩写 : (u) (g) (o) [改变文件或目录之拥有权 执行格式:chown [-R] username name ( name 可为文件名或目录名。) Example : %chown user file1 将文件 file1 之拥有权,改为使用者 user 所有。 %chown -R user dir1 将目录 dir1,及其下所有文件和子目录之拥有权,改为使用者 user 所有。 检查自己所属之群组名称 执行格式:groups 改变文件或目录之群组拥有权 执行格式:chgrp [-R] groupname name ( name 可为文件名或目录名 ) Example : %chgrp vlsi file1 将文件 file1 之群组拥有权,改为 vlsi 群组。 %chgrp -R image dir1 将目录dir1,及其下所有文件和子目录,改为 image 群组。 改变文件或目录之最后修改时间 执行格式:touch name ( name 可为文件或目录名称。) 文件之连结 同一文件,可拥有一个以上之名称,可将文件做数个连结。 执行格式:ln oldname newname ( Hard link ) Example : ln file1 file2 将名称 file2,连结至文件 file1。 执行格式:ln -s oldname newname ( Symblick link ) Example : ln -s file3 file4 将名称 file4,连结至文件file3。 文件之字串找寻 执行格式:grep string file Example : grep abc file1 寻找文件file1中,列出字串 abc 所在之整行文字内容。 找寻文件或命令之路径 执行格式:whereis command ( 显示命令之路径。) 执行格式:which command ( 显示命令之路径,及使用者所定义之别名。) 执行格式:whatis command ( 显示命令功能之摘要。) 执行格式:find search-path -name filename -print( 搜寻指定路径下,某文件之路径。) Example : %find / -name file1 -print ( 自根目录下,寻找文件名为 file1 之路径.. 比较文件或目录之内容 执行格式:diff [-r] name1 name2 ( name1 name2 可同时为文件名,或目录名称。) Example : %diff file1 file2 比较文件 file1 与 file2 内,各行之不同处。 %diff -r dir1 dir2 比较目录 dir1 与 dir2 内,各文件之不同处。 文件打印输出 使用者可用 .login 档中之 setenv PRINTER,来设定打印资料时的打印机名。 printername :sp1 或 sp2 Example : %setenv PRINTER sp2 设定自 sp2 打印资料。 一般文件之打印 执行格式:lpr [-Pprinter-name] filename %lpr file1 或 lpr -Psp2 file1 自sp2,打印文件 file1。 执行格式:enscript [-Pprinter-name] filename %enscript file3 或 enscript -Psp1 file3 自sp1, 打印文件 file3。 troff 文件之打印 执行格式:ptroff [-Pprinter-name] [-man][-ms] filename %ptroff -man /usr/local/man/man1/ptroff.1 以 troff 格式,自 Apple laser writer 打印 ptroff 命令之使用说明。 %ptroff -Psp2 -man /usr/man/man1/lpr1 以 troff 格式,自 sp2 打印 lpr 命令之使用说明。 打印机控制命令 检查打印机状态,及打印工作顺序编号和使用者名称 执行格式:lpq [-Pprinter -name] %lpq 或 lpq -Psp1 检查 sp1 打印机之状态。 使用命令记录表 执行格式:!! Example: %!! (重复执行前一个命令) 执行格式:!n ( n 为命令记录表之命令编号。) Example: %!5 ( 执行命令记录表中第五个命令。) 执行格式:!string ( 重复前面执行过以 string 为起始字符之命令。) Example: %!cat ( 重复前面执行过,以 cat 为起始字符之命令。) 显示前一个命令之内容 执行格式:!!:p 更改前一命令之内容并执行之 执行格式:^oldstring ^newstring 将前一命令中 oldstring 的部份,改成 newstring,并执行之。 pipe-line 之使用 执行格式:command1 | command2 标准输入之控制 执行格式:command-line < file 将 file 做为 command-line 之输入。 查看系统中的使用者 执行格式:who 或 finger 执行格式:w 执行格式:finger username or finger username@domainname 改变自己的 username 进入其他使用者的帐号,拥有其使用权利。 执行格式:su username Example: %su user 进入使用者 user 之帐号 passwrod: 输入使用者 user 之密码 查看 username 执行格式:whoami 查看 login 时,自己的 username。 执行格式:whoami 查看目前的 username。若已执行过 “su”命令tch user),则显示出此 user 之 username。 查看目前本地所有工作站的使用者 执行格式:rusers > 结束 与某工作站上的使用者交谈 执行格式:talk username@hostname 或 talk username@ip_address 检查远端电脑系统是否正常 执行格式:ping hostname 或 ping IP-Address Example: %ping doc 电子邮件(E-mail)的使用简介 将文件当做 E-mail 的内容送出 执行格式:mail -s “Subject-string” username@address < filename %mail -s "program" user < file.c 将 file.c 当做 mail 的内容,送至 user,subject name 为 program。 传送 E-mail 给本地使用者 执行格式:mail username %mail user 传送 E-mail 至 外地 执行格式:mail username@receiver-address 读取信件 执行格式:mail 常用指令如下: cd [directory] chdir to directory or home if none given d [message list] delete messages h print out active message headers m [user list] mail to specific users n goto and type next message p [message list] print messages q quit,saving unresolved messages in mbox r [message list] reply to sender (only) of messages R [message list] reply to sender and all recipients of messages s [message list] file append messages to file t [message list] type messages (same as print) u [message list] undelete messages v [message list] edit messages with display editor w [message list] file append messages to file,without from line x quit,do not change system mailbox z [-] display next [previous] page of headers ! shell escape UNIX标准 从1980年代开始,POSIX,一个开放的操作系统标准就在制定中,IEEE制定的POSIX标准现在是UNIX系统的基础部分。 特点Everything (including hardware) is a file. 所有的事物(甚至硬件本身)都是一个文件。 Configuration data stored in text. 以文本形式储存配置数据。 Small,single-purpose program. 程序尽量朝向小而单一的目标设计 Avoid captive user interfaces. 尽量避免令人困惑的用户接口 Ability to chain program together to perform complex tasks. 将几个程序连结起来,处理大而复杂的工作。 unix职业发展领域职业领域:unix发展领域和linux差不多,但是unix可以往高端产业发展,IT基础架构师,高端产业大部分领域使用的是unix服务器,所以掌握了unix才算是进入了高端产业领域 (整体待遇提高非常多) unix核心分类的优势比较UNIX:AIXHP-UXSolaris比较 市场角度分析:如今IBM的pseries已经占领小型机的大半江山,AIX已经广泛深入应用; 开发平台专一性分析:HP sun的开发力量分散在不同平台上应用,而IBM完全专注在power处理器平台上,所有的软硬件都整合在一起开发,可靠性\\可用性\\可服务性非常强. 企业策略上分析:hp在策略上有严重的问题,近几年在小型机上越做越差,小型机基本上都被IBM占据,sun公司被甲骨文(oracle)公司收购,unix市场份额也明显不足 IBM虚拟化技术领先于hp-uxsolaris,可以在一个处理器里面划分多达十个分区,虚拟化技术就是客户当有应用需要资源的时候,我们可以按客户需求给到刚好需要的资源. 投入上分析:IBM之所以成功在研究上有非常大的投入,研究出来的结果可以立刻被开发部门运用,这是我们成功的另一个很重要的原因。 意义影响Unix是第三次工业革命中计算机软件领域最具代表性的产物。在这近40年中,由Unix造成的影响是最有深远意义的。就我看来,Unix为软件领域带来了至少以下有积极的东西,由这些东西所引发的直接或间接的事物更是举不胜数。 软件开发的若干哲学和思想。 全民参与推动软件,代码共享的模式。 开启了黑客文化和开源项目。 免费和商业的完美结合的Linux。 C语言,而后发展的C++,Java等等类C的语言和脚本。(参看《C语言的演变史》) TCP/IP,其的Socket编程已成为今天通用的网络编程主流。(参看《到处都是Unix的胎记》) 不能不说,AT&T虽然发展了Unix,但今天Unix的混乱的局面也和AT&T 有着直接原因。但反过来说,如果没有AT&T的反面教材,今天的GNU/Linux很有可能也不会出现。AT&T究竟是限制了Unix的发展,还是以反面示例促进了Unix社区,已不好评说。今天,软件是商业化好还是开源好的争论还在继续,纵观这几十年来Unix的历史,Linux的划时代地出现。相信你会得出自己的结论。不管怎么样,Unix的经历对计算机领域贡献的不单单是技术,他给我们提供了丰富而生动的教材。特别是Unix引发的哲学,让今天的我们依然受益不浅。 说到Unix为我们所带来的软件开发的哲学,我必需要说一说。Unix遵循的原则是KISS(Keep it simple,stupid)。 哲学Doug McIlroy 是认为UNIX的哲学是这样的:三条哲学,简明扼要,就是这三条哲学贯穿着整个Unix世界。尤其是第一条“do one thing and do it well”真是相当精彩! Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams,because that is a universal interface. 只要是Unix的程序员,他们会比别的程序员在任何时候都会不停地强调着这三条哲学。 图书书名:UNIX技术手册第三版图书编号:1010200 出版社:中国电力出版社 定价:69.0 ISBN:750830982 作者:罗宾斯 出版日期:2003-01-01 版次:1 开本:16开 简介本书是一本内容丰富的畅销书,现在的版本更加全面,内容更新。你可能已经读过UNIX快速参考指南之类的书了,但没有哪一本书能与《UNIX技术手册》相提并论。本书是一本完全参考,包含所有的命令和选项、一般性描述以及把各种命令联系起来的例子。《UNIX技术手册(第三版)》完全涵盖了UNIX System V版本4和Solaris 7。作者增加了下列最新内容:60个新的UNIX命令 shell语法(sh、csh以及1988和1993版本的ksh)正则表达式 vi和ex命令,以及新近更新的emacs信息 sed和awk命令 troff和相关命令和宏,新增了讲述refer的一节 make、RCS(版本5.7)和SCCS命令已淘汰的命令此外,还有一个新的UNIX参考文献,指导读者深入学习UNIX环境. 目录前言 第一部分 命令和shell 第一章 UNIX入门 第二章 UNIX命令 第三章 UNIXshell概述 第四章 Bourne shell和Korn shell 第五章 C shell 第二部分 文本编辑和处理 第六章 模式匹配 第七章 emacs编辑器 第八章 vi编辑器 第九章 ex编辑器 第十章 sed编辑器 第十一章awk编程语言 第三部分 文本格式化 第十二章 nroff和troff 第十三章 mm宏 第十四章 ms宏 第十五章 me宏 第十六章 man宏 第十七章 troff预处理程序 第四部分 软件开发 第十八章 SCCS 第十九章 RCS 第二十章 make实用程序 第五部分 附录 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。