1.3 计算机系统组成
计算机系统是指用于数据库管理的计算机硬软件及网络系统,一台计算机要能够正常运行需要有一个完整的计算机系统。
1.3.1 概述
一个完整的计算机系统由硬件系统和软件系统两部分组成,如图1-8所示。
图1-8 计算机系统的组成
硬件系统是组成计算机系统的各种实体设备的总称,是计算机系统运行的硬件基础。软件系统是指程序、程序运行所需要的数据以及程序所需要的文档资料的集合。硬件是计算机的躯体,而软件是灵魂。没有安装任何软件的计算机称为“裸机”,一般来说,“裸机”是不能正常工作的。用户所面对的计算机通常是将“裸机”经过若干层软件“包装”的计算机,计算机的性能及功能不仅仅取决于硬件系统,更大程度上是由所安装的软件所决定的。
1.3.2 计算机硬件系统的组成
计算机是能按照人的要求接收信息和存储信息,自动进行数据处理和计算,并输出结果的机器系统。计算机由硬件和软件两部分组成,它们共同协作运行应用程序,处理和解决实际问题。其中,硬件是计算机赖以工作的实体,是各种物理部件的有机结合。软件是控制计算机运行的灵魂,是由各种程序和程序所处理的数据组成的。计算机系统通过软件协调各硬件部件,并按照指定要求和顺序进行工作。
计算机系统是由硬件系统和软件系统两部分组成的。硬件系统是组成计算机系统的各种物理设备的总称,是计算机系统的物质基础,如CPU、存储器、输入设备、输出设备等。软件系统是为运行、管理和维护计算机而编制的各种程序、数据和文档的总称。没有软件系统的计算机对我们来说是毫无用处的。计算机的功能不仅取决于硬件系统,而且更大程度上是由所安装的软件系统所决定的。如果把计算机系统比作一个人,硬件系统就是人的整个躯体,软件系统就是人脑中所有的知识和经验。
硬件系统是计算机的物质基础,没有硬件系统就不能称其为计算机。尽管各种计算机在性能、用途和规模上有所不同,但其基本结构都遵循冯·诺依曼体系结构,人们称符合这种设计的计算机为冯·诺依曼机。这就决定了计算机硬件系统是由运算器、控制器、存储器、输入设备、输出设备五个部分组成的,这五个部分又可以归纳为两个大类,即主机部分和外部设备部分,如图1-9所示。
图1-9 计算机硬件系统
1.3.2.1 运算器
运算器(Arithmetic and Logic Unit,ALU)是计算机处理数据、形成信息的加工厂,它的主要功能是对二进制数进行算术运算或逻辑运算。所以,也称其为算术逻辑部件。所谓算数运算,就是常用的加、减、乘、除,以及乘方、开方等数学运算。而逻辑运算指的是逻辑变量之间的运算,即通过与、或、非等基本操作对二进制数进行逻辑判断。
计算机之所以能够完成各种复杂操作,最根本的原因是运算器的运行。参加运算的数据全部是在控制器的统一指挥下从内存储器中提取到运算器里,由运算器完成运算任务。运算器处理的对象是数据,处理的数据来自存储器,处理后的结果通常送回存储器或暂时存储在运算器中。数据长度和表示方法对运算器的性能影响极大。计算机的字长大小决定了计算机的运算精度,字长越长,所能处理的数的范围越大;运算精度越高,处理速度越快。
以“1+3=?”的简单算术运算为例,观察计算机的运算过程。在控制器的作用下,计算机分别从内存中读取操作数,并将其暂存在寄存器A和寄存器B中。运算时,两个操作数同时传至ALU,在ALU中完成加法操作。执行后的结果根据需要被传送至存储器的指定单元或运算器的某个寄存器中,如图1-10所示。
图1-10 运算器的结构示意图
运算器的性能指标是衡量整个计算机性能的重要因素之一,运算器相关的性能指标包括计算机的字长和运算速度。
字长指计算机运算部件一次能同时处理的二进制数的位数。作为存储数据,字长越长,则计算机的运算精度就越高;作为存储指令,字长越长,则计算机的处理能力越强。目前普遍使用的Intel公司和AMD公司的微处理器大多支持32位字长或64位字长,这就意味着该类型的机器可以并行处理32位或64位二进制数的算术运算或逻辑运算。
运算速度:计算机的运算速度通常是指每秒钟能执行加法指令的数目。一般用百万条指令/秒(Million Instructions Per Second,MIPS)来表示,这个更能直观地反映机器的运行速度。
1.3.2.2 控制器
控制器(Control Unit,CU)是计算机的心脏,由它指挥全机各个部件自动、协调地工作。控制器的基本功能是根据指令计数器中指定的地址从内存取出一条指令,对指令进行译码,再由操作控制部件有序地控制各部件完成操作码规定的功能。控制器也记录操作中各个部件的状态,使计算机能有条不紊地自动完成程序规定的任务。
从宏观上看,控制器的作用是控制计算机各个部件协调工作。从微观上看,控制器的作用是按一定顺序产生机器指令以获得执行过程中所需要的全部控制信号,这些控制信号作用于计算机的各个部件,以使其完成某种功能,从而达到执行指令的目的。所以,对控制器而言,真正的作用是机器指令执行过程的控制。
控制器由指令寄存器(Instruction Register,IR)、指令译码器(Instruction Decoder,ID)、程序计数器(Program Counter,PC)和操作控制器(Operation Controller,OC)四个部件组成。IR用以保存当前执行或即将执行的指令代码;ID用来解析和识别IR中所存放指令的性质和操作方法;OC则根据ID的译码结果,产生该指令执行过程中所需要的全部控制信号和时序信号;PC总是保存下一条要执行的指令地址,从而使程序可以自动、持续地运行,如图1-11所示。
图1-11 控制器结构简图
1. 机器指令
为了让计算机按照人的意识和思维正确运行,必须设计一系列计算机可以真正识别和执行的语言——机器指令。机器指令是一个按照一定格式构成的二进制代码串,用来描述一台计算机可以理解并执行的基本操作。计算机只能执行指令,它被指令所控制。机器指令通常由操作码和操作数两部分组成。
(1)操作码:指明指令所要完成操作的性质和功能。
(2)操作数:指明操作码执行时的操作对象。操作数的形式可以是数据本身,也可以是存放数据的内存单元地址或寄存器名称。操作数又分为源操作数和目的操作数。源操作数指明参加运算的操作数来源;目的操作数指明保存运算结果的存储单元地址或寄存器名称。指令的基本格式如表1-7所示。
表1-7 指令的基本格式
2. 指令的执行过程
计算机的工作过程就是按照控制器的控制信号自动、有序地执行指令的过程。指令是计算机正常工作的前提。所有程序都是由一条条指令序列组成的。一条机器指令的执行需要获得指令、分析指令、执行指令。大致过程如下所述。
(1)获取指令:从存储单元地址等于当前程序计数器PC的内容的那个存储单元中读取当前要执行的指令,并把它存放到指令寄存器IR中。
(2)分析指令:指令译码器ID分析该指令(称为译码)。
(3)生成控制信号:操作控制器根据指令译码器ID的输出(译码结果),按一定的顺序产生执行该指令所需的控制信号。
(4)执行指令:在控制信号的作用下,计算机各部件完成相应的操作,实现数据的处理和结果的保存。
(5)重复执行:计算机根据程序计数器PC中新的指令地址,重复执行上述4个过程,直至执行到指令结束。
控制器和运算器是计算机的核心部件,这两个部分合称为计算机的中央处理器(Central Processing Unit,CPU),如图1-12所示的例子。在微型计算机中通常称为微处理器(Micro Processing Unit,MPU)。微型计算机的发展与微处理器的发展是同步的。
图1-12 CPU外形
时钟主频指CPU的时钟频率,是微型计算机性能的一个重要指标,它的高低在一定程度上决定了计算机运行速度的快慢。主频以吉赫兹(GHz)为单位,一般来说,主频越高,速度越快。由于微处理器发展迅速,微型计算机的主频也在不断地提高。目前“奔腾”(Pentium)处理器的主频已达到1~5GHz。
1.3.2.3 存储器
存储器(Memory)是计算机存储信息的“仓库”。所谓“信息”是指计算机系统所要处理的数据和程序。程序是一组指令的集合。存储器是有记忆能力的部件,用来存储程序和数据。从存储器中取出信息,不破坏原有的内容,这种操作称为存储器的读出;把信息写入存储器,原来的内容被抹掉,这种操作称为存储器的写入。存储器可分为两大类:内存储器和外存储器。
内存储器简称内存(又称主存),是计算机中信息交流的中心,内存的存取速度和存储容量大小直接影响着计算机的运算速度。内存条外形根据存储技术的进步而有多种形式,图1-13所示为较简单的一种。
图1-13 内存条外形
内存一般采用半导体存储器。根据工作方式的不同,内存又可分为随机存储器和只读存储器。
① 随机存储器(RAM):在计算机运行过程中所存储的内容可以随时读出,又可以随时写入新的内容或修改已存入的内容。断电后所存储的内容全部丢失。RAM又可以分为静态RAM和动态RAM两种。静态RAM的特点是只要不断电,信息就可长时间地保存。其优点是速度快,不需要刷新,工作状态稳定;缺点是功耗大,集成度低,成本高。动态RAM的优点是使用组件少,功耗低,集成度高;缺点是存取速度较慢且需要刷新。
② 只读存储器(ROM):所存储的内容只能读出,不能写入。ROM的内容不可以随便改变,所以断电后所存储的内容不会丢失。
外存储器设置在主机外部,简称外存(又称辅助存储器,简称辅存),外存是内存的扩充,外存的存储容量大,存取速度慢,主要用来长期存放暂时不用的程序和数据。通常外存不和计算机的其他部件直接交换数据,只和内存交换数据。常见的外存有硬盘、SSD盘、U盘、磁带、光盘等。
1.3.2.4 输入/输出设备
输入/输出设备(Input/Output Devices,I/O设备,也称外部设备)是计算机硬件系统不可缺少的组成部分,是计算机与外部世界进行信息交换的中介,是人与计算机联系的桥梁。
1. 输入设备
输入设备(Input Device)是向计算机输入数据和信息的设备,是计算机与用户或其他设备通信的桥梁。键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、游戏杆、语音输入装置等都属于输入设备。输入设备是人或外部与计算机进行交互的一种装置,用于把原始数据和处理这些数据的程序输入到计算机中。计算机能够接收各种各样的数据,既可以是数值型的数据,也可以是各种非数值型的数据,如图形、图像、声音等都可以通过不同类型的输入设备输入到计算机中,进行存储、处理和输出。
2. 输出设备
输出设备(Output Device)是计算机的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等,也可以把各种计算结果的数据或信息以数字、字符、图像、声音等形式表示出来。主要功能是将内存中计算机处理后的信息以能为人或其他设备所能理解的形式输出。输出设备种类也很多,常见的有显示器、打印机、绘图仪、影像输出系统、语音输出系统、磁记录设备等。打印机和显示设备已成为每台计算机和大多数终端所必需的设备。
3. 其他输入/输出设备
目前,不少设备同时集成了输入/输出两种功能,例如,调制解调器(Modem),它是数字信号和模拟信号之间的桥梁。用一台调制解调器将计算机的数字信号转换成模拟信号,通过电话线传送到另一台调制解调器上,经过解调,再将模拟信号转化为数字信号送入计算机,实现两台计算机之间的数据通信。再比如,触摸屏既可以以“显示器”的身份作为计算机输出设备,也可以用“键盘”的身份作为计算机输入设备。
1.3.3 计算机的结构
计算机硬件系统的五大部件并不是孤立存在的,它们在处理信息的过程中需要互相连接以传输数据。计算机的结构反映了计算机各个组成部件之间的连接方式。
1. 直接连接
最早的计算机基本上采用直接连接的方式。运算器、存储器、控制器和外部设备等组成部件,相互之间都有单独的连接线路。这样的结构可以获得更高的连接速度,但不易扩展。如冯·诺依曼在1952年研制的计算机IAS,基本上就采用了直接连接的结构。IAS是计算机发展史上最重要的发明之一,它是世界上第一台采用二进制的存储程序计算机,也是第一台将计算机分成运算器、控制器、存储器、输入设备和输出设备等组成部分的计算机。IAS是现代计算机的原型,大多数现代计算机仍在采用这样的设计。
2. 总线结构
现代计算机普遍采用总线结构。所谓总线(Bus)就是系统部件之间传送信息的公共通道,各部件由总线连接并通过它传递数据和控制信号。总线经常被比喻为“高速公路”。它包含了运算器、控制器、存储器和I/O部件之间进行信息交换和控制传递所需要的全部信号。按照传输信号的性质划分,总线一般又分为以下三个部分。
(1)数据总线:一组用来在存储器、运算器、控制器和I/O部件之间传输数据信号的公共通路。一方面是用于CPU向主存储器和I/O接口传送数据,另一方面是用于主存储器和I/O接口向CPU传送数据,是双向的总线。数据总线的位数是计算机的一个重要指标,它体现了传输数据的能力,通常与CPU的位数相对应。
(2)地址总线:是CPU向主存储器和I/O接口传送地址信息的公共通路。地址总线传送地址信息,地址是识别信息存放位置的编号,地址信息可能是存储器的地址,也可能是I/O接口的地址。通常,它是自CPU向外传输的单向总线。由于地址总线传输地址信息,所以地址总线的位数决定了CPU可以直接寻址的内存范围。
(3)控制总线:一组用来在存储器、运算器、控制器和I/O部件之间传输控制信号的公共通路。控制总线是CPU向主存储器和I/O接口发出命令信号的通道,又是外界向CPU传送状态信息的通道。
3. 总线标准
总线在发展过程中已逐步标准化,常见的总线标准有ISA总线、PCI总线、AGP总线和EISA总线等,分别简要介绍。
(1)ISA总线:采用了16位的总线结构,适用范围广,有一些接口卡就是根据ISA标准生产的。
(2)PCI总线:采用了32位的高性能总线结构,可扩展到64位,与ISA总线兼容。目前,PCI已升级为PCI-EP1~PCI-EP32标准,高性能微型计算机主板上都设有PCI-E总线。该总线标准性能先进、成本较低、可扩充性强,现已成为新型计算机普遍采用的外设接插总线标准。
(3)AGP总线:是随着三维图形的应用而发展起来的一种总线标准。AGP总线在图形显示卡与内存之间提供了一条直接的访问途径。
(4)EISA总线:是对ISA总线的扩展。
总线结构是当今计算机普遍采用的结构,其特点是结构简单清晰、易于扩展,尤其是在I/O接口的扩展能力方面,由于采用了总线结构和I/O接口标准,用户几乎可以随心所欲地在计算机中加入新的I/O接口卡。图1-14所示就是一个基于总线结构的计算机结构示意图。
图1-14 基于总线结构的计算机结构示意图
1.3.4 计算机软件系统的组成
软件系统是指使用计算机所运行的全部程序的总称。软件是计算机的灵魂,是发挥计算机功能的关键。有了软件,人们可以不必过多地去了解机器本身的结构与原理,就可以方便灵活地使用计算机,从而使计算机有效地为人类工作、服务。
1.3.4.1 软件系统概述
随着计算机应用的不断发展,计算机软件在不断积累和完善的过程中,形成了极为宝贵的软件资源。它在用户和计算机之间架起了桥梁,给用户的操作带来极大的方便。
在计算机系统中,硬件和软件之间并没有一条明确的分界线。理论上,任何一个由软件完成的操作也可以直接由硬件来实现,而任何一个由硬件执行的指令也能够用软件来完成。硬件和软件有一定的等价性,例如,图像的解压,以前低档计算机是用硬件解压,现在高档计算机则用软件来实现解压。
软件和硬件之间的界线是经常变化的,要从价格、速度、可靠性等多种因素综合考虑,来确定哪些功能用硬件实现合适,哪些功能用软件实现合适。
1.3.4.2 软件系统组成
软件系统是指程序、程序运行所需要的数据以及开发、使用和维护这些程序所需要的文档的集合。计算机软件极为丰富,要对软件进行恰当的分类是相当困难的。通常的分类方法是将软件分为系统软件和应用软件两大类,如图1-15所示。
图1-15 软件系统的组成
1. 系统软件
系统软件是控制计算机的运行、管理计算机的各种资源并为应用软件提供支持和服务的一类软件。在系统软件的支持下,用户才能运行各种应用软件。系统软件通常包括操作系统、编程语言处理程序和数据库管理系统。
(1)操作系统(Operating System,简称OS):为了使计算机系统的所有软、硬件资源协调一致、有条不紊地工作,就必须有一种软件来进行统一的管理和调度,这种软件就是操作系统。操作系统的主要功能就是管理和控制计算机系统的所有资源(包括硬件资源和软件资源)。
操作系统通常分成以下五类。
1)单用户操作系统(微软的MS-DOS、早期Windows版本属于此类)。
2)批处理操作系统(IBM的DOS/VSE属于此类)。
3)分时操作系统(UNIX是国际最流行的分时操作系统)。
4)实时操作系统(例如VxWorks、uC/OS-Ⅱ、RT-Linux等)。
5)网络操作系统。(例如UNIX、Linx、MacOS、新型Windows系统等)
(2)语言处理程序:软件经历了由机器语言、汇编语言到高级语言的发展阶段,计算机硬件唯一识别和执行的是由机器指令组成的机器语言程序。机器语言实际上就是一串串的二进制代码,它虽然能被计算机直接识别,但对使用计算机的人来说,这些代码难认、难记、难改,因此就产生了有利于人们编写程序的汇编程序设计语言和高级程序设计语言,比如常用的C语言、VB语言等就属于高级语言。
(3)数据库管理系统(DBMS):专门用于管理大量数据和开发数据管理软件的系统软件,比如SQL Server、Oracle、MySQL、NoSQL等。
2. 应用软件
应用软件是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,分为应用软件包和用户程序。应用软件包是利用计算机解决某类问题而设计的程序的集合,供多用户使用。应用软件是为满足用户不同领域、不同问题的应用需求而提供的那部分软件。它可以拓宽计算机系统的应用领域,放大硬件的功能。应用软件具有无限丰富和美好的开发前景。
应用软件一般都具有特定的应用目的。它往往是适用于某些用户、某些用途的应用程序,如管理软件、计算机辅助设计软件、游戏软件和教学软件等。一般来说,它有比较强的特定功能。
3. 计算机语言
计算机语言是人与计算机之间传递信息的媒介。计算机的运行是由人类所编写的计算机程序指挥的,而用以编写计算机程序的数字、字符、语法规则,以及由这些数字、字符和语法规则所组成的计算机指令就是计算机语言。计算机语言分为三种:机器语言,汇编语言,高级语言。
(1)机器语言。
机器语言是第一代计算机语言,是一种用二进制代码表示的、计算机能直接识别和执行的机器指令的集合。指令是操控计算机的最小功能单元,一条机器语言即为一条指令。由于每台计算机的指令系统各不相同,因此在一台计算机上执行的程序并不能在另一台计算机上执行。但也正因为程序的针对性较强,因此对于特定型号的计算机而言,运算效率是所有语言中最高的。
(2)汇编语言。
由于直接使用机器语言编写程序十分不便,且二进制代码编写的程序可读性差,难以修改,因此汇编语言应运而生。汇编语言是面向计算机的程序设计语言。在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制代码,就把机器语言变成了汇编语言,所以汇编语言也被称为符号语言。汇编语言与机器语言一样是针对特定型号的机器的,因此不可移植。
(3)高级语言。
高级语言是相对于汇编语言而言的,并不特指某一种具体的语言,而是包括多种编程语言,如Java、C、C++、Pascal、Ruby、Python等,这些语言的语言、命令格式各不相同。
高级语言与机器语言和汇编语言不同,它不针对特定的机器,而是基本脱离了机器的硬件系统,用自然语言和数学公式进行编程,可方便地表示数据、运算、程序的控制结构,能更好地描述各种算法,更容易学习和掌握。
高级语言从程序的执行方式来说可以分为编译型语言和解释型语言两种。
1)编译型语言。
编译型语言是指使用专门的编译器,针对特定平台(操作系统),将某种高级语言源代码一次性“翻译”成可被该操作系统硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行程序的格式,其执行方式如图1-16所示。编码型语言可以脱离开发环境独立运行,且运行效率较高,但由于被编译成为特定平台的机器码,所以跨平台不便。如果需要移植时,则必须将源代码复制到特定平台上,针对特定平台进行修改,至少也需要使用特定平台上的编译器进行重新编译。
目前常见的编译型语言有C、C++、FORTRAN、Pascal等。
图1-16 编译型语言的执行方式
2)解释型语言。
解释型语言指使用专门的解释器将源程序逐行解释成特定平台(操作系统)的机器码并立即执行,如图1-17所示。由于每次执行解释型语言的程序都需要进行一次编译,因此解释型语言的运行效率通常较低,而且不能脱离解释器独立运行。但是,解释型语言跨平台比较容易,只需提供特定平台的解释器,将源程序解释成特定平台的机器指令即可。
图1-17 解释型语言的执行方式
目前常见的解释型语言有Ruby、Python等。