基本认识:
计算机:接受用户的指令与数据,经过中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息。广义上讲:我们周边有好多宽泛概念上的计算机,如加减乘除计算机,手机, GPS, ATM等等。
计算机五大单元:
输出单元:包括键盘,鼠标,扫描仪,读写板等。中央处理器(CPU):含有算术逻辑,控制,记忆等单元。输出单元:显?器,打印机。
经典冯诺依曼体系:
注意:这里存储器指内存CPU读取的数据都是从内存中来的, CPU处理完成的数据,必须要先写回内存,,最后数据才从内存传输到输出单元(忽略缓存)。
系统硬件组成
为了解程序运行时发生了什么,我们需要对典型系统的硬件组成有所了解。
主要由:总线、I/O 设备、主存、处理器组成
1 . 总线
贯穿整个系统的是一组电子管道, 称做总线, 它携带信息字节并负责在各个部件间传递。 通常总线被设计成传送定长的字节块, 也就是字( word)。 字中的字节数(即字长) 是一个基本的系统参数, 在各个系统中的情况都不尽相同。 现在的大多数机器字长有的是 4 个字节( 32 位), 有的是 8 个字节( 64 位)。
2. I/O 设备
输入 / 输出( I/O) 设备是系统与外部世界的联系通道。 我们的示例系统包括 4 个 I/O 设备 :作为用户输入的键盘和鼠标, 作为用户输出的显示器, 以及用于长期存储数据和程序的磁盘驱动器(简单地说就是磁盘)。每个 I/O 设备都通过一个控制 器或适配器与 I/O 总线相连。 控制器和适配器之间的区别主要在于它们的封装方式。 控制器是置于 I/O 设备本身的或者系统的主印制电路板( 通常称为主板)上的芯片组, 而适配器则是一块插在主板插槽上的卡。 无论如何, 它们的功能都是在 I/O 总线和I/O 设备之间传递信息。
3. 主存
主存是一个临时存储设备, 在处理器执行程序时, 用来存放程序和程序处理的数据。 从物理上来说, 主存是由一组动态随机存取存储器( DRAM) 芯片组成的。 从逻辑上来说, 存储器是一个线性的字节数组, 每个字节都有其唯一的地址(即数组索引 ), 这些地址是从零开始的。 一般来说, 组成程序的每条机器指令都由不同数量的字节构成。 与 C 程序变量相对应的数据项的大小是根据类型变化的。
4. 处理器
中央处理单元( CPU), 简称处理器, 是解释( 或执行) 存储在主存中指令的引擎。 处理器的核心是一个字长的存储设备(或寄存器), 称为程序计数器( PC)。 在任何时刻, PC 都指向主存中的某条机器语言指令(即含有该条指令的地址)。从系统通电开始, 直到系统断电, 处理器一直在不断地执行程序计数器指向的指令, 再更新程序计数器, 使其指向下一条指令。
处理器从程序计数器( PC) 指向的存储器处读取指令, 解释指令中的位, 执行该指令指示的简单操作, 然后更新 PC, 使其指向下一条指令, 而这条指令并不一定与存储器中刚刚执行的指令相邻。
这样的简单操作并不多, 而且操作是围绕着主存、 寄存器文件( register file) 和算术 / 逻辑单元( ALU) 进行的。 寄存器文件是一个小的存储设备, 由一些 1 字长的寄存器组成, 每个寄存器都有唯一的名字。 ALU 计算新的数据和地址值。
下面列举一些简单操作的例子, CPU 在指令的要求下可能会执行以下操作 :
? 加载 : 把一个字节或者一个字从主存复制到寄存器, 以覆盖寄存器原来的内容。
? 存储 : 把一个字节或者一个字从寄存器复制到主存的某个位置, 以覆盖这个位置上原来的内容。
? 操作 : 把两个寄存器的内容复制到 ALU, ALU 对这两个字做算术操作, 并将结果存放到一个寄存器中, 以覆盖该寄存器中原来的内容。
? 跳转 : 从指令本身中抽取一个字, 并将这个字复制到程序计数器( PC) 中, 以覆盖 PC 中原来的值。
简单了解系统的硬件组成和操作之后, 来看看程序运行时到底发生了些什么(忽略细节)。
初始时, 外壳程序执行它的指令, 等待我们输入一个命令。 当我们在键盘上输入字符串“. /hello” 后, 外壳程序将字符逐一读入寄存器, 再把它存放到存储器中,当我们在键盘上敲回车键时, 外壳程序就知道我们已经结束了命令的输入。 然后外壳执行一系列指令来加载可执行的 hello 文件, 将 hello 目 标文件中的代码和数据从磁盘复制到主存。数据包括最终会被输出的字符串“hello, world\n”。利用直接存储器存取( DMA) 的技术, 数据可以不通过处理器而直接从磁盘到达主存。一旦目标文件hello中 的代码和数据被加载到 主存, 处理器就开始执行 hello 程序的main 程序中的机器语言指令。 这些指令将“hello, world\n” 字符串中的字节从主存复制到寄存器文件, 再从寄存器文件中复制到显示设备, 最终显示在屏幕上。