第一章、计算机系统概述
1.冯诺依曼机和存储程序的概念?
冯·诺依曼在研究EDVAC 机时提出了“存储程序”的概念,“存储程序”的思想奠定了现代计算机的
基本结构,以此概念为基础的各类计算机通称为冯·诺依曼机,其特点如下:
1) 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5 大部件组成。
2) 指令和数据以同等地位存储在存储器中,并可按地址寻访。
3) 指令和数据均用二进制代码表示。
4) 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中
的位置。
5) 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下可根据运算结果或根据
设定的条件改变执行顺序。
6) 早期的冯诺依曼机以运算器为中心,输入/输出设备通过运算器与存储器传送数据。现代计算
机以存储器为中心。
“存储程序”的概念是指将指令以代码的形式事先输入计算机的主存储器,然后按其在存储器中的
首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
2.计算机的工作过程?
计算机的工作过程分为以下三个步骤:
1) 把程序和数据装入主存储器。
2) 将源程序转换成可执行文件。
3) 从可执行文件的首地址开始逐条执行指令。
3.在计算机系统结构中,什么是编译?什么是解释?
翻译的方式有两种,一个是编译,一个是解释。
编译型语言写的程序在执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文
件,比如exe文件,如果源程序不变以后要运行的话就不用重新翻译。
解释则不同,解释性语言的程序不需要编译,在运行程序的时候才翻译,翻译一句执行一句,
不生成目标程序,这样解释性语言每执行一次就要翻译一次,效率比较低。
.java文件->编译->.class文件,编译成.class字节码,.class需要jvm解释,然后解释执行。Java很
特殊,Java程序需要编译但是没有直接编译成机器语言,即二进制语言,而是编译成字节码
(.class)再用解释方式执行。java程序编译以后的class属于中间代码,并不是可执行程序exe,
不是二进制文件,所以在执行的时候需要一个中介来解释中间代码,这就是所谓的java虚拟机
(JVM)。
C语言编译过程分成四个步骤:
1. 由.c文件到.i文件,这个过程叫预处理,将#include包含的头文件直接拷贝到hello.c当中;将
#define定义的宏进行替换,同时将代码中没用的注释部分删除等
2. 由.i文件到.s文件,这个过程叫编译
3. 由.s文件到.o文件,这个过程叫汇编
4. 由.o文件到可执行文件,这个过程叫链接,将翻译成的二进制与需要用到库绑定在一块
4.描述一下指令执行过程?
程序中第一条指令的地址置于PC 中,根据PC 取出第一条指令,经过译码、执行步骤等,控制
计算机各功能部件协同运行,完成这条指令的功能,并计算下一条指令的地址。用新得到的指令地
址继续读出第二条指令并执行,直到程序结束为止。下面以取数指令(即将指令地址码指示的存储
单元中的操作数取出后送至运算器的ACC 中)为例进行说明,其信息流程如下:
1) 取指令: PC 一>MAR—>M—>MDR—>IR
根据PC 取指令到IR, 将PC 的内容送MAR, MAR 中的内容直接送地址线,同时控制器将读信号送
读/写信号线,主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,
MDR 从数据线接收指令信息,并传送到IR 中。
2) 分析指令: OP(IR)—>CU
指令译码并送出控制信号。控制器根据IR 中指令的操作码,生成相应的控制信号,送到不同的
执行部件。在本例中, IR 中是取数指令,因此读控制信号被送到总线的控制线上。
3) 执行指令: Ad(IR)—>MAR—>M—>MDR—>ACC
取数操作。将IR 中指令的地址码送MAR, MAR 中的内容送地址线,同时控制器将读信号送读/
写信号线从主存指定存储单元读出操作数,并通过数据线送至MDR, 再传送到ACC 中。
此外,每取完一条指令,还须为取下一条指令做准备,形成下一条指令的地址,即(PC)+1 —>
PC。
5.计算机的主要性能指标?
1. 机器字长
机器字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位
数,通常与CPU 的寄存器位数、加法器有关。因此,机器字长一般等于内部寄存器的大小,
字长越长,数的表示范围越大,计算精度越高。计算机字长通常选定为字节(8 位)的整数
倍。
2. 数据通路带宽
数据通路带宽是指数据总线一次所能并行传送信息的位数。这里所说的数据通路宽度是指
外部数据总线的宽度,它与CPU 内部的数据总线宽度(内部寄存器的大小)有可能不同。各
个子系统通过数据总线连接形成的数据传送路径称为数据通路。
3. 主存容量
主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可用字数x字长
(如512Kx16 位)来表示存储容量。其中, MAR 的位数反映存储单元的个数, MAR 的位数
反映可寻址范围的最大值(而不一定是实际存储器的存储容量)。
4. 运算速度
(1) 吞吐量和响应时间。
吞吐量:指系统在单位时间内处理请求的数量。它取决于信息能多快地输入内存, CPU
能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给
一台外部设备。几乎每步都关系到主存,因此系统吞吐量主要取决于主存的存取周期。
响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果
的等待时间。通常包括CPU 时间(运行一个程序所花费的时间)与等待时间(用于磁盘
访问、存储器访问、I/0 操作、操作系统开销等的时间)。
(2) 主频和CPU 时钟周期。
CPU 时钟周期:通常为节拍脉冲或T周期,即主频的倒数,它是CPU 中最小的时间单
位,每个动作至少需要1 个时钟周期。
主频:机器内部时钟的频率。
(3) CPI(Clock cycle Per Instruction),即执行一条指令所需的时钟周期数。
第二章、数据的表示和运算(偏笔试一点的一章)
7.C语言中的浮点数类型及类型转换
C 语言中的float 和double 类型分别对应于IEEE 754 单精度浮点数和双精度浮点数。long
double类型对应于扩展双精度浮点数,但long double 的长度和格式随编译器和处理器类型的不
同而所不同。在C 程序中等式的赋值和判断中会出现强制类型转换,以char->int->long->double
和float->double最为常见,从前到后范围和精度都从小到大,转换过程没有损失。
1. 从int 转换为float 时,虽然不会发生溢出,但int 可以保留32 位, float 保留24 位,可能有
数据舍入,若从int 转换为double 则不会出现。
2. 从int 或float 转换为double 时,因为double 的有效位数更多,因此能保留精确值。
3. 从double 转换为float 时,因为float 表示范围更小,因此可能发生溢出。此外,由于有效位
数变少,因此可能被舍入。
4. 从float 或double 转换为int 时,因为int 没有小数部分,所以数据可能会向0 方向被截断(仅
保留整数部分),影响精度。另外,由于int 的表示范围更小,因此可能发生溢出。
8.在计算机中,为什么要采用二进制来表示数据?
从可行性来说,采用二进制,只有0 和1 两个状态,能够表示0 、1 两种状态的电子器件很多,
如开关的接通和断开、晶体管的导通和截止、磁元件的正负剩磁、电位电平的高与低等,都可表示
0、1 两个数码。使用二进制,电子器件具有实现的可行性。
从运算的简易性来说,二进制数的运算法则少,运算简单,使计算机运算器的硬件结构大大简
化(十进制的乘法九九口诀表有55 条公式,而二进制乘法只有4 条规则)。
从逻辑上来说,由于二进制0 和1 正好和逻辑代数的假(false) 和真(true) 相对应,有逻辑代数的
理论基础,用二进制表示二值逻辑很自然。
9.各编码方式的数值范围
第三章、存储系统
- 1
- 2
- 3
- 4
- 5
- 6
前往页