1
新编大学计算机基础
1.4.2.1 2.2.1 系统软件

2.2.1 系统软件

系统软件位于硬件和应用软件之间,主要是管理机器软、硬件资源与支撑其他软件的开发和运行。系统软件包括操作系统、程序设计语言处理程序、作为软件研制开发工具的编辑程序、装配链接程序、测试程序等工具软件以及数据库管理系统等。

1.操作系统

操作系统是系统软件中的核心,它直接支持微机硬件工作,是对硬件的第一层扩充。它是管理和控制计算机系统软、硬件和数据资源的程序,是用户和计算机之间的接口,并提供了软件的开发和应用环境。其作用主要是提高系统资源利用率,提供方便友好的用户界面,提供软件的开发与运行环境。典型的操作系统一般都具备以下功能:

(1)处理器管理(进程管理)

处理器管理(Processor)主要是指在多任务环境下对处理器的分配和运行实施有效的管理。在多任务环境下,操作系统一般将程序分成若干相对独立的单位交给处理器执行,这些单位便是进程(更小则可以是线程),那么,对处理器的管理可归结为对进程(线程)的管理,它主要实现进程的控制、同步、通信和调度等功能。

(2)存储器管理

其主要任务是在多任务操作系统中,对内存储器进行管理,为多道程序的运行提供良好的环境,便于用户使用存储器、提高存储器的利用率、尽可能多地为用户提供足够大的存储空间。因此它要实现内存分配、内存保护、地址映射和内存扩充等功能。

(3)设备管理

主要是在多任务操作系统中为程序分配I/O设备,完成用户程序请示的I/O操作,提高CPU和I/O设备的利用率。因此它要完成缓冲管理、设备分配、设备处理及虚拟设备等功能。

(4)文件管理

在计算机中,程序与数据都是以文件的形式存放在外存储器中供用户使用,而用户对文件的访问是通过“按名存取”来实现的。为此,操作系统中的文件系统要完成文件存储空间的管理、目录管理、文件的读写管理与存取控制等功能。

(5)作业管理

在多任务环境中,作业管理的功能主要是根据系统条件和用户需要,完成作业调度与作业控制,以此来对用户作业进行合理的组织及相应的控制。

2.程序设计语言处理程序

(1)微型计算机指令

程序是软件中的关键部分,它又是由指令构成。一条指令是一组二进制代码,它规定计算机的一个基本操作,而能够完成一定任务的指令序列便构成程序。计算机便是通过由控制器执行程序中的一条条指令来完成对计算机的自动控制,从而实现计算机在各个领域的功能。

计算机的指令与计算机硬件(主要是CPU)密切相关,同时也与机器的字长、存储器的容量及指令要实现的功能有关,同一类CPU的所有指令构成的集合称为指令集。

计算机是通过执行一条条的指令来完成对信息的处理,那么一条指令必须包含操作码和地址码两部分(有的指令只有操作码,没有地址码)。操作码(Operation Code)用来表示该指令要完成什么样的操作(如加、减、乘、除、移位或传送等),其长度是可变的;地址码用来描述指令的操作对象,包括要处理的数据来自何处(源操作数)、处理的结果送到何处(目的操作数)、下一条指令的存储地址。

微型计算机系统中的指令根据其地址码的个数分为零地址指令(无操作数或隐含使用某一寄存器作为地址码)、单地址指令和双地址指令;根据其功能可分为数据处理指令(含算术运算、逻辑运算、移位、比较及其他专用指令等)、数据传送指令(含存储器传送、内部传送、输入输出、及堆栈指令等)、程序控制指令(含无条件转移、条件转移、子程序调用及停机、空操作指令等)和状态管理指令(含开中断、关中断指令等)。

并非所有微机都具备上述全部种类指令,某些微机系统所采用的指令可能只有其中的几种,没有的指令可由其他指令间接来完成相应的功能。

(2)机器语言

能直接被计算机接受并执行的指令称为机器指令。同一系列的机器的所有机器指令构成机器语言(Machine Language)。机器语言是二进制语言,其操作码与地址码均由二进制数表示,能直接被机器识别并执行。但机器语言是面向机器的语言,对硬件依赖性大,不利于程序移植。

用机器语言编写的程序称为机器语言程序。机器语言程序的优点是:程序可被机器直接执行,不需任何翻译,程序执行效率高;其缺点是:由于机器指令数目太多,且都是二进制代码,所以用机器语言编写的程序难于辨认、难于记忆、难于调试、难于修改,不易移植。

