四、软 件
总的来说,软件就是指用以指挥计算机运行活动所使用的程序。有两类软件:应用软件和系统软件。程序员设计和编制应用软件来完成面向用户的某些应用,诸如收帐和工资系统等。系统软件更为通用,通常是独立于应用的。它支持基本的计算机功能以及所有的应用领域(而不是特殊的应用)。
系统软件
可以将系统软件从逻辑上分成主要的几类。下面我们对每一类作概括介绍。
1.编译程序。编译程序将一种高级语言的指令(如,COBOL)翻译成计算机能解释的指令。读者应该记住:任何一台计算机都是用机器语言来执行所有的程序,而不论这些程序是用BASIC、FORTRAN或是COBOL编写的。高级程序设计语言只不过是给用户提供了一种方便,“源”语言形式的程序是不能执行的。
2.源程序。它由程序员编写的一些语句组成,由编译程序对它进行编译。图20.7.5说明了这一过程(一个程序员交互地开发一个COBOL程序)。程序员请求该程序,于是系统从辅存中调出COBOL编译程序并装入到主存。然后,编译程序将源程序翻译成目标程序。这种目标程序是机器语言形式,通常存放在辅存上以便今后调用并(或)直接执行。编译的过程可能是费时间的,特别对于大型程序更是如此,在规则地调度生产性程序时,将直接“调用”(从磁盘检索)并执行目标程序,不需要进行编译。如果对源程序作了某些修改,那么必须对它重新编译以产生最新版本的目标程序。

3.解释程序。解释程序基本上执行与编译程序相同的功能,只是方式上不同而已。解释程序按顺序翻译并执行每一条源程序语句。解释程序的优点是当语句出现语法错误时,可以立即引起程序员注意,而程序员在程序开发期间就能进行校正。解释程序的缺点是不能像编译程序那样充分地利用计算机资源。
4.模拟和仿真程序。这类系统软件允许一台计算机就像是另一台计算机那样工作。当把程序转换到另一台不兼容的计算机上时,模拟程序和仿真程序特别有用。直到现有程序全部被转换成新的计算机格式后,原来为一台老的计算机编写的程序才能在新的计算机上执行。从技术上讲,仿真程序是硬件和软件的结合,而模拟程序则完全是软件。
5.实用程序。实用程序是经常使用的服务程序。这些程序提供了诸如文件备份(如,从磁盘转贮职工主文件到磁带)、测试辅助(在程序某个错误点取主存的“快照”)以及应用辅助(以部门中的社会保险号排序职工主文件)等功能。
6.操作系统。操作系统(也称执行系统、监督程序或管理程序)控制所有应用程序和系统程序的执行。操作系统可以提供任务调度、输入/输出控制、使用机器记帐(如,每台磁盘驱动器的查找次数等)、主分配、数据管理以及其他有关的服务。操作系统的目标是:
(1)使周转时间最小(从递交作业到收到输出结果之间所经过的时间);
(2)使吞吐量最大(每一单位时间的处理量);
(3)使主存和外部设备的利用最佳化。
与操作系统有关的一个概念是虚机器,虚机器软件嵌入在操作系统中,它允许两个以上不同操作系统的程序同时在同一台计算机上执行。当需要从一个操作系统转到另一个操作系统时,虚机器能力是有用的。
7.通信软件。某些计算机的操作系统控制来自(或到)一个远程地点的数据传输流,但是通常这一功能由专门为此目的而设计的通信软件来处理。通信软件可同时在前端处理机据主计算机上执行。
8.数据库管理系统。在第六章我们已详细讨论了DBME软件,多数数据库管理系统都有一系列程序用来支持数据管理功能。
9.性能度量软件。性能度量软件用来监视、分析和报告有关整个计算机系统和计算机系统各组成部分的性能。
有关软件的概念
几乎连最小的计算机都具有多道程序设计的能力。多道程序设计是指在任一给定时间段里多个程序看上去是同时在执行。然而就某一特定时间而言,真正在处理机上执行的只有一道程序,其他程序处于等待或暂停状态。当执行的程序需要输入/输出或正常结束时,操作系统调下一道优先数最高的等待程序在处理机上执行。由于程序执行的速度很快,因此,多道程序设计的处理使得看上去好像每道程序独占了计算机。公时处理是指计算机轮流分配给每道程序一个小的时间片。
由于所有要处理的数据和程序必须驻留在主存里,因此,在决定计算机系统的吞吐量时,主存是一个关键的因素。一旦主存饱和,直到某部分主存被释放之前,不能再执行更多的程序。虚拟存贮器管理程序是给操作系统增加的一个软件,通过该软件来扩充主存以提高CPU的吞吐量。
虚拟存贮器的基本原理很简单。读者可能还记得,程序是逐条语句按顺序执行的,通过把程序放在一些“页”(或段)中,只有正在执行的那部分程序(页)驻留在主存中,余下的程序存贮在一台直接存取存设备(DASD)上,当需要程序的另一页时,再把它调入主存。虚拟存贮器的优点是它有效地扩充了主存,给程序员以更大的灵活性。但是到多个页的转移指令的程序将执行得很慢,因为从磁盘设备将这些页调入主存需要时间。