电子信息科学技术导论
上QQ阅读APP看书,第一时间看更新

3.4 计算机的软件系统

3.4.1 计算机软件的基础知识

计算机软件是指用计算机指令和算法语言编写的程序,以及运行程序所需的文档、数据。软件的功能是利用计算机本身提供的逻辑功能来合理地组织计算机的工作,以便简化或代替人们使用计算机过程中的各个环节,并为用户提供一个便于掌握、操作简便的工作环境。在计算机产生的初期,人们普遍认为软件就是程序。1983年,IEEE给软件下了一个明确的定义:软件是计算机程序、方法、规则相关的文档以及在计算机上运行所必需的数据。计算机软件系统又可以分为系统软件、应用软件和数据库管理软件。

(1)系统软件

系统软件是一种综合管理计算机硬件和软件资源,为用户提供工作环境和开发工具的大型软件;是提供给用户的系统资源;也是用户、应用软件和计算机硬件之间的接口。系统软件主要有操作系统、各种程序语言的翻译系统、诊断程序和故障处理程序、数据库管理系统、网络软件等。操作系统是计算机的大管家,它负责管理和控制计算机各个部件协调一致地工作,是一个最基本、最重要的系统软件。一台计算机必须安装了操作系统才能正常工作。DOS、Windows、UNIX、Linux等都是计算机上常用的操作系统软件。

(2)应用软件

应用软件是计算机用户在各自应用领域中为解决某些具体问题而编制的软件,例如文字处理软件Word等。还有为各种不同用途编制的专用软件,如财务管理软件、辅助教学软件等。

(3)数据库管理软件

人们用计算机进行信息处理的主要目的是从大量的数据中提取所需要的相关信息,这就要求对数据进行组织、存储、维护和使用。随着计算机技术的发展,数据管理的方法也在发展,从人工管理、文件管理最终发展成使用数据库系统来管理数据。

数据库管理系统(Database Management System,DBMS)是数据库系统中对数据进行管理的软件。它可以完成数据库的定义和建立、数据库的基本操作、数据库的运行控制等功能。目前比较流行的数据库管理系统有FoxBase、FoxPro、Visual FoxPro、Informix、Oracle等,其中Visual FoxPro就是一种在微型计算机上常用的、基于关系模型的数据库管理系统。

3.4.2 程序设计基础

1.程序设计语言

计算机将根据人们预定的安排,自动进行数据的快速加工处理。人们预定的安排是通过一连串指令来表达的,这个指令序列就称为程序。一个指令规定了计算机执行的一个基本操作,一个程序规定了计算机完成的一个完整任务。人们要利用计算机解决实际问题,一般首先要编制程序。程序设计语言就是用户来编写程序的语言,它是人们与计算机之间交换信息的工具。通常,用户在用程序设计语言编写程序时,必须要满足相应的语法格式,并且逻辑要正确。只有这样,计算机才能根据程序中的指令作出相应的动作,最后完成用户所要求完成的各项工作。程序设计语言是软件系统的重要组成部分,一般它可分为机器语言、汇编语言和高级语言三类。

(1)计算机指令

一种计算机所能识别的一组不同指令的集合,称为该种计算机的指令集或指令系统。计算机的指令一般由两部分组成:指令操作码和指令操作数。操作码表示计算机要执行的基本操作,操作数则表示运算的数值或该数值存放的地址。

一种计算机的指令系统能比较充分地说明该种机器的运算和处理能力,一般微型计算机有几十条到几百条不同的指令,这些指令可按其操作功能的不同可分为数据处理指令、数据传送指令、程序控制指令和状态管理指令四大类。需要注意的是,并非所有的计算机都具有上述全部各类的指令,指令系统完备可以使程序较短,且运行速度较快。但较大的指令系统必然会使指令变长,使机器结构复杂。实际上,当指令系统中缺少某一些指令时,完全可以在程序设计中用其他指令的组合来完成同样的操作。例如,乘法指令可用加法指令实现,除法指令可用减法指令实现。

