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

1.2.2 计算机的概念及其变迁

前面已简单介绍了计算机,接着对计算机这个概念作进一步的介绍。

计算机的概念是与计算机的不同发展时代有关的,它一般可以分为三个阶段:

第一阶段:计算机主要表现为计算机硬件。

第二阶段:计算机主要表现为计算机硬件+计算机软件。

第三阶段:计算机主要表现为计算机硬件+计算机软件+计算机网络(支撑)。

下面对这三个阶段进行介绍。

1.计算机硬件

(1)计算机硬件概述

在计算机发展初期,计算机的主要表现形式是计算机硬件(computer hardware)。所谓硬件即是由电子元器件为主所组成的计算机实体,它看得见、摸得到,具有金属外壳,坚固、硬实。硬件一般由五个部分组成:运算器、控制器、存储器以及输入装置、输出装置等,它们通过总线与接口互相连接构成一个整体,以完成计算任务。其中,运算器与控制器的组合构成一个基本处理单元,称为中央处理器(CPU)。硬件的主要功能是执行指令。指令有运算指令、控制指令、传输指令、输入/输出指令等。

计算机硬件是一个独立的计算装置,用户需作计算时,只要从输入装置输入相应的指令及数据后,计算机即能按指令要求工作从事“计算”,最终将计算结果通过输出装置输出。图1-1所示为计算机硬件的工作流程。

图1-1 计算机硬件工作流程图

(2)计算机硬件的分类

计算机硬件发展很快,目前已形成一个庞大的计算机家族,它可按不同角度分为不同种类:

①按用途分类:计算机硬件可按不同用途分为通用与专用两类,其中通用计算机具有广泛的使用范围,而专用计算机则主要用于特殊的应用领域,如仪器仪表中、自动火炮中、数控车床中等。

②按规模分类:计算机硬件可按不同规模分为巨型计算机、大型计算机、小型计算机、个人计算机及嵌入式计算机等。

•巨型计算机:又称超级计算机,其峰值速度一般在亿次/s以上。它主要用于复杂的科学计算中。我国的“天河”“银河”“曙光”计算机均属此列。

•大型计算机:此类计算机的运算速度在千万次/s以上,且有大存储容量,它主要用于大型应用系统中,如银行、保险等金融系统中。

•小型计算机:此类计算机的运算速度与存储容量均小于大/中型计算机,它主要用于一般应用系统或小型应用系统。

•个人计算机:也称PC(personal computer),又称微型计算机。它是微电子技术发展的结果。它的特点是体积小、使用方便,通常由一个用户专用,故称个人计算机。个人计算机发展至今已分为台式计算机与笔记本式计算机(或称便携机)两种。

嵌入式计算机:一种体积更小、专门为某些设备配套的计算机,它往往嵌入于设备中,因此称为嵌入式计算机。例如,安装于手机、数码照相机、MP3中,或安装于游戏机、机器人、自动车床、自动流水线及自动武器中等。

③按性质分类:计算机硬件可按不同性质分为服务器与客户机两类。

服务器是为多个用户提供公共服务的计算机。这种计算机往往要求存储量大、速度快的计算机,如打印服务器、文件服务器、应用服务器、数据库服务器以及Web服务器等,它们一般设置于计算机网络环境中。

客户机是为客户直接服务的计算机。

④按字长分类:计算机存储与处理数据单位有固定长度,它们按二进制数字计算可分为16位、32位、64位等。

(3)计算机硬件的发展历史

计算机硬件发展从1946年开始至今已有70余年历史,在其发展的历史长河中与电子技术的突破性进展紧密相关,一般将它分为四个发展时代:

①第一代计算机(1946—1957):世界上第一台真正的数字电子计算机诞生于1946年,而在它之前人类为实现能计算的机器已奋斗了数千年,前面所说的算盘、计算器以及计算尺即是有力的证明。但是,真正实现快速、自动计算机器的梦想,只有到20个世纪才成为可能。20世纪30年代电子技术的发展为计算机出现奠定了物理基础。而1936年英国人图灵(Alan Turing,见图1-2)则给出了构造计算机的一种模型,称为图灵机,它为计算机的出现在理论上奠定了基础。最后,由于第二次世界大战的爆发,迫切需要快速计算用于军事领域的应用刺激,最终出现了第一台计算机ENIAC(Electronic Numerical Integrator And Calculator,见图1-3)。

