admin管理员组

文章数量:1532196

2024年1月13日发(作者:)

Unix操作系统浅析

摘要:本文较详细的介绍了什么是UNIX操作系统,以及UNIX操作系统的发展历史,UNIX系统的基本结构,UNIX操作系统的优势,UNIX操作系统和LINUX操作系统的区别和联系。

关键字:UNIX,LINUX

一、引言

UNIX ,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统。UNIX操作系统最早由Ken Thompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。经过长期的发展和完善,目前已成长为一种主流的操作系统技术和基于这种技术的产品大家族。由于UNIX具有技术成熟、结构简练、可靠性高、可移植性好、可操作性强、网络和数据库功能强、伸缩性突出和开放性好等特色,可满足各行各业的实际需要,特别能满足企业重要业务的需要,已经成为主要的工作站平台和重要的企业操作平台。它主要安装在巨型计算机、大型机上作为网络操作系统使用,也可用于个人计算机和嵌入式系统。曾经是服务器操作系统的首选,占据最大市场份额,但最近在跟WINDOWS SERVER以及Linux的竞争中有所失利。

二、UNIX历史

初创期 Unix的诞生和Multics(Multiplexed Information and Computing System)是有一定渊源的。Multics是由麻省理工学院,AT&T贝尔实验室和通用电气合作进行的操作系统项目,被设计运行在GE-645大型主机上,但是由于整个目标过于庞大,糅合了太多的特性,Multics虽然发布了一些产品,但是性能都很低,最终以失败而告终。 AT&T最终撤出了投入Multics项目的资源,其中一个开发者,Ken Thompson则继续为GE-645开发软件,并最终编写了一个太空旅行游戏。经过实际运行后,他发现游戏速度很慢而且耗费昂贵——每次运行会花费75美元。 在Dennis Ritchie的帮助下,Thompson用PDP-7的汇编语言重写了这个游戏,并使其在DEC PDP-7上运行起来。这次经历加上Multics项目的经验,促使Thompson开始了一个DEC PDP-7上的新操作系统项目。Thompson和Ritchie领导一组开发者,开发了一个新的多任务操作系统。这个系统包括命令解释器和一些实用程序,这个项目被称为UNICS(Uniplexed Information and Computing System),因为它可以支持同时的多用户操作。后来这个名字被改为UNIX。 发展期 最初的Unix是用汇编语言编写的,一些应用是由叫做B语言的解释型语言和汇编语言混合编写的。B语言在进行系统编程时不够强大,所以Thompson和Ritchie对其进行了改造,并与1971年共同发明了C语言。1973 年Thompson和Ritchie用C语言重写了Unix。在当时,为了实现最高效

率,系统程序都是由汇编语言编写,所以Thompson和 Ritchie此举是极具大胆创新和革命意义的。用C语言编写的Unix代码简洁紧凑、易移植、易读、易修改,为此后Unix的发展奠定了坚实基础。 1974年,Thompson和Ritchie合作在ACM通信上发表了一篇关于UNIX的文章,这是UNIX第一次出现在贝尔实验室以外。此后UNIX被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。 1975年,UNIX发布了4、5、6三个版本。1978年,已经有大约600台计算机在运行UNIX。1979年,版本7发布,这是最后一个广泛发布的研究型UNIX版本。20世纪80年代相继发布的8、9、10版本只授权给了少数大学。此后这个方向上的研究导致了Plan 9的出现,这是一个新的分布式操作系统。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。 其他一些公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统,有些选择System V作为基础版本,有些则选择了BSD。BSD的一名主要开发者,Bill Joy,在BSD基础上开发了SunOS,并最终创办了Sun Microsystems。 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的先辈。 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变体了。现况 UNIX System V Release 4发布后不久,AT&T就将其所有UNIX权利出售给了Novell。Novell期望以此来对抗微软的Windows NT,但其核心市场受到了严重伤害,最终Novell将SVR4的权利出售给了X/OPEN Consortium,后者是定义UNIX标准的产业团体。最后X/OPEN和OSF/1合并,创建了Open Group。Open Group定义的多个标准定义着什么是以及什么不是UNIX。 实际的UNIX代码则辗转到了Santa Cruz Operation,这家公司后来出售给了Caldera Systems。Caldera原来也出售Linux系统,交易完成后,新公司又被重命名为SCO Group。

1127部门的解散 根据一项报导指出,当年负责研发UNIX与后续维护工作的贝尔实验室1127部门已于2005年8月正式宣告解散。Ken Thompson已退休,现

居加州;Dennis Ritchie调到别的部门;Douglas McIlroy在达特茅斯学院担任教授等等。

三、UNIX系统基本结构