计算机的指令系统与硬件结构密切相关,而且还会影响到系统软件和应用软件,因此,指令系统是设计一台计算机的基本出发点。由此,人们针对不同的指令系统,设计了复杂指令系统计算机(Complex Instruction Set Computer,CISC)和精简指令系统计算机(Reduced Instruction Set Computer,RISC)。CISC使用的指令系统较为复杂,当前不少计算机的指令多达几百条。庞大的指令虽然有利于程序设计,但也会使计算机的研制周期变长,系统难以调试和维护,并有可能降低系统的整体性能。和CISC相反,RISC不仅简化了指令的条数,使计算机的结构更加简单合理,而且还通过减少程序执行的机器周期数来提高计算机的速度,但由于指令的简化,因此存在着不兼容的问题。

(2)机器语言

所谓机器语言,是指直接用计算机指令作为语句与计算机交换信息,一条机器指令就是一个机器语言的语句。机器指令是用一串0和1不同组合的二进制编码表示的,形似二进制数,当代表指令时,实际上是使计算机完成某个规定的动作。指令的格式和含义是设计者规定的,一旦规定好之后,硬件电路就要严格根据这些规定设计和制造,所以制造出来的机器也只能识别这种二进制信息。不同的机器,指令的编码不一样,指令系统中的指令条数也不同。具体指令因机器不同而异,是面向机器的。

直接使用机器语言编写程序是很困难的。它的缺点很多:指令难记、容易出错,修改困难,程序可读性极差,尤其是程序只能用在一种型号的机器上,换一种机型指令就全变了。唯一优点是机器能直接识别这种程序,不必再做其他辅助工作了。

(3)汇编语言

为了克服机器语言的缺点,人们想了一个办法,用一些容易辨别的符号代替机器指令,汇编语言就是指用这样一些符号作为编程用的语言,所以汇编语言实际上是一种符号语言。相对于机器语言,汇编语言中的符号含义明确,容易记忆,可读性好,容易查错,修改也方便。然而机器不能直接识别汇编语言,必须通过翻译程序把它转换为对应的机器语言程序。这个工作由一个叫做“汇编程序”的语言处理程序来完成,翻译出的程序叫做“目标程序”。实质上,汇编语言仍然是一种面向机器的语言,必须了解机器结构才能编程,现在广泛用于实时控制等领域中。汇编过程如图3-8所示。

图3-8 汇编过程

(4)高级语言

汇编语言虽然较机器语言有所改善,但并未从根本上摆脱指令系统的束缚,它与指令仍然是一一对应的,而且与自然语言相距甚远,很不符合人们的习惯。为了从根本上改变语言体系,必须从两方面下功夫:一是力求接近自然语言,二是力求脱离具体机型,使语言与指令系统无关,达到程序通用的目的。在20世纪50年代末人们创造出独立于机器的、表达方式接近于自然语言的高级语言。Fortran是第一个正式出现的高级语言,现在仍被广泛使用。除此之外,BASIC、Pascal、C、C++、Java也是经常使用的高级语言。近年来,为了适应面向对象的程序设计方法,又出现了可视化编程语言,如Visual Basic、Visual C++等。

高级语言又称算法语言,因为它是独立于机型、面向应用、实现算法的语言。高级语言较之汇编语言更接近于自然语言,通常描述问题与计算公式大体上一致。由于高级语言比较接近自然语言,当然就远离了机器语言,因此用高级语言编写的源程序,必须由一个承担翻译工作的处理程序,把高级语言源程序翻译成机器能识别的目标程序。翻译处理程序的运行有两种工作方式:一种是解释方式,另一种是编译方式。编译和解释的过程分别如图3-9、图3-10所示。

图3-9 编译过程图

图3-10 解释过程图

解释方式就像口头翻译,计算机语言解释程序对源程序一个语句一个语句地解释执行,不产生目标程序。程序执行时,解释程序随同源程序一起参加运行。解释方式执行速度慢,但可以进行人机对话,随时可以修改执行中的源程序,对初学者来说比较方便,BASIC语言大多采用了解释方式。

