计算机导论(第三版)
上QQ阅读APP看书,第一时间看更新

1.4.2 计算机系统软件

系统软件是为整个计算机系统配置的、不依赖于特定应用领域的通用软件,用来管理计算机的硬件系统和软件资源。只有在系统软件的管理下,计算机的各硬件部分才能协调一致地工作。系统软件为应用软件提供了运行环境,离开了系统软件,应用软件同样不能运行。

系统软件可供所有的用户使用,在选购计算机系统时,计算机供应商会为用户提供一些最基本的系统软件,如操作系统。当然,用户可以随时更换自己需要的系统软件。现在的计算机中,系统软件的功能越来越强,规模也越来越大,一个好的系统软件需要许多人花很长的时间才能开发出来。

根据系统软件所实施功能的不同,可以把系统软件分为以下几种类型。

1.操作系统

操作系统(Operating System,OS)是直接运行在“裸机”上的最基本的系统软件,其他软件都必须在操作系统的支持下才能运行。操作系统是由早期的计算机管理程序发展而来的,目前已成为计算机系统各种资源(包括硬件资源和软件资源)的统一管理、控制、调度和监督者,由它合理地组织计算机的工作流程,协调计算机和部件之间、系统与用户之间的关系。操作系统的目标是提高各类资源的利用率,方便用户使用计算机系统,为其他软件的开发与使用提供必要的基础和相应的软件接口。

(1)单用户单任务的操作系统。单用户单任务的操作系统只允许一个用户使用计算机,在计算机工作过程中,一次只能执行一个应用程序,只有当一个程序执行完成后才能执行下一个应用程序。MS-DOS就是这种操作系统。

(2)单用户多任务的操作系统。单用户多任务的操作系统也只允许一个用户操作计算机,但在计算机工作过程中可以执行多个应用程序,而且允许用户在各个应用程序之间进行切换。目前使用较多的是Windows 7/10。

(3)多用户多任务的操作系统。多用户多任务的操作系统允许多个用户同时使用计算机资源,如UNIX、Windows NT等,从多用户与多任务工作环境来看,有分时工作方式、实时工作方式和批处理工作方式。

从资源管理的角度来看,操作系统的主要功能包括作业管理、进程管理、存储管理、设备管理和文件管理。其中作业管理、进程管理合称处理机管理。

随着计算机通信的普及,硬件提供网络软件的运行环境,网络和通信软件保证计算机联网工作的顺利进行,负责网上各类资源的管理与监控,以及计算机系统之间、计算机设备之间的通信交往,是计算机网络系统中必不可少的主要组成部分。

计算机网络可以按照地理位置距离的远近分为局域网和广域网,因此网络与通信软件也可分为局域网的网络通信软件和广域网的网络与通信软件。

网络与通信软件中最重要、最基本的是网络操作系统。一般来说,网络操作系统的主体部分中都有一个内核程序控制软硬件之间的相互作用,有一个传输规程软件控制网络中的信息传输,有一个服务规程软件扩展网络的联网功能。此外,由于在网络中的软件资源与数据资源都是以文件形式存放的,所以几乎所有的网络操作系统中都有相当大的一部分用于实现在网络中的文件管理、文件传输与文件使用权限的控制(即网络文件系统)。为了方便用户的网络操作,所有的网络操作系统都提供了一些实用程序,用于管理用户的操作,为用户提供编程接口,并提供网络设置和监控功能。

网络操作系统通过内核程序、传输规程软件、服务规程软件、网络文件系统、网络实用程序和网络管理监控等保证实施网上资源共享与信息通信。

当前流行的网络操作系统采用的协议主要是TCP/IP,常用的网络操作系统有UNIX系统、Linux系统、Windows Server和Mac OS Server。

2.语言处理程序

到目前为止,计算机语言大致可分为5代。第一代是机器语言,第二代是汇编语言,第三代是高级语言,第四代为面向对象程序设计语言,第五代是基于Web的语言。

1)机器语言

计算机可以直接执行的指令是由0、1组成的二进制代码串,这是计算机唯一能直接理解的语言,称为机器语言。首先,机器语言难以记忆,用它编写程序难度大,容易出错。其次,需要了解计算机的结构才能理解每条机器指令的用法,然后才能编写程序,一般用户很难做到这点,这给它的推广普及带来了很大的难度。机器语言是计算机早期的编程语言,它采用计算机的二进制机器指令编写程序,只有计算机专业人员才能使用。用机器语言编写的程序容易出错,难于阅读、理解,出错了难以查正,所以难以推广使用。