UNIX系统的基本结构如图所示。整个UNIX系统可分为五层:最底层是裸机,即硬件部分;第二层是UNIX的核心,它直接建立在裸机的上面,实现了操作系统重要的功能,如进程管理、存储管理、设备管理、文件管理、网络管理等,用户不能直接执行UNIX内核中的程序,而只能通过一种称为"系统调用"的指令,以规定的方法访问核心,以获得系统服务;第三层系统调用构成了第四层应用程序层和第二层核心层之间的接口界面;应用层主要是UNIX系统的核外支持程序,如文本编辑处理程序、编译程序、系统命令程序、通信软件包和窗口图形软件包、各种库函数及用户自编程序;UNIX系统的最外层是Shell解释程序,它作为用户与操作系统交互的接口,分析用户键入的命令和解释并执行命令,Shell中的一些内部命令可不经过应用层,直接通过系统调用访问核心层。

四、UNIX操作系统的优势

1、UNIX是最早出现的操作系统之一,发展到现在已趋于成熟;C语言因UNIX系统而出现,UNIX系统具有强大的可移植性,适合多种硬件平台。你甚至可以把UNIX操作系统的源代码写在纸上,然后设计一套你自己的硬件来编译和运行它。

2、UNIX具有良好的用户界面;程序接口提供了C语言和相关库函数及系统调用,命令接口是SHELL,UNIX有3种主流的SHELL,即sh,csh和 ksh,同时为用户提供了数千条系统命令,有助于系统操作和系统管理,其管道机制也是独有的特性; 系统的可操作性很强,你甚至可以不用显示器,取而代知的是非常简易的输出设备,如简易的,类似于计算器的液晶屏,甚至可以是打印机来完全操作计算机和完成复杂的系统开发和管理工作!

3、在UNIX中提供了完美而强大的文本处理工具,特别适合于字符流的处理,有很多强大的功能是WINDOWS无法比拟的,如 grep,awk,sed, 正则表达式的应用等等,文本编辑器以vi最为普遍,其它还有pico,nano,emacs,ee等等。

4、为用户提供了良好的开发环境。UNIX的默认安装一般都包括标准的C语言编译器cc,新版本的UNIX还包括GCC,程序员可以利用它们来开发C和C ++应用程序,同时提供了make,sccs,rcs等版本控制程序,利于大型项目的开发;同时UNIX还支持数十种流行的程序开发语言

5、好的文件系统。UNIX的文件系统有很多种,如早期的s5,ufs,AFS,EAFS,HTFS,DTFS日志型的jfs,xfs,vxfs等等,其跨平台的文件系统ufs,jfs,网络文件系统nfs极大的方便了用户;同时UNIX无文件类型,支持硬连接和符号连接,文件和路径名规范。

6、强大的网络功能,集群和分布式计算,适合当今的 INTERNET。其telnet设计思想很适合用户进行远程管理。

7、完善的系统审计。除了提供syslog系统审记,还提供sulog,lastlog,wtmplog等,同时用户还可以自定义记录LOG,由于UNIX非常擅长处理文本,用户可以方便的对这些LOG进行查看、分类和再加工。

8、增强的系统安全机制。系统大多满足C2级系统安全规范,部分专用系统已经达到了B1级;经典而完善的按属主和组进行3种权限管理的机制仍然是当今最完善的用户权限解决方案。

9、系统备份功能完善。系统本身提供了dd,tar,cpio,dump等传统的归档备份程序,用户同时可采用第3方的备份工具。

10、系统结构清晰,有利于操作系统的教学和实践UNIX操作系统是学生学习操作系统最好的教材,操作系统的每一个知识点都可以在UNIX系统上进行实践和找到答案。如进程管理和调度,学生可以直接通过ps,nice等命令的操作来体会和理解概念;同时学员可以阅读其核心源代码以及亲自编写程序来加深对操作系统的理解。

11、系统的专业性和可定制性强

每种UNIX系统都有它们的安装程序,和WINDOWS相比,它们要专业和复杂得多,有很多系统还支持网络安装。对于同一个操作系统,用户可以定制成不同的类型,如字符终端、图形工作站、服务器等(而不像WINDOWS,针对不同的用户来发行不同的版本,系统的可定制性差)。

12、UNIX系统具有强稳定性和健壮的系统核心

其最新的核心为System V Release 5(SVR5),支持众多新技术,如DDI8设备驱动程序,64位技术,多路I/O提高了系统的可靠性和性能,控制器热插拔,硬盘跨接和镜像,Crash和Dump的能力,多控制台支持,核心动态调整等等,以满足复杂的应用要求。

13、系统的规范性

虽然UNIX存在很多变体版本,但在UNIX系统中可以找到很多系统规范的影子,例如SystemV, Posix , GNU, UNIX95 , CDE 等等;这有助于UNIX的统一发展。

14、功能强大的帮助系统

UNIX的manpage和在线文档是提供给用户的非常全面的手册,也是克服用户因为忘记了某个命令或参数而产生烦恼的好帮手;manpage分为多个章节,从命令到系统调用都有详细的解释。

