Logo
Section 1 / 6

计算导论

在本节课中,我们将学习研究Java所需的基本计算机架构。

检查点

计算导论

在本节课中,我们将学习研究Java所需的基本计算机架构。

什么是计算机?

在深入讨论 Java 之前,我们需要先了解一些基本术语。当人们提到“计算机”时,实际上往往指的是一个计算系统:包括计算机本身(即硬件)以及完成特定任务所需的程序(即软件)。虽然这两个方面密切相关,但分别讨论它们会有些困难。没有程序,计算机无法执行任何有用的任务;而程序本身则像一串被忽略的指令列表。

尽管如此,我们首先从机器的角度来描述计算机。计算系统的硬件不仅包括计算机本身,还包括各种外围设备,例如:

  • 打印机
  • 显示器
  • 扫描仪

我们将这些外设视为计算机的一部分。

计算机能做什么?

计算机能够完成令人惊叹的任务,至少看起来是这样。但实际上,任何复杂任务都是由许多简单、基础的操作组合而成的。这些操作的原始程度可能会让你感到惊讶!例如,计算机可以:

  • 通过键盘、鼠标、磁盘、扫描仪、互联网等方式从外部获取数据。
  • 暂时或长期保存数据。
  • 恢复已保存的数据。
  • 对两个数字进行加法、减法、乘法或除法运算。
  • 比较两个值,判断其中一个是否小于、大于或等于另一个。
  • 通过对数据进行拆分、合并或移动来处理数据。
  • 在屏幕上或纸上以不同颜色显示数字、文字和其他符号。

正是通过高速且精确地执行这些简单操作,计算机才能实现令人印象深刻的结果。

典型计算机的组成部分

一台典型的计算机包含以下主要部件(如图所示):

  • 内存
  • 输入输出系统
  • 中央处理器

各部件之间的连接统称为总线。

...
典型计算机的组成部分

内存

计算机有两种类型的内存:主内存和辅内存。计算机访问主内存的速度远快于辅内存。然而,主内存通常比辅内存更昂贵,因此计算机配备的主内存容量较小。

  • 主内存,也称为随机存取存储器(RAM)或内部内存,是计算机存储指令以及指令所操作数据的地方。

    • 主内存是易失性的,一旦断电,其中存储的内容就会丢失。
  • 辅内存,或称辅存储器,是非易失性的:即使没有电力供应,也不会丢失数据。

    • 辅内存可以位于外部机电设备上,比如硬盘,它是计算机输入输出系统的一部分。
    • 辅内存也可以是内部的固态存储,例如非易失性的闪存,或者带有电池以维持内容的随机存取存储器。

输入输出系统

计算机可以通过其输入输出系统与用户进行通信——在程序的控制下。该系统包括各种输入设备(如键盘和鼠标)和输出设备(如显示器和打印机)。各种磁盘驱动器既可以作为输入设备,也可以作为输出设备;网络卡和调制解调器也能实现计算机之间的联网通信。输入输出设备通过适配器连接到总线,这些适配器使设备特性与 CPU 的要求相匹配。

中央处理器

中央处理器(CPU)负责解码并执行存储在内存中的程序指令。这些指令指导 CPU 进行算术运算、比较判断以及其他类似任务。CPU 可以将数据从一个内存位置移动到另一个位置,也可以将数据从内存发送到输出设备,或将数据从输入设备传送到内存。通过这些方式,CPU 根据程序中的指令对内存中的数据进行处理。从某种意义上说,CPU 就是机器的“心脏”或“大脑”。

通常情况下,CPU 按照内存中指令出现的顺序依次执行。但某些指令可以改变执行顺序,例如重复或跳过其他指令。我们将学习如何设计程序逻辑,并据此确定影响 CPU 执行顺序的条件。

尽管输入输出设备不直接与计算机的主内存通信,但最终它们仍会通过 CPU 执行的指令将数据传入或传出主内存(如图所示)。

...
数据从输入设备传入计算机内存,或从计算机内存传送到输出设备

如果你通过键盘输入数据供程序读取,这些数据会被放入内存。这部分数据就是程序的输入。如果程序要向你显示数据,那么这些数据必须先存在于内存中。程序所展示的一切都称为它的输出。

关于主内存的更多知识

为了我们的目的,掌握计算机主内存的一些基本知识是有帮助的。主内存是一组称为字节的位置集合。每个字节:

  • 包含一个称为其内容的值
  • 拥有一个固定的数值名称,称为地址,这个地址由计算机的设计者固定设定

我们无法更改某个字节的地址,但可以更改其内容。因此,我们的程序可以通过字节的地址来引用它,并查看或修改其内容。

我们可以将字节类比为邮局里的信箱:每个信箱编号(即地址)是固定的,但信箱内的内容可以变化。不过,与信箱不同的是,一个字节一次只能容纳一条数据;当新数据写入时,旧数据会被覆盖。

字节的内容和地址都用二进制数值序列表示。每个数值由一个物理元件产生,该元件处于两种状态之一,例如开或关、磁化或未磁化等。这类元件通常比具有多于两种状态的元件更容易制造且成本更低。我们通常用二进制数字 0 和 1 来表示这两种状态。二进制数字常被称为位(bit)。