2)汇编语言

为了克服机器语言的缺点,人们用一些容易记忆的符号代替相应的机器指令,这就是汇编语言。它采用人们容易记忆的字符来表示计算机指令,如ADD表示相加,MUL表示相乘,这样人们可以更方便、更有效地加以记忆、阅读和编写程序。

在用机器语言编写程序时,程序员需要小心翼翼地编写一串串由0和1组成的机器指令,用汇编语言编写程序前需要弄清、记住一个个汇编命令助记符的含义,搞懂一条条汇编命令晦涩难懂的语法格式和使用方法。

汇编语言事实上也是一种面向具体机器的语言,它依赖于具体计算机型号的指令组。通俗而言,汇编语言是用人们容易阅读和理解记忆的助记符号去替换机器指令。例如加法,假设在某种计算机中其机器指令代码是10000,而其相应的汇编语言中则用ADD来代表。显然用类似于ADD这样的汇编指令编写程序,就比用类似于10000这样的机器指令编写程序简单易懂。

不同的计算机CPU芯片其指令集是不一样的,其相应的汇编语言也不一样,这说明同一个汇编语言程序在不同类型的计算机中是不能通用的。

用汇编语言编写的源程序需要经过汇编程序的翻译解释,把它转换为相应的机器语言程序后才能被计算机执行。汇编程序是指能够把汇编源程序翻译成机器语言代码的程序,它是由汇编语言系统提供的。把汇编源程序翻译成机器语言程序的过程称为汇编。

3)高级语言

人与人之间是通过自然语言来交流信息的。在目前通用计算机还不具备理解人的自然语言的情况下,人们普遍使用跟自然语言接近并能为计算机接受的计算机高级语言。高级语言就是各类编程用的程序设计语言,它们中的每一种,都定义有若干控制结构和数据结构,能够较好地反映所需解决问题的实际需要。

较为常用的高级语言有C、Pascal、FORTRAN、BASIC、COBOL、ADA等。

(1)C语言。C语言是AT&T公司贝尔实验室的Dennis Ritchie于1972年开发的。Ritchie最初主要是用它来开发UNIX系统。C语言语法精简,其编译程序可以产生出十分有效的目标代码。C语言现在已广泛用于各种档次、各种类型的计算机系统。用C语言编写的程序结构清晰,可移植性好,并且执行效率相当高(仅次于汇编语言),在微机中十分流行,是高校计算机教学的首选语言。

(2)BASIC语言。BASIC语言最初是为初级编程人员而设计的,自1964年问世以来,它已经有过许多种不同的版本,如IBM-PC上的GW-BASIC和微软公司的QBASIC。由于BASIC简单易学,而且适合于各种计算机系统,它已成为最流行和最广泛使用的语言之一。BASIC是一种过程性高级语言,它的大多数版本都是以解释方式执行的。BASIC早期的版本对于开发复杂的商用程序非常有限,但近年的版本,如微软的Visual Basic(VB)就是综合性的功能强大的编程语言,适合于专业编程项目。

(3)COBOL语言。COBOL是1960年产生的一种专用商业高级程序设计语言,用来存储、检索和处理公司的财务信息,实现库存管理、票据管理、工作报表管理等事务型信息系统的开发,是大型计算机系统上事务处理系统的开发工具。COBOL是编译执行的过程性高级语言,主要被一些专业人员用于开发和维护大型商业集团的复杂程序。COBOL往往很长,但它易于读懂、调试和维护。

(4)FORTRAN语言。FORTRAN语言出现于1954年,是最早使用的高级语言,它广泛用于科学计算、数学计算和工程应用领域,一般被科学家用于编写大型机或小型机上的科学计算程序和工程程序。

(5)Pascal语言。Pascal开发于1971年,用于帮助学生学习计算机编程。Pascal是编译执行的过程性高级语言,它开创了结构化程序设计的先河。但Pascal语言很少用于专业编程和商业软件的开发。

(6)SQL语言。SQL是为数据库的定义和操作而开发的一种标准语言。SQL是说明性的语言,只需程序员和用户对数据库中数据元素之间的关系和欲读取信息的类型加以描述。

4)面向对象程序设计语言

