Unix是一个分时操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。Unix作为一种开发平台和台式操作系统获得了广泛使用,目前主要用于工程应用和科学计算等领域。
Unix 是 20 世纪 70 年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。Unix 作为一种开发平台和台式操作系统获得了广泛使用,目前主要用于工程应用和科学计算等领域。
UNIX 系统是一个分时系统。最早的 UNIX 系统于 1970 年问世。此前,只有面向批处理作业的操作系统,这样的系统对于需要立即得到响应的用户来说是太慢了。在 60 年代末,Kenneth Thompson 和 Dennis Ritchie 都曾参加过交互方式分时系统 Multics 的设计,而开发该系统所使用的工具是 CTSS。这两个系统在操作系统的发展过程中都产生过重大影响。在此基础上,在对当时现有的技术进行精选提炼和发展的过程中,K.Thompson 于 1969 年在小型计算机上开发 UNIX 系统,后于 1970 年投入运行。
1973 年,DennisRitchie 开发出 C 语言,用来改写原来用汇编语言编写的 UNIX,由此产生了 UNIX VersionV。1974 年,Kenneth Thompson 和 Dennis Ritchie 合写的“The UNIX Time-Sharing System”在 Communication of ACM 上发表,正式向外界披露了 UNIX 系统。
当时,PDP-11 系列小型计算机在世界各地已经得到广泛应用,UNIX 系统一开发后便广泛配备于美国各大学的 PDP-11 系列计算机上,由此为 UNIX 的广泛应用创造了物质条件。
1978 年,UNIX Version VI 发表,随后又于 1979 年用于 VAX-11 超级小型机。以后,不断地出现各种新的版本。美国电话电报公司分别于 1981 年和 1983 年发表 AT&T UNIX SystemII 和 UNIX SystemV。美国加州大学伯克莱分校也先后发表了 UNIX 的版本 BSD4.1,BSD4.2 和 BSD4.3。
现在 UNIX 系统的用户日益增多,应用范围也日益扩大。无论在各种类型的微型机、小型机,还是在中、大型计算机,以及在计算机工作站甚至个人计算机上,很多都已配有 UNIX 系统。不仅新推出的机型配有 UNIX 系统,而且一些历史较久的生产厂商,也竞相将原有机型配上 UNIX 系统以便打开销路、争取市场。
UNIX 系统在计算机操作系统的发展史上占有重要的地位。它确实对已有技术不断作了精细、谨慎而有选择的继承和改造,并且,在操作系统的总体设计构想等方面有所发展,才使它获得如此大的成功。UNIX 系统的主要特点表现在以下几方面:
(1)UNIX 系统在结构上分为核心程序(kernel)和外围程序(shell)两部分,而且两者有机结合成为一个整体。核心部分承担系统内部的各个模块的功能,即处理机和进程管理、存储管理、设备管理和文件系统。核心程序的特点是精心设计、简洁精干,只需占用很小的空间而常驻内存,以保证系统的高效率运行。外围部分包括系统的用户界面、系统实用程序以及应用程序,用户通过外围程序使用计算机。
(2)UNIX 系统提供了良好的用户界面,具有使用方便、功能齐全、清晰而灵活、易于扩充和修改等特点。UNIX 系统的使用有两种形式:一种是操作命令,即 shell 语言,是用户可以通过终端与系统发生交互作用的界面;另一种是面向用户程序的界面,它不仅在汇编语言,而且在 C 语言中向用户提供服务。
(3)UNIX 系统的文件系统是树形结构。它由基本文件系统和若千个可装卸的子文件系统组成,既能扩大文件存储空间,又有利于安全和保密。
(4)UNIX 系统把文件、文件目录和设备统一处理。它把文件作为不分任何记录的字符流进行顺序或随机存取,并使得文件、文件目录和设备具有相同的语法语义和相同的保护机制,这样既简化了系统设计,又便于用户使用。
(5)UNIX 系统包含有非常丰富的语言处理程序、实用程序和开发软件用的工具性软件,向用户提供了相当完备的软件开发环境。
(6)UNIX 系统的绝大部分程序是用 C 语言编程的,只有约占 5%的程序用汇编语言编程。C 语言是一种高级程序设计语言,它使得 UNIX 系统易于理解、修改和扩充,并且具有非常好的移植性。
(7)UNIX 系统还提供了进程间的简单通信功能。
操作系统要管理计算机系统的硬件资源和软件资源,以便为用户所使用。硬件资源一般指 CPU(中央处理机)、存储器(内存和外存)、外部设备等。软件资源是指系统程序和数据,即操作系统、系统实用程序及应用软件,以及用户的程序和数据,它们都以文件的方式存放在存储器中。操作系统由若干个功能模块有机地联系在一一起,协调地进行工作。这些模块是:处理机和进程管理模块、存储管理模块、设备管理模块、文件系统和用户界面。
处理机和进程管理模块
由于处理机(CPU)是计算机中关键的资源,进程的执行与 CPU 密切相关,因此处理机和进程管理模块可简称为进程管理模块。我们把确定哪些作业将调入内存运行和完成运行后撤出内存的工作称为作业调度。把如何控制一个作业在运行阶段的三个状态间的转换称为进程调度。因而,如何充分发挥资源的利用率,使响应时间短,使各用户作业等待执行的时间最短,是制订相应的作业调度算法和进程调度算法的原则。只是在不同的操作系统中,对以上目标有不同的着重点,因而调度算法也就有所不同。
存储管理模块
存储管理是对作业从进入就绪状态起到运行结束之间所使用的存储器(包括内存和外存)进行管理。可以将存储管理模块的任务分为存储分配、地址映射和存储保护 3 部分。
存储分配
一个程序在编译和链接后,得到一个称为内存映像的文件。该文件描述了这个程序在运行时所需要的内存大小,其中包括代码和数据区的地址。这些地址称为逻辑地址,并且以首地址 0 为参考地址。每当一个作业调入内存,进入就绪状态,存储管理模块就要根据可利用的内存空间与作业所需要的内存两者进行计算,给该作业分配相应的内存空间。
地址映射
将一个作业装入内存,意味着一个进程将被创建。存储管理模块会把该作业的映像文件首地址(为零)对准内存中进程的首地址。这个进程的首地址或起始地址是内存中的物理地址,称为偏移量(offset)。映像文件的逻辑地址加上偏移量,得到内存中的地址值均为物理地址。计算逻辑地址到物理地址的转换工作称为地址映射。映像中所有的逻辑地址都可转换为物理地址。
内存保护
内存空间总是被若干个进程分享,其中包括操作系统本身要常驻在内存中的那一部分。内存保护的任务是对内存空间中已划分出的区域,知道它们各属于哪些进程,并且知道每个进程有权访问的区域。每当一个进程执行过程中需要访问某个地址时,存储管理模块就要检查一下这个进程是否有权访问这个物理地址。通常,每个进程在内存中的区域是该进程可以访问的合法地址。如果访问的地址落在该进程的区域之外,即产生了非法访问。一旦遇到非法访问,内存保护就要拒绝访问,并进行出错处理。
ISO C
1989 年下半年,C 程序设计语言的 ANSI 标准 X3.159-1989 得到批准。此标准被也采纳为国际标准 ISO/IEC9899:1990。ANSI 是美国国家标准学会(American National Standards Institute)的缩写,它是国际标准化组织(International Organization for Standardization,ISO)中代表美国的成 25]员。IEC 是国际电子技术委员会(International Electrotechnical Commission)的缩写。
ISO C 标准现在由 ISO/IEC 的 C 程序设计语言国际标准工作组维护和开发。ISO C 标准的意图是提供 C 程序的可移植性,使其能适合于大量不同的操作系统,而不只是适合 UNIX 系统。此标准不仅定义了 C 程序设计语言的语法和语义,还定义了其标准库。
1999 年,ISO C 标准被更新,并被批准为 ISO/IEC 9899:1999,它显著改善了对进行数值处理的应用软件的支持。除了对某些函数原型增加了关键字 restrict 外,这种改变并不影响本书中描述的 POSIX 接口。restrict 关键字告诉编译器,哪些指针引用是可以优化的,其方法是指出指针引用的对象在函数中只通过该指针进行访问。
1999 年以来,已经公布了 3 个技术勘误来修正 ISO C 标准中的错误,分别在 2001 年、2004 年和 2007 年公布。如同大多数标准一样,在批准标准和修改软件使其符合标准两者之间有一段时间延迟。随着供应商编译系统的不断演化,对最新 ISO C 标准的支持也就越来越多。
FreeBSD
FreeBSD 是完全开放源代码的类 UNIX 系统,它的发展始于 1993 年,源于 386/BSD。FreeBSD 以易用性与高性能而著称。在最初的发行版中,FreeBSD 只支持 PC 硬件架构,后来又被移植到其他的硬件上面。
NetBSD
NetBSD 同样也是一个完全开放源代码的类 UNIX 系统。最初 FreeBSD 只能运行在 PC 硬件上,为了 FreeBSD 能够兼容其他的硬件,便产生了一个 FreeBSD 的衍生版 NetBSD。可以说,NetBSD 就是为了提高 FreeBSD 的可移植性而产生的一个 BSD 发行版。
OpenBSD
OpenBSD 同样也是一个从 BSD 派生出的类 UNIX 操作系统。与 NetBSD 不同,OpenBSD 的关注点在于安全。著名的 Open SSH 协议就是最先在 OpenBSD 上实现的。OpenBSD 的吉祥物是一个名称为 Puffy 的河豚。
Open Solaris
在 UNIX 的各发行版中,Open Solaris 是唯一个由商业版转为开放源代码的个例。
Oracle Solaris
在 UNIX 商业版中,Solaris 是一个非常优秀的操作系统。
IBM AIX
AIX(Advanced Interactivee Xecutive)是 IBM 公司所有的 UNIX 操作系统。AIX 源自于 System V Release 3,运行在 IBM 公司的 Power PC 硬件架构之上。
HP-UX
HP-UX(Hewlett Packard UNIX,HPUX)是美国惠普公司在 System v 的基础上开发的 UNIX 操作系统。
UNIX V6
1975 年发表的 UNIX V6 版是比较成熟的版本,贝尔实验室免费向美国各大学提供该版本,并开始广泛地配备于各大学的 PDP-11 系列计算机上。1977 年,UNIX 首次移植到非 PDP 类型的计算机上。
BSD UNIX
除了贝尔实验室外,另一个使用比较广泛的 UNIX 版本是美国加州大学贝克利分校开发的 BSD UNIX,该版本大量安装在 SUN 工作站上。1993 年推出了 4.4BSD 版本。BSD 是网络的主要平台,对 DARPA 的 TCP/IP 提供了支持,其中的网络文件系统(NFS)提供了与很多计算机机种的连接,NFS 及 AT&T 开发的远程文件共享(RFS)使 UNIX 系统在网络支持方面保持领先地位。
MINIX
由 Andrews.Tanenbaum 设计的 MINIX 是一个小巧玲珑又五脏俱全的 UNIX 型结构的操作系统,把主体部分割裂成分立的模块,程序编制得使用户易于理解、易于修改,过程短小精悍,并强调训练学生的操作、调试、修改方面的动手能力。
Solaris
Solaris 曾是使用最广泛、最成功的商业 UNIX 实现版本。Sun 公司的操作系统最初叫做 Sun OS,主要基于 BSD UNIX 版本。
类 Unix 操作系统具有可靠性高、安全性强和数据库支持功能强大等优点叫,已成为最为安全、可靠、流行的大型服务器操作系统,被广泛应用于各行业的工业服务器设备。然而,此类系统存在操作复杂、普适性低以及缺乏有效监测与维护手段等问题,并存在重要数据丢失和系统崩溃的风险,大幅缩短了硬件设备使用寿命。
目前常用的类 Unix 系统服务器硬件检测方法包括基于 Linux Live 技术的检测方法、基于 Windows togo 技术的检测方法和基于类 Unix 系统硬件检测软件的方法。虽使用 Linux Live 技术能抽取出开源软件的源代码,灵活定制硬件自动检测软件及生成所需的精简版检测报告。但由于 Linux Live 系统自带的软件驱动库版本老旧且不完整,在不同硬件配置机器间的检测中,需耗费大量时间从系统 ISO 驱动文件库中查找及安装驱动程序(>30min),且常由于缺乏与最新服务器硬件匹配的驱动文件,造成系统无法启动。基于 Windows togo 技术的检测方法虽拥有完整的系统,但相较于基于 Linux Live 技术的检测方法需要占用的 U 盘空间大(16GB 以上),且对于 U 盘的读取速度要求过高。而基于类 Unix 系统硬件检测软件的方法又存在检测功能单一、兼容性不足和操作难度大的问题。