编译方式就像笔译方式,对源程序经过编译处理后,产生一个与源程序等价的目标程序,由于目标程序的执行与编译程序无关,所以源程序一旦编译成功后,目标程序就可以脱离编译程序独立存在而运行。编译方式执行速度快,但不灵活,若修改源程序,则必须从头重新编译。Fortran、Pascal、C等大多数高级语言都是采用编译方式处理的。

2.程序设计方法

结构化分析是一种以系统中数据的加工处理过程分析为主要内容的分析方法。结构化设计是一种以模块功能及其处理过程设计为主要内容进行详细设计的方法。其概念最早由E.W.Dijikstra在1965年提出,它是软件发展的一个重要的里程碑。

结构化开发方法也称为面向过程的方法或传统软件工程开发方法,它的观点是采用自顶向下、逐步求精的程序设计方法。任何程序都可由顺序、选择、循环三种基本控制结构构造而成,如图3-11所示。

图3-11 三种基本的控制结构

a)顺序结构 b)选择结构 c)循环结构

详细描述处理过程常用三种工具:图形、表格和语言;使用的手段主要有数据流图、数据字典、层次框图、流程图、结构化语言等。结构化程序设计的一般步骤是:①分析业务流程、分析数据信息的加工处理过程;②画出数据流图;③建立数据字典;④提出系统的总体逻辑方案;⑤细化数据流图;⑥确定模块的接口;⑦为每个模块确定采用的算法和数据结构;⑧根据实体-联系图(E-R图)设计数据库、根据模块算法编程等。

面向对象的开发方法根据现实问题直接抽象出对象、分析对象的行为和与行为相关的数据,对象间通过传递消息进行通信,从问题出发,模拟现实问题,建立系统模型,易于理解和实现。

3.程序设计步骤

程序设计就是用计算机语言编写程序的过程。一般有以下几个步骤。

1)问题定义:根据实际问题确定由计算机所做的工作及应完成的任务。

2)划分模块:将大任务分解,形成几个小任务,一直划分,直到不可再分为止。

3)确定数据结构:根据原始数据及输出形式,选择合适的数据结构。

4)确定算法:选取解决问题的合适算法。

5)画出框图或流程图:将算法形象化,以书面形式表达出来。

6)完成设计计划文档:统一各个不同模块的接口和风格。以书面文件形式表达,其中包括框图。

7)编写代码:按设计计划文档要求书写程序代码。

8)语法检查:静态检查程序代码,并与设计计划文档核对。

9)运行调试:上机运行程序代码并检查错误。

10)反复修改调试:对错误进行修改并重复步骤7)~10),直到成功为止。

11)系统测试:将各个不同模块链接,统一调试,再次重复步骤7)~10),完成整个系统后,进行相应的测试。

12)完成其他文档:整理并写出所有的文档资料。

4.程序设计风格

程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。在程序设计中要使程序结构合理、清晰,形成良好的编程习惯非常重要。编写的程序不仅要在机器上运行出正确的结果,而且要便于调试和维护。这就要求编写的程序不仅自己看得懂,也要让别人能看懂。随着计算机技术的发展和软件规模的增大,软件的复杂性也增强了。为了提高程序的可阅读性,要建立良好的编程风格。具体如下。

1)源程序文档化。标识符应按意取名;程序应加注释。

2)数据说明。数据说明顺序应规范,使数据的属性更易于查找,从而有利于测试、纠错与维护;一个语句说明多个变量时,各变量名按字典序排列;对于复杂的数据结构,要加注释,说明在程序实现时的特点。

3)语句构造。语句构造的原则是:简单直接,不能为了追求效率而使代码复杂化;为了便于阅读和理解,不要一行多个语句;不同层次的语句采用缩进形式,使程序的逻辑结构和功能特征更加清晰;要避免复杂的判定条件,避免多重的循环嵌套;表达式中使用括号以提高运算次序的清晰度等。