面向对象程序设计语言(OOP)是建立在对象编程的基础之上的。对象就是程序中使用的实体或“事物”,例如,Windows中的按钮、窗口等都是对象。面向对象程序设计方法是软件设计的一场革命,它代表了新颖的计算机程序设计的思维方法,该方法与结构化程序设计方法不同,它支持对象概念,使计算机问题的求解更接近于人们的思维活动。面向对象程序设计增加了程序代码的可重用性和可扩充性。

如今使用的OOP程序设计语言主要有C++、Java、J++、Power Builder、VB、VC、Delphi等。

C++有多种不同的类型,其中以微软公司的Visual C++和Borland公司的Borland C++、C++ Builder为主。

5)基于Web的语言

(1)Java和J++。

Java最初是为Web网页生成Applet(即提供一些小应用程序)而设计的。Applet可被用来完成许多工作,最常用的是动画,甚至带有声音的动画。其常见的Applet例子如:

①添加标题,通常在Web页上运行。

②图像旋转器,主要用于图形可标识的旋转或翻转。

③动态文字或动画。

④文本、景物、图形或屏幕上部分图形的汇聚、渐隐和形状的改变、闪烁、比例缩小或放大及颜色设置等。

Java起源于C++,所以其代码与C++有许多相似之处。Java包含了面向对象的编程思想,其程序通俗易读。

和Java一样,J++也是以C++为基础的一种Web开发工具,但J++提供给程序员的工具要求Windows系统的支持,它只能运行于Windows操作系统的计算机上。而Java是一种独立于平台的语言,它不但能够在微机上运行,而且可运行于Macintosh和UNIX机上。

要注意的是,JavaScript是Java的一个子集,它属于一种脚本描述语言,它的主要功能是交互式地生成网页。

(2)HTML。

超文本置标语言(Hypertext Markup Language,HTML)是目前主要的Web语言。它以简单精练的语法、极易掌握的通用性与易学性为WWW技术的发展带来了一场前所未有的信息革命,使互联网普及发展至今日的辉煌。尽管HTML在布局、外观方面具有优势,但由于缺乏对内容的表达能力,在可扩展性、交互性、语义、超链接等方面具有先天不足,已越来越难以满足网络时代的电子商务、远程医疗、数据库与搜索引擎等领域的多态信息的交互、传输和再现的要求。1996年,万维网联合组织(W3C)开始对HTML的后续语言进行研究,并于1998年2月正式完成了可扩展置标语言(XML)标准的制定。

(3)XML。

XML(eXtensible Markup Language)是结构化的标记语言,即实现“文档结构化”的语言规范。一个XML文档包括数据和标记。标记的语法在很大程度上与HTML类似,但标记是可以扩充的,可根据数据的含义自行创建。XML以其良好的数据存储形式、可扩展性、高度结构化、便于网络传输等优势将在许多领域一展身手,便于软件开发人员和内容创作者在网页上组织信息,不仅能满足不断增长的网络应用的需求,而且还能够确保通过网络进行交互合作时具有良好的可靠性与互操作性。

高级语言将几条机器指令合并为一条高级指令,它用近似于英语单词的助记符来表示命令,用更接近于人们平常生活和思维方式的语句来表示计算机命令的语法。但是,计算机只能执行用机器语言编写的程序,用其他各种高级语言编写的程序必须经过相应的语言处理程序的翻译,把它们转换成机器语言程序后才能被计算机所执行。用汇编语言和高级语言编写的程序称为源程序,必须通过解释或者编译成为机器指令程序(称为目标程序)以后,才能由计算机硬件加以执行。因此,必须有一类软件,它的任务是把由汇编语言或高级语言编制成的源程序翻译成为计算机硬件能够直接执行的目标程序,这类软件称为语言处理程序。

语言处理程序大致可分为编译程序和解释程序两大类,在把不同语言的源程序译成相应的机器语言程序时,要使用与之相对应的语言处理程序。

计算机要执行高级语言和汇编语言程序,必须首先利用翻译程序把源程序翻译成机器语言程序,能提供翻译功能的程序就称为翻译程序。

翻译的过程可用图1-3简要示意。

图1-3 “翻译”示意图

根据翻译的过程和翻译的方法,翻译程序大致可分为编译程序和解释程序。

汇编程序是最简单的翻译程序,因为汇编语言的每条指令是一条机器指令的符号化,一条汇编指令对应一条机器指令。在把汇编语言源程序翻译成机器语言程序时,只需要把源程序中的汇编语句转换成相应的机器指令即可。汇编源程序经过汇编程序处理后,最后会形成一个可执行命令文件。在微机中,由汇编源程序翻译而得到的可执行文件的扩展名一般都是.exe或.com。