五、UNIX和LINUX的区别和联系

1、Unix与Linux操作系统的源代码是不同的。

虽然Unix与Linux操作系统有不少的命令是相同的,但是他们的源代码则是不同的。也就是说,在Linux操作系统开发过程中,采用了很多Unix系统的设计理念,并遵循Unix操作系统的POSIX规范。但是其并没有采用Unix操作系统的源代码,并没有采用Unix操作系统的运行方式。从这一点来说,他们两个是不同的操作系统。

现在Unix操作系统走的是商业化的道路,其源代码是受到保护的。这也就是说,任何社会团体与个人都不能够抄袭或者随意修改Unix操作系统的源代码。而Linux在开发过程中,源代码都是重新书写的,所以就没有版权上面的限制。无论是个人还是商业团体,只要遵循一定的规范,就可以对Linux的源代码进行更改或者复制。不会涉及到版权的问题。故Linux操作系统才是一个真正的开源操作系统。

2、Unix与Linux采用相同的系统调用为此就是同一种操作系统。

Unix从发展到现在,有了很多种版本。如BSD或者HP-Uinx操作系统等等。他们都是Unix操作系统。为什么这么说呢?并不是说他们的源代码的起源是相同的,而是说他们都采用了一样的系统调用。在Unix操作系统中,最出色的特点就是通过命令来完成相关的操作。在Unix系统中,具有1000多个命令。但是令人惊奇的是,这么多的命令却是通过少数几个函数调用与系统内核进行通信,这些函数调用就称之为系统调用。

这就好像一个写字楼,其大门可能只有前后两个。但是通往这两个大门的道路却有成千上百条。那么各个应用程序只需要遵守这两扇大门的通信规则,就可以跟写字楼内部人员进行沟通。如在Unix内核中有一个Write函数,主要是往文件中保存相关的信息。而很多应用程序需要往硬盘的文件中保存信息,如文本处理文件、数据库系统等等。但是这些应用系统的话最终都会调用Write函数往文件中保存信息,所以这些应用程序开发者只需要了解Write函数,就可以顺利往硬盘中保存文件。可见,真是因为大家都采用了相同的系统调用,所以应用程序才能够在不同的Unix版本中顺利移植。

而Linux操作系统采用的系统调用跟Unix操作系统是相同的,都遵循POSIX的规范。从这一点上来说,Linux操作系统就是Unix操作系统,只是他们的开发者不同而已。为此即时他们的源代码不同,但是并不影响这个定性。由于两个操作系统采用了相同的系统调用,则在Unix操作系统上开发的应用软件,可以很方便的移植到另一个Linux操作系统上。

所以说,Unix操作系统与Linux操作系统即是同一个操作系统(系统调用相同),又不是相同的操作系统(源代码不同)。这个答案看起来自相矛盾,但是真实的反映出了这两个操作系统相互之间的关系。

3、内核文件与外壳不同。

无论是Unix操作系统还是Linux操作系统,其基本上是有内核、外壳和应用程

序三部分组成。毋庸置疑,内核是操作系统中最重要的部分,其直接跟计算机硬件打交道。负责外壳与系统硬件之间的信息交流。为此也有专家说,内核才算是真正意义上的操作系统。

Unix操作系统与Linux操作系统内核文件是不同的。如Unix操作系统其内核程序对应的文件往往是/stand/unix文件;在SUNOS的Unix操作系统中对应的是/kernel./genuix。操作系统在启动的时候会把这个内核程序加载到系统内存中。而Linux操作系统的内核程序与Unix操作系统有比较大的区别。Linux操作系统采用的内核文件为/boot/vlinuz。无论是系统工程师还是程序员必须要知道这个最基本的区别。如在对系统内核进行升级的时候,就需要知道所采用的内核文件。

Unix操作系统与Linux操作系统不仅内核文件不同,所采用的外壳也是不同的。当目前为止,Unix操作系统主要支持四种外壳,分别为SH、CSH、KSH和BASH。当用户登录到操作系统之后,就会启动一个外壳程序。通常情况下,在同一个时刻只能够启动一个外壳。系统工程师就是通过外壳同系统内核与硬件进行通信。而Linux操作系统目前为止只支持三种外壳程序,分别为BASH(默认采用的外壳程序)、CSH、KSH,比Unix操作系统少一种。这个差异对于普通用户来说,可能没有什么影响。但是对于系统工程师进行一些特定工作的话,就可能会带来比较大的不方便。

四、命令参数的表示方式不同。

参考文献:

[1]. UNIX操作系统教程 张红光,李福才等编著 机械工业出版社

[2]. /wxjs/network/200812/

[3]. /wxjs/network/200812/

[4]. /server/apply/

本文标签: 系统用户进行版本内核