4)输入和输出。在编写输入和输出程序时需考虑以下原则:输入操作步骤和输入格式尽量简单;检查输入数据的合法性、有效性,报告必要的输入状态信息及错误信息;输入一批数据时,使用数据或文件结束标志,而不要用计数来控制;交互式输入时,提供可用的选择和边界值;当程序设计语言有严格的格式要求时,应保持输入格式的一致性;输出数据表格化、图形化。输入、输出风格还受其他因素的影响,如输入、输出设备,用户经验及通信环境等。

5)效率。效率指处理器对时间和存储空间的使用情况,对效率的追求明确以下几点:效率是一个性能要求,目标在需求分析后给出;追求效率需建立在不损害程序可读性或可靠性的基础上,要先使程序正确、清晰,再提高程序效率;提高程序效率的根本途径在于选择良好的设计方法、数据结构算法,而不是靠编程时对程序语句做调整。

3.4.3 数据结构与算法

计算机处理的对象是数据。数据结构的选择直接影响算法的选择和程序的效率。

1.数据结构的基本概念

数据结构是指数据之间的相互关系,即数据的组织形式。此处的“数据”,是指描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序处理的符号的集合。数据集合中的每一个个体称为数据元素,它是数据的基本单位。结构反映了数据元素相互之间存在的某种联系。因此,数据结构是带有结构的数据元素的集合。

数据结构研究的三个方面如下:

1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构。

2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构。

3)对各种数据结构进行的运算。

根据数据元素之间关系的不同特性,通常有下列4类基本结构:集合(数据元素间的关系是同属一个集合)、线性结构(数据元素间存在一对一的关系)、树形结构(结构中的元素间的关系是一对多的关系)和图(网)状结构(结构中的元素间的关系是多对多的关系)。数据结构作为一门学科主要研究数据的各种逻辑结构和存储结构,以及对数据的运算。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。

2.几种常见数据结构

(1)线性表

在数据处理中,大量数据均以表格形式出现,称为线性表。线性表是最简单、最常用的一种数据结构。线性表的逻辑结构是n个数据元素的有限序列:(a1a2a3,…,ai,…,an),数据元素之间呈线性关系。第一个元素无前驱,有一个后继;最后一个元素有一个前驱,无后继;其他元素有一个前驱和一个后继。

线性表的存储结构分为两类:一类是顺序存储结构(又称为静态存储结构),如图3-12所示;另一类是链式存储结构(又称为动态存储结构),如图3-13所示。

图3-12 顺序存储结构

图3-13 链式存储结构

顺序存储结构是用一组地址连续的存储单元来依次存放线性表中的元素。由于表中各个元素具有相同的属性,所以占用的存储空间相同。因此,在内存中可以通过地址计算直接存取线性表中的任一元素。这种结构的特点是逻辑上相邻的元素物理上也相邻。

在链式存储结构中,线性表的每个数据元素(结点)的存储区域包括数据区和指针区两个部分。数据区存放结点本身的数据,指针区存放其后继元素的地址(没有后继元素时设置为空字符(Null))。只要知道该线性表的起始地址(记录在头指针中),表中的各个元素就可通过其间的链接关系逐步找到。这种结构的特点是增、删、改结点都很方便,但每个结点占用较多的存储空间。

(2)堆栈和队列

堆栈简称为栈,是一种运算受限的线性表,即只能在表的一端(栈顶)进行插入和删除操作,表的另一端称为栈底,如图3-14所示。主要特点是“后进先出”,即后进栈的元素先处理。队列也是一种线形表,是一种先进先出(FIFO)的线性表。只允许在表的一端进行插入,在表的另一端进行删除。进行删除的一端叫作队列的头(队首),进行插入的一端叫作队列的尾(队尾),如图3-15所示。

图3-14 堆栈示意图

图3-15 队列示意图

(3)树

树形结构是一类重要的非线性数据结构,结点之间有分支,并具有层次关系的结构,如图3-16所示。它非常类似于自然界中的树,树形结构在客观世界中广泛存在。

图3-16 树的示意图

(4)图