图1-2 图灵

图1-3 第一台计算机ENIAC

ENIAC是美国宾夕法尼亚大学教授约翰·莫克莱所领导的一个小组所研制成功的世界上首台计算机。对它的研制始于1944年,该计算机主要是为美国海军计算炮弹的弹道轨迹而研制的。ENIAC用电子管作为主要组件,它使用了18000多个电子管,占地面积167m2,重达30吨,加法运算速度可达5000次/s。

图1-4 冯·诺依曼

在接下来的第二台计算机EDVAC中,由美籍匈牙利专家冯·诺依曼(John von Neumann,见图1-4)所领导的研制小组对计算机的结构体系作了新的调整,形成了目前被广泛采用的冯·诺依曼体系,又称冯·诺依曼计算机,这种结构体系一直沿用至今。EDVAC于1950年研制成功并投入运行。1946年的ENIAC和1950年的EDVAC这两台计算机是计算机发展历史上具有标志性作用的机器。

到了20世纪50年代以后,计算机正式进入商用。IBM公司于1953年研制成功第一台商用计算机IBM701,并投入批量生产,从此以后就开始了计算机应用和计算机产业的发展。

②第二代计算机(1958—1964):第一代计算机虽然使用电子管,运算速度快,但是它所占体积大、耗电量高、可靠性差、制造成本高、维护难,这些缺点也严重制约了它的发展,特别是随着应用扩大,运算速度已明显不能满足需要,因此迫切需要进一步的改造与发展。

到了20世纪50年代后半期,由于晶体管的出现并且取代了电子管,计算机进入了新的一代,称第二代计算机。

由于晶体管的体积小、耗电量低、可靠性高,更主要的是速度快,因此,它的使用使计算机有了质的飞跃。

第二代计算机的典型产品有IBM公司IBM7094与CDC公司的CDC1640等。同时,计算机已开始进入大规模的商用阶段。

③第三代计算机(1965—1971):电子技术的进一步发展及集成电路的出现,催生了第三代计算机的问世。集成电路是将大量的晶体管等组件组合在一块硅芯片上,因此又称芯片。集成电路的集成规模在当时有两种档次,一种是小规模集成电路,其集成规模为100个晶体管以下;另一种是中规模集成电路,其集成规模为100~1000个晶体管。

在1965年,美国的DEC公司首推集成电路计算机PDP-8,从而使计算机进入了第三个历史时代。

第三代计算机是以小规模及中规模集成电路取代晶体管电路为特点的新一代计算机,它具有比第二代更小的体积、更快的速度、更低的耗电量。

第三代计算机的典型产品是IBM公司的IMB360和370系列以及DEC公司的PDP系列,它们在20世纪60年代至70年代间起到了重要作用。

④第四代计算机(1972至今):第四代计算机是采用大规模及超大规模集成电路为特点的计算机。所谓大规模集成电路指的是集成度在1000~10000个组件的芯片,而所谓超大规模集成电路则指的是集成度在10000个组件以上的芯片。目前,这种芯片的集成规模正按照摩尔定律(Moore’s law)的法则逐年变化。所谓摩尔定律是对芯片集成度规律的一种预测的描述,摩尔定律告诉我们,芯片的集成度每隔一年提高一倍,价格降低一倍,而速度也加快一倍。

由于大规模及超大规模电路的采用,第四代计算机正在向两个方向迅速发展。

a.巨型机方向:计算机要进一步提高速度与计算能力,除了依靠微电子技术外,更主要的是需挖掘自身的潜能,而目前所采用的办法是计算机自身的并行技术。所谓并行技术即是将多个计算单元组合在一起,共同协作完成计算任务。这种计算机称为并行计算机(parallel computer)。

目前,几乎所有的大型机与巨型机都采用这种并行技术,一般大型机中都包含有数十个CPU,巨型机中则包含有1000~10000个CPU,或超过10000个以上的CPU。

我国的巨型机:“银河”“天河一号”“天河二号”等在过去几年中连续六次获得TOP500国际超级计算机评比冠军,它们都是由数千个到上万个芯片所组成的并行机。

2016年6月20日,2016最新TOP500评比结果出炉,全球超级计算机500强公布,我国有167台巨型机进入500强内,占全球总数第一。而其中:“神威太湖之光”以10亿亿次/s速度荣登榜首。该机器是一台采用了40000个国产芯片所组成的并行机,实现了全部元器件国产化(见图1-5)。

