更新时间:2024-03-09 01:55
Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。Unix作为一种开发平台和台式操作系统获得了广泛使用,主要用于工程应用和科学计算等领域。
UNIX系统是一个分时系统。最早的UNIX系统于1970年问世。此前,只有面向批处理作业的操作系统,这样的系统对于需要立即得到响应的用户来说是太慢了。在60年代末,Kenneth Thompson和Dennis Ritchie都曾参加过交互方式分时系统Multics的设计,而开发该系统所使用的工具是CTSS。这两个系统在操作系统的发展过程中都产生过重大影响。在此基础上,在对当时现有的技术进行精选提炼和发展的过程中,K.Thompson于1969年在小型计算机上开发UNIX系统,后于1970年投入运行。
1972年,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系统以便打开销路、争取市场。
2020年,苹果发布操作系统升级版本,将UNIX操作系统的强大功能和苹果电脑的易用性相结合,提高了电脑的运行速度和电池寿命。
UNIX系统在计算机操作系统的发展史上占有重要的地位。它确实对已有技术不断作了精细、谨慎而有选择的继承和改造,并且,在操作系统的总体设计构想等方面有所发展,才使它获得如此大的成功。UNIX系统的主要特点表现在以下几方面:
1、UNIX系统在结构上分为核心程序(kernel)和外围程序(shell)两部分,而且两者有机结合成为一个整体。核心部分承担系统内部的各个模块的功能,即处理机和进程管理、存储管理、设备管理和文件系统。核心程序的特点是精心设计、简洁精干,只需占用很小的空间而常驻内存,以保证系统的高效率运行。外围部分包括系统的用户界面、系统实用程序以及应用程序,用户通过外围程序使用计算机。
UNIX的kernel是操作系统的枢纽,它为程序分配时间和内存,处理文件存储和响应系统调用的通信。shell作为用户和内核之间的一个接口。当用户登录时,登录程序检查用户名和密码,然后启动另一个称为shell的程序。shell是一个命令行解释器(CLI--command line interpreter)。它解释用户输入的命令,并安排它们被执行。这些命令本身就是程序:当它们终止时,shell会给用户另一个提示。
2、UNIX系统提供了良好的用户界面,具有使用方便、功能齐全、清晰而灵活、易于扩充和修改等特点。UNIX系统的使用有两种形式:一种是操作命令,即shell语言,是用户可以通过终端与系统发生交互作用的界面;另一种是面向用户程序的界面,它不仅在汇编语言,而且在C语言中向用户提供服务。
3、UNIX系统的文件系统是树形结构。它由基本文件系统和若干个可装卸的子文件系统组成,既能扩大文件存储空间,又有利于安全和保密。
4、UNIX系统把文件、文件目录和设备统一处理。它把文件作为不分任何记录的字符流进行顺序或随机存取,并使得文件、文件目录和设备具有相同的语法语义和相同的保护机制,这样既简化了系统设计,又便于用户使用。
5、UNIX系统包含有非常丰富的语言处理程序、实用程序和开发软件用的工具性软件,向用户提供了相当完备的软件开发环境。
6、UNIX系统的绝大部分程序是用C语言编程的,只有约占5%的程序用汇编语言编程。C语言是一种高级程序设计语言,它使得UNIX系统易于理解、修改和扩充,并且具有非常好的移植性。
7、UNIX系统还提供了进程间的简单通信功能。
UNIX中的所有东西要么是文件,要么是进程。进程是一个执行中的程序,由一个唯一的PID(进程标识符)来识别;文件是一个数据的集合。它们是由用户使用文本编辑器、运行编译器等创建的。
操作系统要管理计算机系统的硬件资源和软件资源,以便为用户所使用。硬件资源一般指CPU(中央处理机)、存储器(内存和外存)、外部设备等。软件资源是指系统程序和数据,即操作系统、系统实用程序及应用软件,以及用户的程序和数据,它们都以文件的方式存放在存储器中。操作系统由若干个功能模块有机地联系在一起,协调地进行工作。这些模块是:处理机和进程管理模块、存储管理模块、设备管理模块、文件系统和用户界面。
由于处理机(CPU)是计算机中关键的资源,进程的执行与CPU密切相关,因此处理机和进程管理模块可简称为进程管理模块。确定哪些作业将调入内存运行和完成运行后撤出内存的工作称为作业调度。把如何控制一个作业在运行阶段的三个状态间的转换称为进程调度。因而,如何充分发挥资源的利用率,使响应时间短,使各用户作业等待执行的时间最短,是制订相应的作业调度算法和进程调度算法的原则。只是在不同的操作系统中,对以上目标有不同的着重点,因而调度算法也就有所不同。
存储管理是对作业从进入就绪状态起到运行结束之间所使用的存储器(包括内存和外存)进行管理。可以将存储管理模块的任务分为存储分配、地址映射和存储保护3部分。
存储分配
一个程序在编译和链接后,得到一个称为内存映像的文件。该文件描述了这个程序在运行时所需要的内存大小,其中包括代码和数据区的地址。这些地址称为逻辑地址,并且以首地址0为参考地址。每当一个作业调入内存,进入就绪状态,存储管理模块就要根据可利用的内存空间与作业所需要的内存两者进行计算,给该作业分配相应的内存空间。
地址映射
将一个作业装入内存,意味着一个进程将被创建。存储管理模块会把该作业的映像文件首地址(为零)对准内存中进程的首地址。这个进程的首地址或起始地址是内存中的物理地址,称为偏移量(offset)。映像文件的逻辑地址加上偏移量,得到内存中的地址值均为物理地址。计算逻辑地址到物理地址的转换工作称为地址映射。映像中所有的逻辑地址都可转换为物理地址。
内存保护
内存空间总是被若干个进程分享,其中包括操作系统本身要常驻在内存中的那一部分。内存保护的任务是对内存空间中已划分出的区域,知道它们各属于哪些进程,并且知道每个进程有权访问的区域。每当一个进程执行过程中需要访问某个地址时,存储管理模块就要检查一下这个进程是否有权访问这个物理地址。通常,每个进程在内存中的区域是该进程可以访问的合法地址。如果访问的地址落在该进程的区域之外,即产生了非法访问。一旦遇到非法访问,内存保护就要拒绝访问,并进行出错处理。
外部设备包括文件存储介质,例如磁盘、磁带、光盘、硬盘等输入输出设备,例如字符终端、图形终端、各种打印机、绘图仪、显示器等;以及专用的输入输出设备,例如数据采集仪、图像摄入装置、音频输入输出设备等。
设备管理模块的任务是为用户提供方便和统一的界面,并根据作业对设备的申请,合理地分配这些资源,根据设备的性能和作用对设备分类,再用不同的驱动程序去驱动这些设备工作,以提高设备的效率。
文件系统又可称为信息管理模块,或者文件管理模块,主要负责对软件资源的管理。所有的软件资源都以文件的形式存放在存储介质中,并以文件为单位,在计算机中传递信息。因此,文件被定义为一组相关信息元素的集合。所有的文件在计算机中形成一个文件系统,虽然与操作系统的一个管理模块同名,但是由于它们出现的场合及上下文不同,通常是可以区分的。
用户界面(User interface)又称为用户接口。用户通过用户接口使用操作系统。良好的用户接口将使用户感觉到操作系统的友好和方便。用户接口通常包括作业控制语言、操作语言和系统调用。
1989年下半年,C程序设计语言的ANSI标准X3.159-1989得到批准。此标准被也采纳为国际标准ISO/IEC9899:1990。ANSI是美国国家标准学会(American National Standards Institute)的缩写,它是国际标准化组织(International Organization for Standardization,ISO)中代表美国的成员。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标准的支持也就越来越多。
POSIX是一个最初由IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师学会)制订的标准族。POSIX指的是可移植操作系统接口(Portable Operating System Interfacc)。它原来指的只是IEEE标准1003.1-1988(操作系统接口),后来则扩展成包括很多标记为1003的标准及标准草案。
Single UNIX Specification(SUS,单一UNIX规范)是POSIX.1标准的一个超集,它定义了--些附加接口扩展了POSIX.1规范提供的功能。POSIX.1相当于Single UNIX Specification中的基本规范部分。
POSIX.1中的X/Open系统接口(X/Open System Interface,XSI)选项描述了可选的接口,也定义了遵循XSI(XSI conforming)的实现必须支持POSIX.1的哪些可选部分。这些必须支持的部分包括:文件同步、线程栈地址和长度属性、线程进程共享同步以及XOPEN__UNIX符号常量。只有遵循XSI的实现才能称为UNIX系统。
FIPS代表的是联邦信息处理标准(Federal Information Processing Standard),这一标准是由美国政府发布的,并由美国政府用于计算机系统的采购。FIPS151-1(1989年4月)基于IEEE标准1003.1-1988及ANSIC标准草案。此后是FIPS151-2(1993年5月),它基于IEEE标准1003.1-1990。在POSIX.1中列为可选的某些功能,在FIPS151-2中是必需的。所有这些可选功能在POSIX.1-2001习中已成为强制性要求。
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系统在网络支持方面保持领先地位。
Solaris
Solaris曾是使用最广泛、最成功的商业UNIX实现版本。Sun公司的操作系统最初叫做Sun OS,主要基于BSD UNIX版本。
SCO UNIX(x86)
SVR3.2,影响较大的PC UNIX。
Ultrix(DEC)
根据4.2BSD再加上许多4.3BSD的东西。
Xenix(x86)
Intel硬件平台上的UNIX,以SVR2为基础。
类Unix操作系统具有可靠性高、安全性强和数据库支持功能强大等优点,已成为最为安全、可靠、流行的大型服务器操作系统,被广泛应用于各行业的工业服务器设备。然而,此类系统存在操作复杂、普适性低以及缺乏有效监测与维护手段等问题,并存在重要数据丢失和系统崩溃的风险,大幅缩短了硬件设备使用寿命。
常用的类Unix系统服务器硬件检测方法包括基于Linux Live技术的检测方法、基于Windows togo技术的检测方法和基于类Unix系统硬件检测软件的方法。虽使用Linux Live技术能抽取出开源软件的源代码,灵活定制硬件自动检测软件及生成所需的精简版检测报告。但由于Linux Live系统自带的软件驱动库版本老旧且不完整,在不同硬件配置机器间的检测中,需耗费大量时间从系统ISO驱动文件库中查找及安装驱动程序(>30min),且常由于缺乏与最新服务器硬件匹配的驱动文件,造成系统无法启动。基于Windows togo技术的检测方法虽拥有完整的系统,但相较于基于Linux Live技术的检测方法需要占用的U盘空间大(16GB以上),且对于U盘的读取速度要求过高。而基于类Unix系统硬件检测软件的方法又存在检测功能单一、兼容性不足和操作难度大的问题。
UNIX和Linux的授权方式不同
从根本上讲,UNIX和Linux最大的区别在于前者是对源代码实行知识产权保护的传统商业软件。在UNIX发展初期,当时的UNIX版权归AT&T公司所有。为了促进UNIX的发展,AT&T公司以低廉甚至免费的许可将UNIX源码授权给学术机构做研究或教学之用,许多机构在此源码基础上加以扩充和改进,形成了所谓的UNIX衍生版,这些衍生版反过来也促进了UNIX的发展。
后来AT&T公司意识到了UNIX的商业价值,不再将UNIX源码授权给学术机构,并对之前的UNIX及其变种声明了版权权利。这对UNIX的发展产生了很大的影响。在随后的几十年中,UNIX的发展经常伴随着产权纠纷。对于UNIX来说,应用比较广泛的发行版大多数都是商业公司来维护,例如OracleSolaris、IBMAIX以及HPUX等。
Linux从一开始就是遵循GNU通用公共许可协议(GNU General Publice License,简称GNU GPL或GPL),GPL授予程序接受人以任何目的运行此程序的自由、再发行复制件的自由以及改进程序、并公开发布改进的自由。因此,任何个人或者公司都可以在GPL的允许范围之内对Linux的代码进行修改,并且进行再发行。另外,Linux可以运用于任何的领域,包括商业应用。
UNIX和Linux不存在技术上面的传承关系
尽管Linux的设计思想受到了MINIX的很大影响,但是这种影响并不是技术上的,更多的是理念上的。Linux并没有使用UNIX的一行代码,是Linux完全从头构建的操作系统。因此,Linux不是UNIX的衍生版,它是一个全新的操作系统。
UNIX和Linux对于硬件的要求不同
由于长期以来,UNIX都是由一些大型的公司在维护,因此UNIX通常与这些公司所生产的硬件相配套。例如,Oracle Solaris在很长的一段时间都只有SPARC平台的版本,HP-UX可以在HP的PA-RISC处理器、Intel的Itanium处理器的电脑上运行、IBMAlX则运行在IBM的Power PC架构之上。正因为如此,很大程度上限制了UNIX的广泛应用。
UNIX是一个功能非常全面的操作系统,在某些方面超越Linux
经过30多年的不断发展,UNIX的一些基本技术已变得十分成熟,有的已成为各类操作系统的常用技术。无数的实践表明,UNIX是能达到大型主机可靠性要求的少数操作系统之一。许多UNIX大型:主机和服务器在国内外的大型企业中每天24小时不间断地运行。例如,不少大企业或政府部门,将其整个企业/部门信息系统建立并运行在以UNIX为主服务器的客户机/服务器架构上。
Linux成功地模仿了UNIX系统和功能,它能够在普通PC计算机上实现全部的UNIX特性,具有多任务、多用户的能力。更为重要的是,Linux是一个开放源代码的产品,任何个人或者公司都可以修改Linux内核的源代码,实现或者增强自己想要的功能。
实际上,UNIX与Linux的区别还有很多,例如,UNIX拥有强大的网络功能,作为互联网基石的TCP/IP协议就是在UNIX系统上开发和发展起来的。UNIX多用于超级计算机、小型机或者工作站,这些技术的成长与UNIX是分不开的。UNIX是历史上影响最大、最成功的操作系统。
联系
Linux的起源可以追溯到古老的UNIX系统。正因为受到了UNIX的影响,才诞生了Linux。Linux继承了UNIX的许多优良传统,例如强大的网络功能、完善的命令以及良好的健壮性与稳定性。无论是从外观上,还是从功能上,UNIX与Linux都是非常相似的。例如,UNIX的大部分常用命令都可以在Linux中找到相应的命令。
另外,Linux同样是一个遵循POSIX标准的操作系统。因此,许多UNIX上面的应用可以非常方便地移植到Linux上面。同样,Linux上面的应用也可以非常方便地转移到UNIX上面。