图是一种较线性表与树更为复杂的数据结构,如图3-17所示,可以把树看成是简单的图。图的应用极为广泛,在语言学、逻辑学、人工智能、数学、物理、化学、计算机领域以及各种工程学科中有着广泛的应用。

图3-17 图的示意图

3.算法

算法是指完成一个任务所需要的具体步骤和方法,程序就是用计算机语言描述的算法。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题时,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。瑞士著名计算机科学家尼克劳斯·沃思(Niklaus Wirth)在1976年曾提出这样一个公式:算法+数据结构=程序。

(1)算法的特性

1)一个算法必须有零个或多个输入量。

2)有一个或多个输出量,输出量是算法计算的结果。

3)确定性:算法中的每一步应该是确定的并且能有效地执行且得到确定的结果,而不应当是模棱两可的。

4)有限性:一个算法的步骤序列是有限的,必须在有限操作之后停止,不能是无限的。

5)有效性:又称可行性。算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

(2)算法的描述

在将算法转化为高级语言源程序之前,通常先采用文字或图形工具来描述算法。文字工具如自然语言、伪代码等,图形工具如传统流程图、N-S流程图等。

1)自然语言。自然语言是人们日常所用的语言。使用自然语言不用专门训练,所描述的算法也通俗易懂。然而其缺点也是明显的:首先是由于自然语言的歧义性容易导致算法执行的不确定性;其次是由于自然语言表示的串行性,因此当一个算法中循环和分支较多时就很难清晰地表示出来;此外,自然语言表示的算法不便转换成用计算机程序设计语言表示的程序。

2)伪代码。伪代码是指不能够直接编译运行的程序代码,它是用介于自然语言和计算机语言之间的文字和符号来描述算法和进行语法结构讲解的一个工具。表面上它很像高级语言的代码,但又不像高级语言那样要接受严格的语法检查。

3)传统流程图。传统流程图简称为流程图,是采用一些框图符号来描述算法的逻辑结构。每个框图符号表示不同性质的操作。早在20世纪60年代,美国国家标准协会(ANSI)就颁布了流程图的标准,这些标准规定了用来表示程序中各种操作的流程图符号。例如用矩形表示处理,用菱形表示判断,用平行四边形表示输入/输出,用带箭头的折线表示流程等。

4)N-S流程图。N-S流程图又称为结构化流程图。与传统流程图不同的是:N-S流程图不用带箭头的流程线来表示程序流程的方向,而采用一系列矩形框来表示各种操作,全部算法写在一个大的矩形框内,在大框内还可以包含其他从属于它的小框,这些框一个接一个从上向下排列,程序流程的方向总是从上向下。图3-18是欧几里得算法的传统流程图和N-S流程图。

图3-18 欧几里得算法的流程图表示

a)传统流程图 b)N-S流程图

(3)常用算法介绍

1)递归法。递归是指一个特殊的过程,在该过程中用自身的简单情况来定义自身,再自己调用自己。递归是一种强有力的数学工具,它可使问题本身的描述和求解变得简洁和清晰。递归算法常常比非递归算法更容易设计,尤其当问题本身或所涉及的数据结构是递归定义的时候,使用递归算法特别适合。

2)枚举法。枚举法就是列举所有可能出现的情况,分别判断并把满足条件的情况选择出来。

3)查找算法。查找是一种在列表中确定目标所在的位置的算法。在列表中,查找意味着:给定一个值,并在包含该值的列表中找到具有该值的第一个元素的位置(索引)。

(4)算法评价

在保证算法正确性的前提下,如何确定算法的优劣是一个值得研究的课题。在算法的分析中一般应考虑以下3个问题:算法的时间复杂度、算法的空间复杂度、算法是否易于理解和易于维护。

3.4.4 操作系统简介

操作系统(Operating System,OS)是一种管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石,操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理器管理、作业管理、存储管理、设备管理、文件管理。硬件、操作系统和应用软件间的关系如图3-19所示。操作系统是控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统是管理计算机系统的全部硬件资源,包括软件资源及数据资源、控制程序运行、改善人机界面、为其他应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便、有效、友善的服务界面。所有的操作系统具有并发性、共享性、虚拟性和不确定性4个基本特征。