图1-5 “神威太湖之光”计算机

b.微型化方向:计算机发展的另一个方向是微型化方向。由于大规模及超大规模电路的出现,使得这种发展成为现实。它们如微型计算机、笔记本式计算机、平板计算机、手机及单板机、单片机等。目前一般只要安装一块电路板即能实现计算机的功能。

首台商用微型计算机是1975年的MITSAltair,它使用的是Intel公司的8080芯片,接着IBM公司所开发的微型计算机系列占领了计算机的市场,成为计算机市场中的佼佼者。而当前,在微型化方向上进一步发展,它们是以iPad为代表的平板计算机以及以iPhone为代表的移动计算机已成新的发展方向。

2.计算机软件

(1)计算机软件的基本概念

计算机软件这个术语是相对于计算机硬件而言的,计算机软件是看不见、摸不到的一些程序与数据。

在计算机诞生的初期,由于其结构简单、应用面窄,因此计算机的运行所用指令少、数据量小。此时,计算机作为一个运行独立单位,只要输入少量指令与数据,即能独立运行并最后产生结果。那时,在计算机中并没有软件这个概念。但是,随着计算机的硬件的发展、应用面的扩大,从20世纪60年代初开始,计算机软件这个概念就开始出现。

计算机是一种“计算“的机器,它不会自动计算,它的计算完全是听从指令的指挥,即计算机是一种执行指令的机器。当人们需要计算时,将它们编制成指令的序列交给计算机执行,这是人们使用计算机的最常用方式。这种“指令的序列”称为程序;而“编制指令序列”则称为程序设计,或称为编程。

随着应用中求解问题的规模与复杂度增加,程序也越来越大,程序设计也越来越困难,此时迫切需要有一种更为接近自然语言的工具来编程,这就是计算机程序设计语言。用这种语言编程可以大大提高编程效率,加快应用开发。在使用了程序设计语言后,人们所编写的程序需通过一个翻译程序将其转换成由指令所组成的程序,然后再交由计算机执行。这个翻译程序称为语言处理系统(language processing system)。

同时,由于计算机的发展,其内部的设备及软件也越来越多,此时需要有一种软件对它作统一管理,这种软件称为操作系统(operating system,OS)。

此外,计算机执行计算的对象是数据,在初期,计算机存储容量小,因而数据量也很少,一般只达KB级(即1000个字节单位),随着计算机存储容量的增加,目前已可达GB级或TB级(即10亿个单位或万亿个单位字节),因此计算机存储的数据量也很多。为方便用户使用这些数据,需要有专用的软件进行管理,这种软件就是数据库管理系统(database management system,DBMS)。

与此同时,为解决应用中的问题而编写的程序(称为应用软件)也大量出现。另外,还有一些用于支持应用软件正常运行的软件(称为支撑软件)也相应出现与发展。

所有这些程序,还需要有海量的数据与之匹配,它们组成了计算机软件(computer software),这些软件需要长期驻留于计算机内,并成为计算机正常运行的必不可少的条件。

在计算机软件中一般将其分成为三部分:系统软件、应用软件与支撑软件。下面对这三部分作简单介绍。

①系统软件:系统软件是为计算机运行提供基础性支持的软件,它一般包括语言处理系统、操作系统及数据库管理系统三种。

②应用软件:应用软件是直接面向应用的软件,如字处理软件、文稿演示软件、财务处理软件、电子商务软件以及目前大量流行的App等均是应用软件。

③支撑软件:一些介于系统软件与应用软件间的软件起着工具与接口的作用,它们对应用软件具有支撑意义,因此称为支撑软件,如图像处理软件、文件传输软件、数据与程序的接口软件等均属此类软件。

(2)计算机概念的第一次变化

有了计算机软件后,计算机硬件已不能构成一个独立的运行实体,它必须在软件的支撑与协助下才能完成计算。因此,在20世纪60年代后,人们所理解与认识的计算机是计算机硬件与软件的结合体,一般称为计算机系统(computer system),有时也可简称为计算机。在这种计算机中,计算机硬件往往称为裸机,而其软件可以认为是“穿在裸机身上的服装”。如同人一样,一个正常的人应该是一个穿着端正的人,同样,一个正常的计算机应该是硬件与软件相结合的计算机。这就是计算机硬件、软件与计算机间的关系。图1-6给出了这种计算机新概念示意图。