然而,计算机只能接受以二进制形式表示的机器语言,所以任何非机器语言程序最终都要翻译成由二进制代码构成的机器语言程序,机器才能执行这些程序。

(3)汇编语言

由于机器语言存在上述不足,为了克服这些不足,人们便用反映指令功能的助记符来描述机器语言中的指令,在此基础上形成的程序设计语言被称为汇编语言(Assembler Language),它的指令与相应机器语言指令基本上是一一对应的,它实质上是符号化了的机器语言。比如Intel 8086/8088汇编语言中用“ADD”来表示“加”,用“MOV”表示“传送”,用“OUT”表示“输出”等。

用汇编语言编写的程序称为汇编语言源程序,机器不能直接执行,必须使用相应的汇编程序将其翻译成由机器语言程序构成的目标文件,这个翻译过程称为“汇编(Assemble)”,然后通过连接程序将目标文件与库或其他目标文件进行连接,生成命令文件(.com)或者是可执行文件(.exe),这个过程称为“连接(Link)”,最后生成的可执行文件才能在机器上运行。

因为汇编语言是符号化了的机器语言,所以它也是面向机器的语言,对硬件依赖性大,不同微处理器其指令系统不一样,所配备的汇编语言也不一样,故汇编语言程序也难于移植。虽然汇编语言相对于机器语言在程序的编写、修改、阅读等方面有了大的进步,运行效率仍较高,但由于机器指令繁多,掌握起来仍较困难。

(4)高级语言

由于机器语言与汇编语言都是面向硬件的语言,其运行效率虽然高,但人们掌握起来比较困难,不利于推广,而且程序不易移植。于是科学家们逐步创造了一些与具体计算机指令表面无关的、与自然语言和数学语言比较接近的计算机程序设计语言,它们被称为高级语言。

高级语言容易被人们掌握,编写程序十分方便灵活,由于它与硬件的依赖性很小,编写的程序有时几乎不用修改就可移植到其他计算机系统上运行。

用高级语言书写的程序称为高级语言源程序(Source Program),它不能被机器直接执行,所以必须将其翻译成机器语言程序机器才能识别与执行。将高级语言源程序翻译成机器语言程序,其翻译方式有两种:编译方式与解释方式。

编译(Compile)就是将用高级语言编写的源程序整个经过其相应的编译程序翻译转换成目标代码文件,并将目标程序存储在外存储器上,然后将所保存的目标程序交给计算机执行。在这个过程中,首先执行编译程序,让其对源程序进行检查,如果检查到错误,则产生错误报告,并停止编译,若无错误,则生成二进制代码文件,也称目标文件(一般为.obj文件);然后经过连接程序将生成的二进制代码与库函数或其他目标代码进行连接,同样,若发现错误,则不进行连接,若无错误,则生成可执行文件(一般为.exe文件)。用户运行程序只需运行生成的可执行文件即可。如常用的C++语言、Pascal语言等便是编译型高级语言。

解释(Interpret)是利用解释程序对用高级语言编写的源程序进行逐行分析,边解释边执行,立即得到运行结果。如果一个语句要重复执行多次,则要解释多次。解释过程也是一个自动过程,但它不将解释的结果保存下来,即不产生目标文件。如果在解释的过程中遇到源程序中有语法错误,则停止执行,同时报告错误。如早期的BASIC语言等。

(5)数据库管理系统

数据库管理系统(DBMS:DataBase Management System)是计算机数据处理发展到高级阶段而出现的专门对数据进行集中处理的系统软件,它负责数据库的定义、建立、操作、管理和维护,其任务之一就是在保证数据完全可靠的同时提高数据库应用时的简明性和方便性。

数据库管理系统通常包含这样的功能:数据库的定义和建立,数据库的操作,数据库的控制,数据库的维护,故障恢复,数据通信等。为完成这些功能,数据库管理系统常常要提供语言处理程序,它向用户提供数据库的定义、操作等功能,其中最典型的是数据描述语言(DDL)和数据操纵语言(DML),前者负责描述和定义数据的各种特性,后者说明对数据的操作。另外,数据库管理系统还提供相应的运行控制程序,它负责数据库运行时的管理、调度和控制;也提供一些服务性程序,它完成数据库中数据的装入和维护等服务性功能,也称实用程序或例行程序。

目前常见的数据库大多为关系型数据库,如小型桌面系统常用的Access,中小型企业常用的SQL Server,大型企业常用的Oracle、DB2等。