第1章计算机概要与技术·5 库来实现异常复杂的功能。众所周知,计算机中的硬件只能执行极为简单的低级指令。从复杂的 应用程序到简单的指令需要经过几个软件层次,才能将复杂的高层次操作逐步解释或翻译成简 单的计算机指令。 图1-2给出了这些软件的层次结构,外层是应用软件,中心是硬件,系统软件位于两者之 间。系统软件有很多种,其中有两种对于现代计算机系统来说是必需的:操作系统和编译程序。 操作系统是用户程序和硬件之间的接口,为用户提供各种服务和监控功能。操作系统最为重要 的作用是: ·处理基本的输入和输出操作 ·分配外存和内存 ·为多个应用程序提供共享计算机资源的服务 当前我们使用的操作系统主要有Liux、MacOS和Windows等。 应用软件 系统软件 图1-2简化的硬件和软件层次图, 将硬件作为同心圆的中心, 应用程序软件作为最外层 硬件 在复杂的应用中,通常存在多层应用软 件层。例如,一个数据库系统可运行于系 统软件之上,而驻留在该系统软件上的某 应用又反过来运行在该数据库之上。 编译程序e完成另外一项重要功能:把用高级语言(如C、C++、Java或Visual Basic等) 编写的程序翻译成硬件能执行的指令。这个翻译过程是相当复杂的,这里仅作简要介绍,第2章 和附录B将作深入介绍。 从高级语言到硬件语言 谈到电子硬件,首先需要谈到电信号的发送。对于计算机来说,最简单的信号是“通”和 “断”。因此,计算机只用2个字母来表示。正如英语26个字母写多少不受限制一样,计算机的 2个字母写多少也不受限制。代表这些两个字母的符号是0和1,我们通常认为计算机语言就是 二进制数。每个字母就是二进制元数字中的一位®。计算机服从于我们的命令,即计算机术语中 的指令⑤。指令是能被计算机识别并执行的位串,可以被视为数字。例如位串1000110010100000 告诉计算机将2个数相加。第2章将解释为什么数字元既表示指令又表示数据。 第一代程序员是直接使用二进制数与计算机通信的,这是一项非常乏味的工作。所以他们 很快发明了助记符,以符合人类的思维方式。最初助记符是手工翻译成二进制的,其过程显然过 于烦琐。随后设计人员开发了一种称为汇编程序⑧的软件,可以将助记符形式的指令自动翻译成 对应的二进制。例如,程序员写下 add A,B 系统软件(systems software):提供常用服务的软件,包括操作系统、编译程序、加载程序和汇编程序等。 操作系统(operating system):为了使程序更好地在计算机上运行而管理计算机资源的监控程序。 编译程序(compiler):将高级语言翻译为计算机所能识别的机器语言的程序。 PDG @ 位(binary digit或bit):基2数字中的0或l,它是信息的基本组成元素。 国指令(instruction):计算机硬件所能理解并服从的命令。 ®汇编程序(assembler):将指令由助记符形式翻译成二进制形式的程序
6·第1章计算机概要与技术 汇编程序会将该符号翻译成 1000110010100000 该指令告诉计算机将两个数A和B相加。这种符号语言的名称今天还在用,即汇编语言。而机 器可以理解的二进制语言,是机器语言。 虽然这是一个巨大的进步,汇编语言仍然与科学家用来模拟液体流动或会计师用来结算账 目所使用的符号相去甚远。 高级语言程序 swap(int v[],int k) 汇编语言需要程序员写出计算机执行的 (C语言) (int temp; 每条指令,要求程序员像计算机一样思考。 temp v[k]; v[k]=v[k+1]: 认识到程序编程需要更强大的高级语言 v[k+1]temp; 是计算机早期的一个重大突破。高级编程语 言及其编译程序大大地提高了软件的生产 率。图1-3表示了这些程序和编程语言之间 编译程序 的关系。 编译程序使得程序员可以写出高级语言 表达式: 汇编语言程序 swap: (用于MIPS) muli $2, s5,4 A+B add $2,$4,$2 lw $15,0($2) 编译程序将其编译为如下的汇编语言语句: 1w S16, 4(s2) SW $16, 0($2) add A,B Sw $15, 4($2) jr $31 然后,汇编程序将此语句翻译为二进制 元指令,告诉计算机将这2个数A和B相加。 使用高级编程语言有以下几个好处。第 汇编程序 一, 可以使程序员用更自然的语言来思考, 用英文和代数符号来表示,形成的程序看起 来更像文字而不是密码表(见图13)。而 二进制机器 00000000101000010000000000011000 且,它们可按用途进行设计。例如,Fortran 语言程序 0000000000011000000110000010000: (用于MIPS) 10001100011000100000000000000000 是为科学计算设计的,Cobol是为商业数据 1000110011110010000000000000010C 操作设计的,Ls即是为符号操作设计的,等 1010110011110010000000000000000G 10101100011000100000000000000100 等。还有一些特定领域的语言,只为少数专 000000111110000000G0000000001000 业人群设计,如流体仿真的研究人员等。 图1-3C程序编译为汇编程序, 第二,高级语言提高了程序员的生产 再汇编为二进制机器语言 率。编程语言使用较少行数即可表示出设计 尽管将高级语言翻译成二进制的机器语言在上图仅需要两 用意。简明性是高级语言相对汇编语言最为 步,一些编译器将“中间人”欣掉,直接产生二进制的机器 明显的优势。 语言。这些语言和本图中列举的程序将在第2章详细检测。 第三,采用高级语言编写程序提高了程序相对于计算机的独立性,因为编译程序和汇编程 序能够把高级语言程序翻译成任何计算机的二进制元指令。 高级编程语言的这些好处,使其直到今天仍被广泛应用。 汇编语言(assembly language):以助记符形式表示的机器指令。 机器语言((machine language):以二进制元形式表示的机器指令。 高级编程语言(high-level programming language):诸如C、C++、Java、Visual Basic等可移植的语言,由一些单 词和代数符号组成,可以由编译器转换为汇编语言
第1章计算机橛要与技术·7 1.3硬件概念入门 我们已经在上节通过程序揭示了计算机软件,在本节中我们将打开机箱盖学习其中的硬件。 任何一台计算机的基础硬件都要完成相同的基本功能:输人数据、输出数据、处理数据和存储数 据。本书的主题就是描述这些功能是怎样完成的,随后各章将分别讨论这四项任务。 本书在遇到重要知识点时,都会用“重点”标题加以强调,希望读者对其重点记忆。全书 大致有十多个重要知识点,这里是第一个,即计算机是由完成输人、输出、处理和存储数据任务 的五个部件构成的。 重点 组成计算机的五个典型部件是输入、输出、存储器、运算器和控制器,其中最后两个部件通 常合称为处理器。图1-4表示了一台计算机的标准组成。该组成与硬件技术无关,你总能够把任 何计算机(无论是现在的还是过去的)中的任何部件归于这五种之一。为了加深读者对这一重 点的印象,我们将在每章开始都给出此图。 偏译程序 接口 计算机 制器 运算器 性能评价 输出 处理器 存储器 图1-4组成计算机的五个典型部件 处理器从存储器中得到指令和数据,输入部件将数据写入存储器,输出部件从内存中读出数据,控 制器向运算器、存储器、输人和输出部件发出命令信号。 图1-5给出了一台计算机的照片,它带有键盘、无线鼠标和显示器。该照片展示了组成计 算机的两个关键部件:输入设备,如键盘和鼠标;输出设备,如显示器。输人是为计算机 提供数据,输出则是将计算结果反馈给用户。有些设备例如网络和硬盘,既有输人,又有 输出。 PDG 白输入设备(input device):为计算机提供信息的装置,如键盘和鼠标。 输出设备(output device):输出计算结果给用户或其他计算机的装置
8·第1章计算机概要与技术 第6章将详细介绍V0设备,这里我们先对计算机硬件做一些基本的介绍,由外部V0设备开始。 图1-5桌面计算机 液晶显示器(liquid crystal display,LCD) 是主要的输出设备,键盘和鼠标是主要的输 入设备,右边是一条以太网电缆,用于将笔 记本电脑连接到网络上。笔记本电脑包括处 理器、内存和额外的V0设备。该系统由 Machook Pro15英寸笔记本电脑连接到一台 外部显示器而构成。 1.3.1剖析鼠标 在参加一次计算机会议的演讲中,我产生了鼠标的概念。那个演讲者的演讲非常乏味,于是 我开始做白日梦,萌生了这个想法。 -—Doug Engelbart 通过计算机显示器,我将飞机降落在航空母舰的甲板上,观察到一个原子打到势阱中,乘着 火箭以接近光的速度飞翔,同时我了解到计算机最深层的工作原理。 一一Ivan Sutherland,计算机图形学之“父”,科学美国人,1984 虽然许多用户认为使用鼠标是理所当然的事情,但将鼠标作为指点设备的概念是由Dog Engelbart于1967年最先提出的。当时,他演示了他的样机原型。而所有工作站(包括Macintosh 和Windows操作系统)都使用鼠标作为指点设备的灵感则是始于1973年,由Alto提出。到了20 世纪90年代,所有桌面计算机都使用了鼠标,它成为了基于图形显示器的用户接口标准。 最初的鼠标是电动机械式的,用一个大球在平面上滚动,产生坐标x、y两个计数器增量, 每个增量显示鼠标移动了多远。 现在,电动机械式鼠标大多被光电鼠标取代了。光电鼠标实际上是一个小型的光处理器,使 用LED提供光源,带有一·个极小的黑白照相机和一个简单的光处理器。当LED照亮鼠标底下的 平面时,照相机以每秒1500次的采样频率将拍摄的照片连续地输送给光处理器。光处理器通过 对比照片,就可判定鼠标移动的方向和距离。电动机械式鼠标被光电鼠标所取代,说明了一个普 遍的现象:由于电子学可降低成本并提高可靠性,因此电子技术能够取代老式的机电技术。在稍 后我们还将看到另一个例子:闪存。 1.3.2显示器 最吸引人的/0设备应该是图形显示器了。所有的笔记本电脑、手持计算机、计算器、手机 和几乎所有的桌面计算机现在都用LCD°来获得轻巧、低功耗的显示效果。LCD并非光源,而是 PDG 日 液晶显示(liquid crystal display):这是一种显示技术,将液体聚合物的薄层带电或者不带电,来传输或者阻止 光线的传输
第1章计算机概要与技术·9 控制光的传输。典型的LCD内含棒状液态分子团,在不施加任何电压的情况下,液晶处于初始 状态,并将入射光的方向扭转90度,让背光源的人射光能够通过整个结构,在显示屏上呈现白 色;而当施加电压时,光线不再弯曲,显示屏呈现为黑色。今天,大多数LCD显示器采用一种 动态矩阵显示e(active matrix display)技术,其每个像素e(pixel)都有一个三极管精确地控制 电流,使图像更清晰。在彩色有源矩阵中,还有一个红一绿一蓝屏决定三种颜色分量的强度,·每 个点需要有三个三极管开关。 图像是由像素矩阵组成的,可由位图(bit map)来表示。根据屏幕的大小和分辨率,显示 矩阵的大小范围为从640×480像素到2560×1600像素(2008年)。彩色显示器上的每色可用8 位表示,每像素用24位,可表示几百万种不同的颜色。 支持图像的计算机硬件主要是光栅刷新缓冲(raster refresh buffer),或帧缓冲(frame buff ),用于保存位图。屏幕上的图像实际上保存在帧缓冲中,每个像素的位元模式以指定的刷新 速率逐个读出并发送到显示器上。图1-6给出了一个简化的帧缓冲,其每个像素只有4位。 帧缓冲 光福扫描CRT显示 001 Yo 10 X X Xo X 图1-6左边帧缓冲中每个坐标点决定了右边光栅扫描CRT显示中对应点的色度 像素(X,Y)的位元模式为0011,相对于像索(X1,Y,)的位元模式1101来说更亮一些。 位图的目的是忠实地将图像在屏幕上复现出来,其难点在于人眼能精确发现屏幕上任何细 微的变化。 1.3.3打开机箱 如果打开计算机机箱,我们会看到吸引人的薄塑料底板,上面有几十个灰色或黑色的长方 块。图1-7显示了图1-5中笔记本电脑的内部,图中上部是主板°,前面是两个磁盘驱动器(左 边是硬盘驱动器,右边是DVD驱动器),中间的空间用于存放笔记本电脑的电池。 主板上那些小的长方块是集成电路⑧(integrated circuit),俗称芯片(chip)。主板由三部分 组成:连接前面提到的各种/0设备的电路、内存和处理器。 内存®是程序运行时的存储空间,它同时也用于保存程序运行时所使用的数据。图1-8给出 了内存的照片,其中每个内存由8片集成电路构成。图1-8中的内存由多片DRAM芯片组成, 被用来承载程序的指令和数据。与串行访问内存(如磁带)不同的是,无论数据存储在什么位 置,DRAM访问内存所需的时间基本相同。 曰动态矩阵显示(active matrix display):一种液晶显示技术,使用晶体管控制单个像素上光线的传输。 像素(pixl):图像元素的最小单元。屏幕是由成千上万的像素组成的矩阵而形成。 板(m):包含一组集成电路芯片的塑料板,包括处理器、cahc、内存以及连接V0设备(网终。 硬盘等)的接口。 @集成电路(integrated circuit):也叫芯片,一种将几十个至几百万个晶体管连接起来的设备。 国内存(memory):程序运行时的存储空间,同时还存储程序运行时所需的数据。 ⑧DRAM(dynamic random access memory):动态随机访问内存,可随机访问任何地址的内存