图1-6 计算机新概念示意图

(3)计算机软件的发展历史

虽然计算机软件与硬件关系密切,但是计算机软件的发展有其自身的历史轨迹,了解软件进化方式对理解软件在现代计算机系统中的重要性是至关重要的。

计算机软件发展自1951年起到目前为止经历了五个时代,分别是:

①第一代软件(1951—1959)——萌芽期:自1950年冯·诺依曼计算机出现后就有了程序与程序设计的概念。但是,那时的程序是用计算机的指令所编写的,这种指令称为机器指令或机器语言,因为这是计算机的语言。这种语言是由一串二进制数字所组成,而一个程序往往就是一大串二进制数字。这种语言与自然语言差距极大,因此人们要使用它与阅读它均十分困难,当时人们称之为“天书”。这种说法充分反映了机器语言对人类的不适应性,特别是用它编制程序时,不仅困难,同时极易出错。人们企图摆脱这种困境,这就出现了产生软件的原动力。

首先所出现的改变是将这种二进制数字符串的指令用人们所熟悉的符号表示,如用ADD表示加法,而取代二进数字中的“101”;如用sub表示减法指令,取代二进制字符串中的“110”。用符号替代机器指令后,所形成的语言称为汇编语言(assembly language)。人们用汇编语言编程比过去方便多了。

但是,仅有汇编语言是不够的,因为用汇编语言所写成的程序无法被机器所识别,更不能在计算机上运行。因此,必须将这种程序翻译成机器语言后计算机才能执行,而这种“翻译”也可以用程序实现,这种程序称为汇编程序。

机器指令编程与汇编语言编程构成了第一代软件的基本特征。汇编语言的出现迈开了计算机程序设计语言的第一步。

但是,在第一代软件中尚未出现软件的概念,仅仅有软件的一些思想与局部性的概念。因此,称这一代为软件的萌芽期,而真正软件的出现则是在第二代。第一代软件的示意图如图 1-7(a)所示。

②第二代软件(1960—1965)——软件初创期:真正意义上的软件出现于第二代,其标志性的成果是高级程序设计语言的出现。虽然汇编语言的出现改变了程序的面貌,但是它仅仅是机器语言的一种改良而已,离真正人类所使用的自然语言还很远,因此,要达到这种境界不仅存在着技术上的困难,而且更主要的是理论上的困难,而这些困难的克服在第二代软件这个时期内都得到了解决。

在20世纪60年代上半期,真正的接近自然语言的程序设计语言问世,对汇编语言而言,它称为高级程序设计语言,其典型的代表是ALGOL、FORTRAN及COBOL等。

随着高级程序设计语言的出现,翻译这些语言的翻译程序能将高级程序设计语言翻译成机器语言,称为编译程序(compiler),它是语言处理系统的一种形式。

在这个时代软件才真正出现,它是软件发展的初期,因此该时代称为软件的初创期。图1-7(b)所示为这个时代的示意图。

③第三代软件(1965—1971)——软件发展期:这个时代是软件的发展时代,目前一般所应用的软件在这个时期都已逐步形成,它们是:

•操作系统:由于计算机结构越来越复杂,计算机内程序与数据越来越多,因此需要有一个协调的机构以统一管理,这个机构可以用软件实现,称为操作系统。操作系统的出现从另一个角度改变了计算机的面貌。

•数据库管理系统:数据库管理系统主要用于管理计算机内日益增多的数据量,为有效组织数据与操作数据提供方便。

•应用软件包:在该时代中出现了众多的应用软件包,如办公软件包Office、杀毒软件等,它们为用户应用提供了很多方便。

在这个时代中,语言处理系统、操作系统及数据库管理系统组成了系统软件,而应用软件包则是支撑软件的前身,再加上这个时代的大量应用程序,它们构成了整个软件的基本架构。

在这个时代中所有这些软件一般需常驻于计算机内,它们构成了计算机的一部分。因此,计算机概念的改变确切地说始于此时代的末期,即从20世纪70年代以后,计算机的概念不仅包含硬件,同时也将软件包含在内。图1-7(c)所示为这个时代的示意图。

④第四代软件(1971—1989)——软件持续发展期:这个时代是软件持续发展的时代,其主要特征是软件工程的发展,其原因是缘于大型应用程序出现,迫切需要规范应用程序的开发,因此需要有一个完整的开发软件的思想与方法,这就出现了软件工程。软件工程为促进大型应用系统的发展做出了贡献,同时也为软件的发展做出了贡献。如结构化方法、面向对象方法都是在这个时代诞生的。图1-7(d)所示为这个时代的示意图。

