计算机的基本组成及工作原理
1.3.1 计算机系统的组成
计算机系统是由硬件系统和软件系统两大部分组成,这一节将分别介绍计算机硬件系统和软件系统。
计算机硬件是构成计算机系统各功能部件的集合。是由电子、机械和光电元件组成的各种计算机部件和设备的总称,是计算机完成各项工作的物质基础。计算机硬件是看得见、摸得着的,实实在在存在的物理实体。
计算机软件是指与计算机系统操作有关的各种程序以及任何与之相关的文档和数据的集合。其中程序是用程序设计语言描述的适合计算机执行的语句指令序列。
没有安装任何软件的计算机通常称为“裸机”,裸机是无法工作的。如果计算机硬件脱离了计算机软件,那么它就成为了一台无用的机器。如果计算机软件脱离了计算机的硬件就失去了它运行的物质基础;所以说二者相互依存,缺一不可,共同构成一个完整的计算机系统。
计算机系统的基本组成如图1-6 所示。
图1-6 计算机系统的基本组成
1.3.2 计算机硬件系统的基本组成及工作原理
现代计算机是一个自动化的信息处理装置,它之所以能实现自动化信息处理,是由于采用了“存储程序”工作原理。这一原理是1946年由冯 · 诺依曼和他的同事们在一篇题为《关于电子计算机逻辑设计的初步讨论》的论文中提出并论证的。这一原理确立了现代计算机的基本组成和工作方式。
⑴ 计算机硬件由五个基本部分组成:运算器、控制器、存储器、输入设备和输出设备。
⑵ 计算机内部采用二进制来表示程序和数据。
⑶ 采用“存储程序”的方式,将程序和数据放入同一个存储器中(内存储器),计算机能够自动高速地从存储器中取出指令加以执行。
可以说计算机硬件的五大部件中每一个部件都有相对独立的功能,分别完成各自不同的工作。如图1-7所示,五大部件实际上是在控制器的控制下协调统一地工作。首先,把表示计算步骤的程序和计算中需要的原始数据,在控制器输入命令的控制下,通过输入设备送入计算机的存储器存储。其次当计算开始时,在取指令作用下把程序指令逐条送入控制器。控制器对指令进行译码,并根据指令的操作要求向存储器和运算器发出存储、取数命令和运算命令,经过运算器计算并把结果存放在存储器内。在控制器的取数和输出命令作用下,通过输出设备输出计算结果。
1.运算器(ALU)
运算器也称为算术逻辑单元ALU(Arithmetic Logic Unit)。它的功能是完成算术运算和逻辑运算。算术运算是指加、减、乘、除及它们的复合运算。而逻辑运算是指“与”、“或”、“非”等逻辑比较和逻辑判断等操作。在计算机中,任何复杂运算都转化为基本的算术与逻辑运算,然后在运算器中完成。
2.控制器(CU)
控制器CU(Controller Unit)是计算机的指挥系统,控制器一般由指令寄存器、指令译码器、时序电路和控制电路组成。它的基本功能是从内存取指令和执行指令。指令是指示计算机如何工作的一步操作,由操作码(操作方法)及操作数(操作对象)两部分组成。控制器通过地址访问存储器、逐条取出选中单元指令,分析指令,并根据指令产生的控制信号作用于其它各部件来完成指令要求的工作。上述工作周而复始,保证了计算机能自动连续地工作。
通常将运算器和控制器统称为中央处理器,即CPU(Central Processing Unit),它是整个计算机的核心部件,是计算机的“大脑”。它控制了计算机的运算、处理、输入和输出等工作。
集成电路技术是制造微型机、小型机、大型机和巨型机的CPU的基本技术。它的发展使计算机的速度和能力有了极大的改进。在1965年,芯片巨人英特尔公司的创始人戈登 · 摩尔,给出了著名的摩尔定律:芯片上的晶体管数量每隔18~24个月就会翻一番。让所有人感到惊奇的是,这个定律非常精确的预测了芯片的30年发展。1958年第一代集成电路仅仅包含两个晶体管,而1997年,奔腾II处理器则包含了750万个晶体管,2000年的Pentium 4 已达到了0.13微米技术,集成了4200万个晶体管 。CPU集成的晶体管数量越大,就意味着更强的芯片计算能力。
3.存储器(Memory)
存储器是计算机的记忆装置,它的主要功能是存放程序和数据。程序是计算机操作的依据,数据是计算机操作的对象。
⑴ 信息存储单位
程序和数据在计算机中以二进制的形式存放于存储器中。存储容量的大小以字节为单位来度量。经常使用KB(千字节)、MB(兆字节)、GB(千兆字节)和TB来表示。它们之间的关系是:1KB=1024B=210B,1MB=1024KB=220B,1GB=1024MB=230B,1TB=1024G=240B,在某些计算中为了计算简便经常把210(1024)默认为是1000。
位(bit):是计算机存储数据的最小单位。机器字中一个单独的符号“0”或“1”被称为一个二进制位,它可存放一位二进制数。
字节(Byte,简称B):字节是计算机存储容量的度量单位,也是数据处理的基本单位,8个二进制位构成一个字节。一个字节的存储空间称为一个存储单元。
字(Word):计算机处理数据时,一次存取、加工和传递的数据长度称为字。一个字通常由若干个字节组成。
字长(Word Long):中央处理器可以同时处理的数据的长度为字长。字长决定CPU的寄存器和总线的数据宽度。现代计算机的字长有8位、16位、32位、64位。
⑵ 存储器的分类
根据存储器与CPU联系的密切程度可分为内存储器(主存储器)和外存储器(辅助存储器)两大类。内存在计算机主机内,它直接与运算器、控制器交换信息,容量虽小,但存取速度快,一般只存放那些正在运行的程序和待处理的数据。为了扩大内存储器的容量,引入了外存储器,外存作为内存储器的延伸和后援,间接和CPU联系,用来存放一些系统必须使用,但又不急于使用的程序和数据,程序必须调入内存方可执行。外存存取速度慢,但存储容量大,可以长时间地保存大量信息。CPU与内、外存之间的关系如图1-8所示。
现代计算机系统中广泛应用半导体存储器,从使用功能角度看,半导体存储器可以分成两大类:断电后数据会丢失的易失性(Volatile)存储器和断电后数据不会丢失的非易失性(Non-volatile)存储器。微型计算机中的RAM属于可随机读写的易失性存储器,而ROM属于非易失性(Non-volatile)存储器
⑶ 存储器工作原理
为了更好地存放程序和数据,存储器通常被分为许多等长的存储单元,每个单元可以存放一个适当单位的信息。全部存储单元按一定顺序编号,这个编号被称为存储单元的地址,简称地址。存储单元与地址的关系是一一对应的。应注意存储单元的地址和它里面存放的内容完全是两回事。
对存储器的操作通常称为访问存储器,访问存储器的方法有两种,一种是选定地址后向存储单元存入数据,被称为“写”;另一种是从选定的存储单元中取出数据,被称为“读”。可见,不论是读还是写,都必须先给出存储单元的地址。来自地址总线的存储器地址由地址译码器译码(转换)后,找到相应的存储单元,由读/写控制电路根据相应的读、写命令来确定对存储器的访问方式,完成读写操作。数据总线则用于传送写入内存或从内存取出的信息。主存储器的结构框图如图1-8所示。
4. 输入设备
输入设备是从计算机外部向计算机内部传送信息的装置。其功能是将数据、程序及其他信息,从人们熟悉的形式转换为计算机能够识别和处理的形式输入到计算机内部。
常用的输入设备有键盘、鼠标、光笔、扫描仪、数字化仪、条形码阅读器等。
5. 输出设备
输出设备是将计算机的处理结果传送到计算机外部供计算机用户使用的装置。其功能是将计算机内部二进制形式的数据信息转换成人们所需要的或其他设备能接受和识别的信息形式。常用的输出设备有显示器、打印机、绘图仪等。
通常我们将输入设备和输出设备统称为I/O设备(Input/Output)。它们都属于计算机的外部设备。
1.3.3 计算机软件系统
一个完整的计算机系统是由硬件和软件两部分组成的。硬件是组成计算机的物理实体。但仅有硬件计算机还不能工作,要使计算机解决各种问题,必须有软件的支持,软件是介于用户和硬件系统之间的界面。
“软件”一词 20世纪60年代初传入我国。国际标准化组织(ISO)将软件定义为:电子计算机程序及运用数据处理系统所必需的手续、规则和文件的总称。对此定义,一种公认的解释是:软件由程序和文档两部分组成。程序由计算机最基本的指令组成,是计算机可以识别和执行的操作步骤;文档是指用自然语言或者形式化语言所编写的用来描述程序的内容、组成、功能规格、开发情况、测试结构和使用方法的文字资料和图表。程序是具有目的性和可执行性的,文档则是对程序的解释和说明。
程序是软件的主体。软件按其功能划分,可分为系统软件和应用软件两大类型。
1. 1.系统软件(System Software)
系统软件一般是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
常见的系统软件主要指操作系统,当然也包括语言处理程序(汇编和编译程序等)、服务性程序(支撑软件)和数据库管理系统等。
⑴ 操作系统OS(Operating System)
操作系统是系统软件的核心。为了使计算机系统的所有资源(包括硬件和软件)协调一致、有条不紊地工作,就必须用一个软件来进行统一管理和统一调度,这种软件称为操作系统。它的功能就是管理计算机系统的全部硬件资源、软件资源及数据资源,从图1-10可以看出,操作系统是最基本的系统软件,其他的所有软件都是建立在操作系统的基础之上的。操作系统是用户与计算机硬件之间的接口,没有操作系统作为中介,用户对计算机的操作和使用将变得非常难且低效。操作系统能够合理地组织计算机整个工作流程,最大限度地提高资源利用率。操作系统在为用户提供一个方便、友善、使用灵活的服务界面的同时,也提供了其他软件开发,运行的平台。它具备五个方面的功能,即CPU管理,作业管理,存储器管理,设备管理及文件管理。操作系统是每一台计算机必不可少的软件,现在具有一定规模的现代计算机甚至具备几个不同的操作系统。操作系统的性能在很大程度上决定了计算机系统工作的优劣。微型计算机常用的操作系统有DOS(Disk Operating System)、Unix、Xenix、Linux、Windows98/2000、NetWare、WindowsNT、WindowsXP等。
⑵ 语言处理程序
在介绍语言处理程序之前,很有必要先介绍一下计算机程序设计语言的发展。
软件是指计算机系统中的各种程序,而程序是用计算机语言来描述的指令序列。计算机语言是人与计算机交流的一种工具,这种交流被称为计算机程序设计。程序设计语言按其发展演变过程可分为三种:机器语言、汇编语言和高级语言,前二者统称为低级语言。
机器语言(Machine Language)是直接由机器指令(二进制)构成的,因此由它编写的计算机程序不需要翻译就可直接被计算机系统识别并运行。这种由二进制代码指令编写的程序最大的优点是执行速度快、效率高,同时也存在着严重的缺点:机器语言很难掌握,编程繁琐、可读性差、易出错,并且依赖于具体的机器,通用性差。
汇编语言(Assemble Language)采用一定的助记符号表示机器语言中的指令和数据,是符号化了的机器语言,也称作“符号语言”。汇编语言程序指令的操作码和操作数全都用符号表示,大大方便了记忆,但用助记符号表示的汇编语言,它与机器语言归根到底是一一对应的关系,都依赖于具体的计算机,因此都是低级语言。同样具备机器语言的缺点,如:缺乏通用性、繁琐、易出错等),只是程度上不同罢了。用这种语言编写的程序(汇编程序)不能在计算机上直接运行,必须首先被一种称之为汇编程序的系统程序“翻译”成机器语言程序,才能由计算机执行。任何一种计算机都配有只适用于自己的汇编程序(Assembler)。
高级语言又称为算法语言,它与机器无关,是近似于人类自然语言或数学公式的计算机语言。高级语言克服了低级语言的诸多缺点,它易学易用、可读性好、表达能力强(语句用较为接近自然语言的英文字来表示)、通用性好(用高级语言编写的程序能使用在不同的计算机系统上)。但是,对于高级语言编写的程序仍不能被计算机直接识别和执行,它也必须经过某种转换才能执行。
高级语言种类很多,功能很强,常用的高级语言有:其中面向过程的有Basic、用于科学计算的Fortran、支持结构化程序设计的Pascal、用于商务处理的COBOL和支持现代软件开发的C语言 ;现在又出现了面向对象的VB(Visual Basic)、VC++(Visual C++)、Delphi、Java等语言使得计算机语言解决实际问题的能力得到了很大的提高。
Ø Ø Fortran 语言在1954年提出,1956年实现的。适用于科学和工程计算,它已经具有相当完善的工程设计计算程序库和工程应用软件。
Ø Ø Pascal 语言是结构化程序设计语言,适用于教学、科学计算、数据处理和系统软件开发等,目前逐渐被C语言所取代。
Ø Ø C语言是美国Bell实验室开发成功的,是一种具有很高灵活性的高级语言。它语言程序简洁,功能强,适用于系统软件、数据计算、数据处理等,成为目前使用得最多的程序设计语言之一。
Ø Ø Visual Basic是在Basic语言的基础上发展起来的面向对象的程序设计语言的,它既保留了Basic语言简单易学的特点,同时又具有很强的可视化界面设计功能,能够迅速地开发Windows应用程序,是重要的多媒体编程工具语言。
Ø Ø C++是一种面向对象的语言。面向对象的技术在系统程序设计、数据库及多媒体应用等诸多领域得到广泛应用。专家们预测,面向对象的程序设计思想将会主导今后程序设计语言的发展。
Ø Ø Java是一种新型的跨平台分布式和程序设计语言。Java以它简单、安全、可移植、面向对象、多线程处理和具有动态等特性引起世界范围的广泛关注。Java语言是基于C++的,其最大的特色在于“一次编写,处处运行”。Java已逐渐成为网络化软件的核心语言。
语言处理程序的功能是将除机器语言以外,利用其他计算机语言编写的程序,转换成机器所能直接识别并执行的机器语言程序的程序。可以分为三种类型,即汇编程序、编译程序和解释程序。通常将汇编语言及各种高级语言编写的计算机程序称为源程序(Source Program),而把由源程序经过翻译(汇编或者编译)而生成的机器指令程序称为目标程序 (Object Program)。语言处理程序中的汇编程序与编译程序具有一个共同的特点,即必须生成的目标程序,然后通过执行目标程序得到最终结果。而解释程序是对源程序进行解释(逐句翻译),翻译一句执行一句,边解释边执行,从而得到最终结果。解释程序不产生将被执行的目标程序,而是借助解释程序直接执行源程序本身。
应该注意的是,除机器语言外,每一种计算机语言都应具备一种与之对应的语言处理程序。
⑶ 服务性程序(支撑软件)是指为了帮助用户使用与维护计算机,提供服务性手段,支持其他软件开发而编制的一类程序。此类程序内容广泛,主要有以下几种:
Ø Ø 工具软件:工具软件主要是帮助用户使用计算机和开发软件的软件工具,如美国Central Point Software公司推出的PC tools。
Ø Ø 编辑程序:编辑程序能够为用户提供一个良好的书写环境。如EDLIN、EDIT、写字板等。
Ø Ø 调试程序:调试程序用来检查计算机程序有哪些错误,以及错误位置,以便于修正,如DEBUG。
Ø Ø 诊断程序:诊断程序主要用于对计算机系统硬件的检测和维护。能对CPU、内存、软硬驱动器、显示器、键盘及I/O接口的性能和故障进行检测。
⑷ 数据库管理系统。
数据库技术是计算机技术中发展最快、用途广泛一个分支,可以说,在今后的各项计算机应用开发中都离不开数据库技术。数据库管理系统是对计算机中所存放的大量数据进行组织、管理、查询有效提供一定处理功能的大型系统软件。主要分为两类,一类是基于微型计算机的小型数据库管理系统,如FoxBase和Foxpro;另一类是大型数据库管理系统。
2. 2.应用软件
应用软件是指在计算机各个应用领域中,为解决各类实际问题而编制的程序,它用来帮助人们完成在特定领域中的各种工作。应用软件主要包括:为解决各类实际问题而编制的程序,它用来帮肋人们完成在特定领域中的各种工作。应用软件主要包括:
⑴ 文字处理程序:文字处理程序用来进行文字录入、编辑、排版、打印输出的程序,如Microsoft Word、Wps2000等。
⑵ 表格处理软件:电子表格处理程序用来对电子表格进行计算机、加工、打印输出的程序,如Lotus、Excel等。
⑶ 辅助设计软件:软件开发程序是为用户进行各种应用程序的设计而提供的程序或软件包。常用的有AutoCAD、Photoshop、3D Studio MAX等。另外,上述的各种语言及语言处理程序也为用户提供了应用程序设计的工具,也可视为软件开发程序。
⑷ 实时控制软件:在现代化工厂里,计算机普遍用于生产过程的自动控制,称为“实时控制”。例如,在化工厂中,用计算机控制配料、温度、阀门的开闭;在炼钢车间,用计算机控制加料、炉温、冶炼时间等;在发电厂,用计算机控制发电机组等。这类控制对计算机的可靠性要求很高,否则会生产出不合格产品,或造成重大事故。目前,PC机上较流行的软件有FIX、InTouch、Lookout等。
⑸ 用户应用程序;用户应用程序是指用户根据某一具体任务,使用上述各种语言、软件开发程序而设计的程序。如人事档案管理程序、计算机辅助教学软件、各种游戏程序等。