编译程序是最复杂的翻译程序,它把高级语言源程序翻译成相应的目标程序,最终将形成一个由机器指令代码组成的可执行文件。对微机而言,由高级语言源程序编译而成的可执行文件很容易区分,它们的文件扩展名一般都是.exe,例如,磁盘上的.exe文件就是由高级语言源程序或汇编源程序翻译而成的。

图1-4是一个高级语言编译示意图,从图中可看出,高级语言编译程序如同一个自动翻译机器,源程序(如C语言源程序)送给它后,在编译程序内部进行编译处理,处理完毕之后,形成一个可执行的.exe文件,并把该.exe文件存放在磁盘上。用户在需要的时候,可以执行该.exe文件,得到需要的结果。

图1-4 高级语言的编译示意图

一些编译程序还可以生成其他类型的中间文件,如分析文件和程序出错处理文件,这些文件可以帮助程序设计人员分析、处理源程序中的错误。

解释程序的处理过程与编译程序和汇编程序都有区别,它对源程序进行逐行翻译,当它把第一条源程序语句翻译成相应的机器指令后,立即提交计算机执行,如果该语句没有什么错误,接着翻译第二条源语句,第二条源语句翻译并执行后,再解释第三条……如此反复,直到最后一条源语句处理完成。

解释程序在对高级语言源程序的解释过程中,并不形成可执行命令文件,这是它与编译程序的主要区别,且当第二次要执行同一个程序时,又必须从源程序的第一条语句开始逐条翻译执行。

可见,用解释型语言编写的程序在每次执行过程中都离不开语言环境,而编译型语言则不同,源程序一经编译成可执行命令文件,就不再需要翻译程序了,它可以独立于语言处理程序而运行。

由于解释型语言是针对源程序每一条语句独立翻译执行,它把问题进行分散化,当一条语句有错误时,就停留在有错的语句处,并告诉程序员该语句有错误,待程序员修改错误后,它再解释执行后面的语句。这种方式使得语言的学习和程序的编写难度相应减少,所以解释型语言比编译型语言好学易懂。

也有人把解释型语言称为会话式语言,其解释的过程相当于人与人之间不同的语言交流的“口译”。而编译型语言的编译过程不同于语言文字的“笔译”过程。

常见的解释型语言有dBASE、FoxBASE、BASIC、MATLAB等,常见的编译型语言有C、Pascal、FORTRAN、Java等。

3.数据库管理系统

除了硬件资源和软件资源外,数据资源在计算机的应用中越来越重要,尤其是在信息处理的应用中,信息资源起着核心作用,其中数据库技术是一项主要的计算机技术。从历史上看,信息与数据管理经历了人工管理(20世纪50年代中期以前)、文件系统(20世纪50年代后期到60年代中后期)和数据库(从20世纪70年代起)3个阶段。近十几年来,数据库技术的应用更是发展迅速。

数据库是通过有效地组织、存储在一起的相关数据和信息的集合,它允许多个用户共享数据库中的内容。在组织数据库的时候,要求数据库中的数据要尽量减少冗余性(即尽量减少数据的重复存储),使各种数据有着密切的联系,同时要尽量保证其中的数据与应用程序的相互独立性,就是说数据库中的数据要尽可能不依赖于某个具体的应用程序。用于管理数据库的主要软件系统就是数据库管理系统(DataBase Management System,DBMS),DBMS为各类用户或有关的应用程序提供了使用数据库的方法,其中包括建立数据库、存储、查询、检查、恢复、权限控制、增加与修改、删除、统计汇总、排序分类等各种命令。

现代的计算机系统已将数据库管理系统作为一种主要的系统软件。DBMS是数据库系统中对数据进行具体管理的软件系统,是数据库系统的核心,所有的数据查询、更新和控制都是通过DBMS进行的。在数据库的发展历史中,DBMS曾有过3种模型:层次型、关系型和网状模型,目前最流行的是关系型数据库管理系统。在关系型数据库系统中,把一张二维的表格视为一个关系。

当前流行的关系型DBMS有FoxPro、Paradox、Access、PowerBuilder、Oracle、SYBASE和INFOMIX等。

随着计算机应用领域的不断扩大,涌现出各种新型的数据库,如面向对象的数据库、多媒体数据库、Web数据库、分布式数据库、协同数据库等。