一个字节包含八个位。例如,我们可以将某个字节的内容表示为二进制数 10011100。这一串位代表一个二进制数。连续多个字节组成的组可以表示更长的二进制数。这样的组合可以是两个、四个、八个或更多的字节长度。

一定数量的字节中有多少位?

字节的地址通常为 16 位、32 位甚至 64 位长。位数越多,地址就越长,从而允许计算机拥有更大的内存容量,因为可以支持更多的字节。地址从零开始,按顺序分配给各个字节(如图所示)。

...
内存中字节的地址

📝 注:二进制整数的十进制等价值

二进制数中的每一位都有一个由其位置决定的值,这类似于十进制数中每一位的值。例如,十进制数 4321 表示四千三百二十一点:4 代表 4000,3 代表 300,2 代表 20,1 代表 1。这四项之和为 4321。

另一种表达方式是:

14 × 1000 + 3 × 100 + 2 × 10 + 1

但按照惯例,我们把项的顺序反过来,写作:

11 + 2 × 10 + 3 × 100 + 4 × 1000

即:

11 × 10⁰ + 2 × 10¹ + 3 × 10² + 4 × 10³

类似地,二进制数 10111 表示十进制计算:

11 × 2⁰ + 1 × 2¹ + 1 × 2² + 0 × 2³ + 1 × 2⁴

即:

11 × 1 + 1 × 2 + 1 × 4 + 0 × 8 + 1 × 16

结果为十进制的 23。十进制使用基数为 10 的记数法,而二进制使用基数为 2 的记数法。

虽然一个字节的八位所能表示的数值范围有限,但我们可以通过组合连续的字节来表示更大的数值。对于数值类型,Java 使用两个、四个和八个字节的组合。

指令

计算机的主内存不仅存储数据,还包含使计算机完成任务的指令。这些指令以连续的字节形式存在于内存中,采用一种称为机器指令的数值形式。一般来说,每种计算机都有自己独特的指令集,即机器语言,这是由其设计者定义的。无论我们用 Java 还是其他编程语言编写程序,计算机最终理解的始终是该程序的机器语言版本,这一点我们将在后续看到。

📝 补充说明:存储程序概念的历史

IBM 自动顺序控制计算器(又称哈佛 Mark I)是第一台全自动数字计算机。它于 1944 年完成,是由哈佛大学的霍华德·艾肯与 IBM 合作开发的成果。Mark I 按照穿孔纸带上的指令运行,程序并未存储在机器内部。计算过程通过电磁继电器完成,这些继电器是受电磁铁控制的机械开关。

大约在同一时期,爱荷华州立大学的约翰·阿塔纳索夫设计并建造了第一台电子数字计算机。基于阿塔纳索夫的思想,宾夕法尼亚大学的 J. 普雷斯珀·埃克特和约翰·莫奇利于 1946 年完成了 ENIAC。ENIAC 是第一台大型通用电子计算机。尽管这些机器不再依赖机械装置进行计算,但它们的编程方式是通过将电线插入特殊面板并设置数千个开关来实现的。

在 ENIAC 研发过程中,莫奇利和埃克特与普林斯顿大学的约翰·冯·诺伊曼提出了存储程序概念,即计算机内存中同时存放程序和待处理的数据。这一概念也被称为冯·诺伊曼架构,是计算机发展史上的重大突破,至今仍是所有现代计算机的基础。

20世纪40年代末,程序员只能用机器语言编写程序。这一过程既繁琐又容易出错,生成的程序也难以被人阅读和理解。到了20世纪50年代中期,出现了高级语言,它们专注于解决问题,而非针对特定的机器语言。如今的编程语言仍然被称为高级语言,尽管它们的功能远超半个世纪前的语言。程序员不再需要编写机器语言的数值指令,而是可以用高级语言书写具有明确语义的符号化语句。这些语句对人类来说更有意义,因此更容易编写、阅读和理解。此外,一条高级语言语句通常对应多条机器语言指令。

用高级语言编写的程序(称为源程序)必须在执行前翻译成特定计算机的机器语言。完成这一翻译的另一个程序有:

  • 编译器:将整个高级语言程序一次性翻译成机器语言。之后再单独运行生成的机器语言代码。
  • 解释器:将高级语言中的一条语句翻译成机器语言后立即执行,然后交替进行翻译和执行。

正如我们将看到的,Java 程序通常是经过编译的。

📝 注

程序中的语句有时也被称为代码,不论使用何种编程语言。因此,编码就是编程的同义词。

你是否曾用计算机玩过视频游戏或写过文章?在这两种活动中,你实际上都使用了一种应用软件,简称应用。你现在即将使用 Java 编写自己的应用程序。要使用任何应用,你的计算机都需要一个操作系统。
操作系统是一组提供服务的程序,使你能使用计算机。从实际用途来看,操作系统是计算系统不可或缺的部分。当前的系统(如 Windows、macOS、UNIX 和 Linux)为你提供了可工作的环境。例如,操作系统可以帮助你:

  • 保存文件
  • 将文件组织到文件夹或目录中
  • 使用应用程序
  • 连接到互联网

我们将假设你已经具备了一些关于你所使用的操作系统的基础知识。

Quiz

单选题

计算机的输入设备将数据传输到其:

1 / 6

术语表

保留字