UNIX操作系统简介UNIX发展过程UNIX系统是美国麻省理工学院(MIT)在1965年开发的分时操作系统Multics(Multiplexed Information and Computing Service System)的基础上不断演变而来的,它原是MIT和贝尔实验室等为美国国防部研制的。
贝尔实验室的系统程序设计人员汤普逊(Thompson)和里奇(Ritchie)于1969年在 PDP—7计算机上成功地开发了16位微机操作系统。
该系统继承了 Multics系统的树形结构、Shel1命令语言和面向过程的结构化设计方法,以及采用高级语言编写操作系统等特点,同时,又摈弃了它的许多不足之处。
为了表示它与 Multics 既继承又背叛的关系,该系统命名为UNIX,UNIX中的 UNI正好与 Multi相对照,表示UNIX系统不像 Multics系统那样庞大和复杂,而 X则是 cs的谐音。
由于当时美国政府禁止AT&T经营计算机业务,所以在整个七十年代,UNIX 没能作为商品进入市场,而主要是提供给学校和科研机构等非赢利单位使用。
1972年, UNIX系统开始移植到 PDP-l l系列机上运行,在1979年,贝尔实验室又将其移植到类似于 IBM370的32位机上运行,并公布了得到西部电气公司正式承认的 UNIX第七版。
在1980年又公布了为 VAX-l l/780计算机编写的操作系统 UNIX32V。
在此基础上,加里福尼亚大学伯克利分校同年发表了 VAX-l l型机用的 BSD4.0和 BSD4.1版本。
1982年,贝尔实验室又相继公布了 UNIX systems III的3.0、4.0和5.0等版本。
它们是对 UNIX32V的改进,但却不同于BSD4.0和 BSD4.1版本。
从此, UNIX系统走上了以 AT&T和伯克利分校二者为主的开发道路。
例如,1983年 AT&T推出了 UNIX systems V和几种微处理机上的 UNIX操作系统。
而伯克利分校公布了 BSD4.2版本。
在1986年,UNIX systems V又发展为它的改进版 Res2.1和Res3.0,而 BSD4.2又升级为BSD4.3。
在这种背景下,美国 IEEE组织成立了 POSIX委员会专门进行UNIX的标准化方面的工作。
此外,在1988年以 AT&T和 Sun Micro system等公司为代表的UI(UNIX International)和以 DEC、 IBM等公司为代表的 OSF(Open Software Foundation)组织也开始了这种标准化工作。
它们对 UNIX的开发工作虽不一样,但它们定义出了 UNIX的统一标准,即可以运行UNIX应用软件的操作系统就是 UNIX。
从而统一UNIX系统的关键就变成是否能提供一个标准的用户界面,而不在于其系统内部是如何实现的了。
UNIX的特点UNIX系统之所以得到如此广泛地应用,是与其特点分不开的。
其主要特点表现在:1. 多用户的分时操作系统,即不同的用户分别在不同的终端上,进行交互式地操作,就好像各自单独占用主机一样。
2. 可移植性好。
硬件的发展是极为迅速的,迫使依赖于硬件的基础软件特别是操作系统不断地进行相应的更新。
由于UNIX几乎全部是用可移植性很好的C语言编写的,其内核极小,模块结构化,各模块可以单独编译。
所以,一旦硬件环境发生变化,只要对内核中有关的模块作修改,编译后与其它模块装配在一起,即可构成一个新的内核,而内核上层完全可以不动。
3. 可靠性强。
经过十几年的考验,UNIX系统是一个成熟而且比较可靠的系统。
在应用软件出错的情况下,虽然性能会有所下降,但工作仍能可靠进行。
4. 开放式系统,即 UNIX具有统一的用户界面,使得 UNIX用户的应用程序可在不同环境下运行。
此外,其核心程序和系统的支持软件大多都用 C语言编写。
5. 它向用户提供了两种友好的用户界面。
其一是程序级的界面,即系统调用,使用户能充分利用 UNIX系统的功能,它是程序员的编程接口,编程人员可以直接使用这些标准的实用子程序,例如,对有关设备管理的系统调用read、 write,便可对指定设备进行读写,而 open和close就可打开和关闭指定的设备,对文件系统的调用除 read、 write、 close、 open外,还有创建( create),删除(unlink)、执行(execl)、控制(fncte)、加锁(flock)、文件状态获取(stat)和安装文件(mount)等。
其二是操作级的界面,即命令,它直接面向普通的最终用户,为用户提供交互式功能。
程序员可用编程的高级语言直接调用它们,大大减少编程难度和设计时间。
可以说,UNIX在这一方面,同时满足了两类用户的需求。
6.具有可装卸的树型分层结构文件系统。
该文件系统具有使用方便,检索简单等特点。
7.将所有外部设备都当作文件看待,分别赋予它们对应的文件名,用户可以像使用文件那样使用任一设备,而不必了解该设备的内部特性,这既简化了系统设计又方便了用户的使用。
UNIX的结构UNIX系统结构可分为三层。
如图3.1.1所示。
最内层是 UNIX操作系统核心,它直接依附于硬件层之上,包括文件控制系统和进程控制系统两大部分。
这两部分的实现因厂家和版本而异,其程序量大多在几千行到几万行左右。
最外层是用户程序,包括许多应用软件及一些操作系统工具。
中间层则是 Shel1命令解释程序、实用程序、库函数等。
该层中的 Shel1解释程序是用户和 UNIX操作系统的操作界面,它相当于DOS系统中的。
SHELL分类Shell 可以看作是UNIX系统为用户提供的命令解释程序。
在 UNIX看来,Shell是用户登录之后 UNIX运行的第一个程序。
shell本身就是一个计算机程序,用C语言编写,为协助用户与操作系统之间通讯而设计,管理用户与核心(Kernel)之间对话(因为核心运行在计算机的内部,它不直接与用户打交道),并把操作系统指令换成机器代码。
PC用户常用的DOS与此类似,DOS中所有的命令都由解释执行,这儿就相当于UNIX系统中的shell。
除了命令解释器的功能外, shell还是一种强有力的程序设计语言,它具有变量、条件和循环结构等程序设计的基本元素,同时它还提供可剪裁的用户环境以及重定向、管道线等有效而简洁的技术。
现在流行的 Shell有两种类型:即 Bourne Shell(以下简称为B Shell)和 C Shell。
要识别所用的 Shell是什么类型,那是比较容易的事情。
如果用户登录之后 UNIX显示提示符为$,那么所使用的是B Shell。
若显示为%提示符,则为 C Shell。
一般来说 Systenl V类的系统总是使用 B Shell,近来由于所有的UNIX版本具有两种 Shell,因此使用哪一种Shell,则由系统管理员来确定。
1. B Shell它是使用较广泛的 UNIX Shell,它以 Steve Bourne的名字命名,是 Shel1最早的开发者。
B Shell用于所有的 UNIX系统中,用$作为提示符,在提示符之后可以输入命令或回车键。
几乎所有的 UNIX实现都将B shell作为它们的标准配置的一部分。
B she11比C shell都要小,但执行效率却比C shell高。
同时,它不像其他C shell那么复杂,但交互性方面比 C she11差。
像所有的UNIX程序一样, B Shell本身也是一个程序,它的名字是 Sh。
原始的 B Shell有几个版本,最著名的是 Bourne Again Shell(也称为 bash)。
由于它是免费的,所以不少地方都使用它。
2. C ShellC Shel1并不是由一个叫 C的人写的,它是由 Bill Joe于1983年写成,是标准BSD(Berkeley System Distribution)命令解释。
随着 UNIX系统标准化的发展,使用 UNIX作为操作系统的工作站等大都同时支持 B Shell和 C Shell。
C Shell的名字是 csh。
它和其它类型的 Shell明显的不同在于 C Shell使用许多特殊的字符,当输入这类字符时可以执行许多特殊的功能,例如,惊叹号(!)告诉 C Shel1重复执行命令。
两个惊叹号(!!)表示重复执行最后输入的命令。
例如,输入以下行命令:! cp表示重复执行一个拷贝命令 cp。
对于 SunOS系统(该系统是Sun Microsystem公司的操作系统,目前很流行)来说,它只提供C shell和 B shell,又由于 SunOS的内核是基于 BSD4.2或BSD4.3的,所以 C shel1是 SunOS中的优选shell。
但 SunOS系统也提供了 B she1l解释器, B shell程序也可以毫无困难地在 SunOS中运行。
系统登录与退出不管使用的是终端还是工作站,首先必须要做的就是登录,即用户向 UNIX报到。
如果直接使用工作站,当 UNIX本身装入之后,就立即可以登录。
但终端用户则不然,当用户的终端直接与计算机相连后,那么在打开终端电源时,屏幕显示的内容类似于:tty001 1ogin:此处,tty001是 UNIX给终端起的名字, login表示 UNIX正在等待你的登录。
为了登录,每个 UNIX用户有一个用户名和口令。
用户可以而且应该改变口令,但是不能改变用户名。
一旦输入用户名和口令,经检验正确后便可开始工作。
需注意的是, UNIX认为大写母和少写字母是不同的,如果用户名(有时也称为登录名)是 zhangshan,必须一点不差地输入,不能输入 Zhangshan、ZhangShan或者其它不同的形式。
UNIX用户名通常都是完全使用小写字母。
正确输入用户名后,还要按 Enter键,以确认输入的用户名。
输入了用户名之后, UNIX接着要求输入口令,用同样的方式输入并且按下 Enter键确认输入。
由于口令需要保密。
所以输入的字符并不显示在屏幕上,如果 UNIX认为输入的用户名和口令正确,它则显示出一些认可你进入系统的提示,并且将你移交给 Shell处理。
如果 UNIX认为你的用户名或口令有误,就会显示:1ogin incorrect,这就说明你的登录有错,这时应该再从用户名开始重新登录。
例3.3.1下面给出一个正确登录和不正确登录的实例:UNIX(r) System V Release 4.0 (dns) #此信息表示已与主机连上,主机名为dns,它所用的系统为UNIX System Vlogin: zhli #在”login:” 后输入用户名”zhli”Password: #在” Password:” 后输入口令,输入的口令不显示Last login: Sat May 10 10:39:59 from #表示上次登录的时间和机器名Sun Microsystems Inc. SunOS 5.5 Generic November 1995 #系统信息dns% #在dns主机名后面出现”%”,表示用户zhli已正确登录,且登录的shell为C shell。