图3-19 硬件、操作系统和应用软件关系图

1.操作系统的功能

1)处理器管理。处理器是完成运算和控制的设备。在多道程序运行时,每个程序都需要一个处理器,而一般计算机中只有一个处理器。操作系统的一个功能就是安排好处理器的使用权,也就是说,在每个时刻处理器分配给哪个程序使用是由操作系统决定的。

2)存储管理。计算机的内存中有成千上万个存储单元,都存放着程序和数据。何处存放哪个程序、放哪个数据,都是由操作系统来统一安排与管理的。

3)设备管理。计算机系统中配有各种各样的外部设备。操作系统的设备管理功能采用统一管理模式,自动处理内存和设备间的数据传递,从而减轻用户为这些设备设计输入、输出程序的负担。

4)作业管理。作业是指独立的、要求计算机完成的一个任务。操作系统的作业管理功能包括两点:一是在多道程序运行时,使各用户合理地共享计算机系统资源;二是提供给操作人员一套控制命令用来控制程序的运行。

5)文件管理。计算机系统中的程序或数据都要存放在相应的存储介质上。为了便于管理,操作系统把相关的信息集中在一起,称为文件。操作系统的文件管理功能就是负责这些文件的存储、检索、更新、保护和共享。

以现代观点而言,标准个人计算机OS应提供以下功能:进程管理(Processing Manage-ment)、记忆空间管理(Memory Management)、文件系统(File System)、网络通信、安全机制(Security)、使用者界面和驱动程序。

2.操作系统的分类

目前微机上常见的操作系统有DOS、OS/2、UNIX、Linux、Windows、Netware等。操作系统的形态非常多样,不同机器安装的OS可从简单到复杂,可从手机的嵌入式系统到超级计算机的大型操作系统。许多操作系统制造者对OS的定义也不大一致,例如有些OS集成了图形用户界面,而有些OS仅使用文本接口,而将图形界面视为一种非必要的应用程序。操作系统理论在计算机科学中是最为历史悠久而又活跃的一个分支,而操作系统的设计与实现则是软件工业的基础与内核。目前的操作系统种类繁多,很难用单一标准统一分类。

1)根据应用领域,可分为桌面操作系统、服务器操作系统、主机操作系统和嵌入式操作系统。

2)根据所支持的用户数目,可分为单用户系统(MSDOS、OS/2、Windows)和多用户系统(UNIX、MVS)。

3)根据操作系统的使用环境和对作业的处理方式,可分为批处理系统(MVX、DOS/VSE)、分时系统(Linux、UNIX、XENIX、MacOS)和实时系统(VRTX、RTOS,RTWin- dows)。

下面介绍一下操作系统的五大类型:批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统。

(1)批处理操作系统

批处理(Batch Processing)操作系统的工作方式是:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后启动操作系统,系统自动、依次执行每个作业。最后由操作员将作业结果交给用户。批处理操作系统的特点是:多道和成批处理。

(2)分时操作系统

分时(Time Sharing)操作系统的工作方式是:一台主机连接了若干个终端,每个终端有一个用户在使用。用户交互式地向系统提出命令请求,系统接受每个用户的命令,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。用户根据上步结果发出下道命令。分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。每个用户轮流使用一个时间片而使每个用户并不感到有其他用户存在。分时系统具有多路性、交互性、“独占”性和及时性的特征。多路性指,同时有多个用户使用一台计算机,宏观上看是多个人同时使用一个CPU,微观上是多个人在不同时刻轮流使用CPU;交互性是指用户根据系统响应结果进一步提出新请求(用户直接干预每一步);“独占”性是指用户感觉不到计算机为其他人服务,就像整个系统为他所独占;及时性是指系统对用户提出的请求及时响应。常见的通用操作系统是分时系统与批处理系统的结合。其原则是:分时优先,批处理在后。“前台”响应需频繁交互的作业,如终端的要求;“后台”处理时间性要求不强的作业。

