提到操作系统,一般人可能马上会想到的是微软所发展的操作系统─DOS和Windows 95/98/NT/2000或者XP,Vista等。事实上,除了微软的操作系统之外,还有一些相当不错的操作系统;例如IBM过去发展的OS/2操作系统,Macintosh计算机所采用的操作系统,PC上所使用的Linux操作系统,以及各大厂工作站或服务器所使用的Unix操作系统。Unix所指并非单一的操作系统;而是指一系列的Unix家族:Sun OS,Sun Solaris, IBM AIX, HP-UX, IRIX, Digital Unix, BSD, FreeBSD, NetBSD, OpenBSD, Pyramid, SCO Unix等等操作系统。本文将对通称为Unix的操作系统做一简介。 什么是Unix ? 1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi-processor、multi-level)的MULTICS操作系统。直到1969年,因MULTICS计划的工作进度太慢,该计划就被停了下来。当时,Ken Thompson(后被称为Unix之父)已经有一个称为「星际旅行」的程序在GE-635的机器上跑,但是反应非常的慢,正巧也被他发现了一部被闲置的PDP-7(Digital的主机),Ken Thompson和Dernis Ritchie就将「星际旅行」的程序移植到PDP-7上。而这部PDP-7就此在整个计算机历史上留下了芳名。 MULTICS 其实是"MULTiplexed Information and Computing System"的缩写,在1970年时,那部PDP-7却只能支持两个使用者,当时,Brian Kernighan 就开玩笑地戏称他们的系统其实是:"UNiplexed Information and Computing System",缩写为"UNICS",后来,大家取其谐音,就称其为"Unix"了。1970年可称为是Unix元年。 1971年,他们申请了一部PDP-11/20,申请的名义是:要发展文书处理系统。该提案被获采纳,他们也发展出了一套文书处理系统 ─ 就是现在Unix操作系统里面文书处理系统(nroff/troff)的前身。有趣的是,没有多久,贝尔实验室的专利部门真的采用了这套系统作为他们处理文件的工具,而贝尔实验室的专利部门也就顺理成章地成为Unix的第一个正式使用者。当时,那部PDP-11/20只有0.5MB磁盘空间。而描述这整个系统的文件被标示为:"First Edition",版本日期是1970年11月。从此以后,Unix的版本就以系统文件的版别来称呼。 1973年,Ken Thompson 和 Dernis Ritchie发明了C语言之后,着手将Unix程序用高阶的C语言改写,这个时候已经是第四版了。C的前身叫B,也是他们两个人所发明的,为了改写Unix,他们将B语言做了一番改进,而成了C语言。这个划时代的动作让Unix能够很轻易的被移植到各种不同的机器上,只要修改少许的原始程序代码,整个Unix可以在很短时间内完成移植的动作。1974年,他们在"Communications of the ACM"正式发表了Unix,吸引了更多学术界的注意与参与。从此,Unix逐渐成为网络工作站的标准,让使用不同机器的使用者,都能使用类似的Unix操作系统,这对于网络世界的标准化有着很大的贡献。1975年第六版(6th Edition)发表,这是真正流通到贝尔实验室外的版本。1977年,UC BerKeley开始公开Pascal编译器,连带地发布了对6th Edition的改进程序代码,这就是所谓的"1 BSD"(1st Berkeley Software Distribution),也开创了Unix的另一个分支:BSD系列。另一个重要的历史因素是,在Unix的诞生初期,贝尔实验是还是一个大的集合体,包括贝尔电话公司以及西方电子(Western Electric Co.)。碍于反扥拉斯法的规定,它不能利用Unix做任何的商业行为,也因此,内部的管理阶层自然没有兴趣对Unix有任何的支持,Unix就全靠一群玩家在琢磨,主要人物当然还是Ken Thompson和Dennis Richie。1979年左右Ken Thompson 在柏克莱教授操作系统的课程,也就造就了一些学生成为Unix史上的重要人物。 总结: Unix 所指的是一种通常是由 C 语言所写成的操作系统,是一种多人多任务(Multi-user Multi-task)的操作系统,既然如此,Unix系统又是如何执行其工作?我们就需要了解组成Unix操作系统的主要部分。Unix主要是由三个部分所组成的:「系统核心」(Kernel)、「文件系统」(File System) 和「命令解译程序」(Shell)。系统的最内层是所谓的「系统核心」,是由Bell Labs的Ken Thompson早在1969年所发展出来的,当初它是一些具有管理系统功能的程序,用来控制一些外围装置,如:磁盘、磁带、打印机、终端机及其它硬件装置等等,并协调系统做资源分配(因为Unix是一种多人多任务的操作系统)。「文件系统」负责管理所有使用该主机的使用者的文件、目录以及一些外围装置。系统的最外层是一个「命令解译程序」(一般称之为shell),shell做为使用者与「系统核心」之间的沟通接口。使用者所下达的命令,都是由shell解读之后,再传达给kernel,由Kernel对外围装置、系统资源等进行实际上的操作。 (责任编辑:admin) |