⑤第五代软件(1990至今)——软件成熟期:这个时代是软件收获的季节,累累硕果挂满软件这棵大树枝头,供人们欣赏、采摘。

经过几十年的努力与奋斗,软件发展已取得重大阶段性成果。软件从思想、理论与方法,从研究到开发都告诉我们,一个完整的软件体系已经建立,具体表现为如下几个方面:

•系统软件基本定型:系统软件中的操作系统、数据库管理系统与语言处理系统经过不断竞争与发展,其中的Windows、UNIX及Linux脱颖而出成为操作系统的代表性产品;Oracle、DB2及SQLServer等数据库管理系统成为典型的数据库管理系统产品;在程序设计语言方面,C、C++及Java等已成为目前常用的工具。

•大型应用系统开发方法已基本成熟:经过数十年开发的积累与研究,对大型应用系统开发已有一套行之有效的方法。

•已形成一套完整理论体系:在对软件研究的基础上已形成了一套完整的体系,包括算法

理论与数据理论等。

图1-7(e)所示为这个时代的示意图。

图1-7 软件发展历史示意图

3.计算机网络

(1)计算机网络的基本概念

计算机网络是在计算机及数据通信发展基础之上所出现的,它是地理上分散的多台自主计算机互连的集合,是自主计算机与数据通信按一定协议要求所组成的实体。网络的出现使计算机打破了地域的限制,从而使计算机应用领域更为广泛。

计算机网络的进一步发展是互联网,它使得计算机在全球范围内连在一起,当前进入了互联网时代。

(2)计算机概念的又一次改变

计算机网络的出现使计算机的概念又一次发生改变。现在的计算机已不是孤单的计算机,而是与网络相连的计算机,譬如人一样,现代的人是在社会中生活的人,这是一种社会人,而不是离群索居的,也不是闭关自守的人。这种与网络相连的计算机与孤单的计算机有着不同,其主要差别至少有下面几点:

①这种计算机具有更多资源可以利用,包括数据资源、软件资源及硬件资源等,称为资源共享。

②这种计算机具有能进行相互沟通与相互支持的能力。例如,可以进行E-mail通信、QQ交流等;又如,具有远程医疗、远程教育以及远程通信等能力。

③这种计算机还能通过网络多机协作完成单机无法完成的大型计算任务。

目前的计算机正是这种以网络为依托的计算机,这是目前人们所看到与使用的计算机。当前有一句名言:“网络即是计算机”,它指的即是现代的计算机必是在网络支撑下的计算机。这种计算机又称计算机系统或简称计算机,如图1-8所示。

图1-8 计算机系统又一个新的概念示意图

(3)计算机网络的发展历史

计算机网络的发展是计算机发展的必然结果,它与计算机发展紧密相关。计算机网络发展一般可分为三个阶段,它们是:

①网络发展第一阶段(1969—1975)——网络初创阶段:在计算机出现23年后,受计算机发展影响及应用的促进,在1969年由美国国防部的国防部先进研究项目局(DARPA)所研制的首个网络ARPANET问世,当时,这是一个仅有四个节点的简单网络,它是一种实验性的系统,主要用于试验网络的可行性。在获得试验成功的基础上,计算机网络逐步开始流行,各种协议也相继出现,同时IBM公司及DEC公司等也相继推出各自的网络体系结构SNA和DNA,计算机网络正式进入商用领域。

②网络发展第二阶段(1976—1983)——局域网阶段:1976年,美国Xerox公司首推以太网用于局域网中,由于以太网性能好且安装、使用方便,因此成为广泛使用的一种局域网。

由于以太网的使用在局域网的应用中掀起了一个高潮,计算机网络从此进入了一个普及阶段,进而扩充到了广域网领域。与此同时,与网络相关的软件也迅速发展与壮大。

③网络发展第三阶段(1983至今)——因特网阶段:因特网(Internet)从1983年开始试验到1994已进入实用阶段,并进入商业化时代,目前它已普及全球,几乎所有计算机都已接入因特网。全球网民已超过30亿。

与此同时,与因特网有关的软件也得到发展,目前已形成了一个完整的网络体系,当今的应用软件实际已是一个网络应用软件。