(3)实时操作系统

实时操作系统(Real Time Operating System,RTOS)是指使计算机能及时响应外部事件的请求,在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致工作的操作系统。实时操作系统要追求的目标是:对外部请求在严格时间范围内做出反应,实现高可靠性和完整性。其主要特点是资源的分配和调度,首先要考虑实时性,然后才是效率。此外,实时操作系统应有较强的容错能力。

(4)网络操作系统

网络操作系统是在各种计算机操作系统上按网络体系结构协议标准开发的软件,是基于计算机网络的,包括网络管理、通信、安全、资源共享和各种网络应用。其目标是相互通信及资源共享。在其支持下,网络中的各台计算机能互相通信和共享资源。其主要特点是与网络的硬件相结合来完成网络的通信任务。

(5)分布式操作系统

它是为分布计算系统配置的操作系统。大量的计算机通过网络被连接在一起,可以获得极高的运算能力及广泛的数据共享。这种系统被称作分布式系统(Distributed System)。它在资源管理、通信控制和操作系统的结构等方面都与其他操作系统有较大的区别。由于分布计算机系统的资源分布于系统的不同计算机上,操作系统对用户的资源需求不能像一般的操作系统那样,等待有资源时直接分配的简单做法,而是要在系统的各台计算机上搜索,找到所需资源后才可进行分配。对于有些资源,如具有多个副本的文件,还必须考虑一致性。所谓一致性是指若干个用户对同一个文件同时读出的数据是一致的。为了保证一致性,操作系统需控制文件的读、写、操作,使得多个用户可同时读一个文件,而任一时刻最多只能有一个用户在修改文件。

分布式操作系统的通信功能类似于网络操作系统。由于分布式计算机系统不像网络分布那样广,同时分布式操作系统还要支持并行处理,因此它提供的通信机制和网络操作系统提供的有所不同,它要求通信速度很高。分布式操作系统的结构也不同于其他操作系统,它分布于系统的各台计算机上,能并行地处理用户的各种需求,有较强的容错能力。

3.目前流行的服务器操作系统

服务器操作系统,又名网络操作系统。服务器操作系统主要分为4大流派:Windows、NetWare、UNIX、Linux。

1)全球最大的操作系统开发商——Microsoft公司开发的Windows服务器操作系统大家应该都不会陌生。其推出的服务器操作系统重要版本WinNT4.0 Server、Win2000/Advanced Serv-er、Win2003/Advanced Server,Windows Server 2008都是市面上应用最多的服务器操作系统。

2)NetWare服务器操作系统,主要应用在某些特定的行业中。也就是因为此,在很多朋友在划分操作系统派系的时候,去除了NetWare的代表权。其实,在各种设备和网络都比较落后的年代,NetWare在局域网应用中占据着绝对的高额市场;而目前,在一些特定行业和事业单位中,NetWare优秀的批处理功能和安全、稳定的系统性能有着很大的生存空间。NetWare目前常用的版本主要有Novell的3.11、3.12、4.10、5.0等中英文版。

3)UNIX服务器操作系统由AT&T公司和SCO公司共同推出,主要支持大型的文件系统服务、数据服务等应用。由于一些出众的服务器厂商生产的高端服务器产品中甚至只支持UNIX操作系统,因而在很多人的眼中,UNIX甚至成为高端操作系统的代名词。目前市面上流传的主要有SCO SVR、BSD Unix、SUN Solaris、IBM-AIX等。

4)Linux服务器操作系统是国外几位IT前辈,在Posix和UNIX基础上开发出来的,支持多用户、多任务、多线程、多CPU任务。Linux的开放源代码政策,使得基于其平台的开发与使用无需支付任何单位和个人的版权费用,成为后来很多操作系统厂商创业的基石,同时也成为目前国内外很多保密机构服务器操作系统采购的首选。目前国内主流市场中使用的主要有Novell的中文版Suse Linux 9.0、小红帽系列、红旗Linux系列等。