- 1.计算机系统由哪两部分组成?计算机系统性能取决于什么?
- 2.计算机系统5层层次结构从下到上由哪五层组成?哪些是物理机,哪些是虚拟机?
- 3.在计算机系统结构中,什么是翻译?什么是解释?
- 4.什么是计算机体系结构?什么是计算机组成?以乘法指令为例说明二者区别。
- 5.冯诺依曼机器的主要特点?
- 6.程序访问的局部性
- 7.字长
- 8.Cache的基本工作原理
- 9.Cache和主存之间的映射方式
- 10. Cache中主存块的替换算法
- 11.二进制一般使用什么方法转换成十进制?
- 12.计算机直接使用原码计算有什么缺点?
- 13.请计算12、124、1023、-1、-127的二进制原码。
- 14.计算机的补码解决了什么问题?
- 15.什么是溢出?什么是上溢?什么是下溢?
- 16.浮点数之间做加减法运算需要几个步骤?每个步骤都是必须的吗?为什么?
- 17.虚拟存储器的基本概念
- 18.页式虚拟存储器
- 19.段式虚拟存储器
- 20.段页式虚拟存储器
- 参考链接
计算机系统是由“硬件”和“软件”组成。衡量一台计算机性能的优劣是根据多项技术指标综合确定的,既包括硬件的各种性能指标,又包括软件的各种功能。
1)计算机系统由硬件和软件两部分组成。 2)计算机系统性能由硬件和软件共同决定。
1)微程序机器、传统机器、操作系统机器、汇编语言机器、高级语言机器 2)微程序机器和传统机器是物理机,其他是虚拟机。
1)翻译:将一种语言编写的程序全部翻译成另一种语言,然后再执行; 2)解释:将一种语言编写的程序的一条语句翻译成另一种语言的一条或多条语句,然后执行,执行完这条语言后,再解释下一条。
1)计算机体系结构是指那些能够被程序员看到的计算机的属性。如指令集、数据类型等; 2)计算机组成是指如何实现计算机体系结构所体现出来的属性; 3)以乘法指令为例,计算机是否有乘法指令,属于体系结构的问题。乘法指令是采用专用的乘法器,还是使用加法器和移位器构成,属于计算机组成的问题。
1)计算机由运算器、存储器、控制器、输入设备和输出设备五大部分组成; 2)指令和数据存储在存储器中,并可以按地址访问; 3)指令和数据均以二进制表示; 4)指令由操作码和地址码构成,操作码指明操作的性质,地址码表示操作数在存储器中的位置; 5)指令在存储器内按顺序存放,通常按自动的顺序取出执行; 6)机器以运算器为中心,I/O设备与存储器交换数据也要通过运算器。(因此,后来有了以存储器为中心的计算机结构)
l 时间局部性:如果一个存储项被访问,则可能该项会很快被再次访问.
l 空间局部性:如果一个存储项被访问,则该项及其邻近的项也可能很快被访问.
解释
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种,一个是编译,一个是解释。
l 编译型语言写的程序在执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,如果源程序不变以后要运行的话就不用重新翻译。
l 解释则不同,解释性语言的程序不需要编译,在运行程序的时候才翻译,翻译一句执行一句,不生成目标程序,这样解释性语言每执行一次就要翻译一次,效率比较低。
l .java文件->编译->.class文件,编译成.class字节码,.class需要jvm解释,然后解释执行。Java很特殊,Java程序需要编译但是没有直接编译成机器语言,即二进制语言,而是编译成字节码(.class)再用解释方式执行。java程序编译以后的class属于中间代码,并不是可执行程序exe,不是二进制文件,所以在执行的时候需要一个中介来解释中间代码,这就是所谓的java虚拟机(JVM),也叫JDK。
l C语言编译过程分成四个步骤:
1, 由.c文件到.i文件,这个过程叫预处理
将#include包含的头文件直接拷贝到hell.c当中;将#define定义的宏进行替换,同时将代码中没用的注释部分删除等
2, 由.i文件到.s文件,这个过程叫编译
3, 由.s文件到.o文件,这个过程叫汇编
高级语言->汇编语言->机器语言
4, 由.o文件到可执行文件,这个过程叫链接
将翻译成的二进制与需要用到库绑定在一块
l 机器字长:计算机能直接处理的二进制位数
l 指令字长:一个指令字中包含的二进制代码位数
l 存储字长:一个存储单元存储二进制代码长度
l CPI:执行一条指令需要的时钟周期数
Cache通常由两部分组成,块表和快速存储器.其工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache地址映射机构借助查块表判定该地址的存储单元是否在Cache中,如果在,则Cache命中,按Cache地址访问Cache.否则,Cache不命中,则需要访问主存,并从主存中调入相应数据块到Cache中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关的地址映射关系.
l 直接映射就是将主存地址映射到Cache中的一个指定地址.任何时候,主存中存储单元的数据只能调入到Cache中的一个位置,这是固定的,若这个位置已有数据,则产生冲突,原来的块将无条件地被替换出去.
l 全相联映射就是任何主存地址可映射到任何Cache地址的方式.在这种方式下,主存中存储单元的数据可调入到Cache中的任意位置.只有在Cache中的块全部装满后才会出现块冲突.
l 组相联映射指的是将存储空间的页面分成若干组,各组之间的直接映射,而组内各块之间则是全相联映射.
思想 | 优点 | 缺点 | |
---|---|---|---|
随机算法RAND | 用软的或硬的随机数产生器产生上层中要被替换的页号 | 简单,易于实现 | 没有利用上层存储器使用的"历史信息",没有反映等程序局部性,命中率低. |
先进先出FIFO | 选择最早装入上层的页作为被替换的页 | 实现方便,利用了主存历史的信息 | 不能正确反映程序局部性原理,命中率不高,可能出现一种异常现象. |
近期最少使用法LRU | 选择近期最少访问的页作为被替换的页 | 比较正确反映程序局部性,利用访存的历史信息,命中率较高 | 实现较复杂 |
优化替换算法OPT | 将未来近期不用的页换出去 | 命中率最高,可作为衡量其他替换算法的标准 | 不现实,只是一种理想算法 |
整数:按权展开法。
0有两种表示方法,减法运算复杂。
12(0b1100)、124(0b1111100)、1023(0b1111111111)、-1(-0b1)、-127(-0b1111111)
计算机的补码解决了什么问题?
溢出即计算机无法表示数值。上溢是指数值绝对值大于表示范围,下溢是指计算机无法提供有效精度表示数值。
浮点数加减法需要经过以下几个步骤:对阶、尾数求和、尾数规格化、舍入、溢出判断。对阶是为了使得尾数可以进行运算,阶码不一致尾数运算无效,尾数规格化、舍入是为了正确存储结果,溢出判断是为了判断运算过程是否有误,如果溢出将会发出信号进行溢出处理。
虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩存的一种存储器系统
页式管理:是把虚拟存储空间和实际空间等分成固定大小的页,各虚拟页可装入主存中的不同实际页面位置.页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分为页号和页内地址两部分,由地址映射机构将虚页号转换成主存的实际页号.
页式管理用一个页表,包括页号,每页在主存中起始位置,装入位等.页表是虚拟页号与物理页号的映射表.页式管理由操作系统进行,对应用程序员的透明的.
段式管理: 把主存按段分配的存储管理方式.它是一种模块化的存储管理方式,每个用户程序模块可分到一个段,该程序模块只能访问分配给该模块的段所对应的主存空间.段长可以任意设定,并可放大和缩小.
系统中通过一个段表指明各段在主存中的位置.段表中包括段名(段号),段起点,装入位和段长等.段表本身也是一个段.段一般是按程序模块分的.
段页式管理:是上述两种方法的结合,它将存储空间按逻辑模块分成段,每段又分成若干个页,访存通过一个段表和若干个页表进行.段的长度必须是页长的整数倍,段的起点必须是某一页的起点.
https://blog.csdn.net/weixin_41798450/article/details/88831860
https://blog.csdn.net/weixin_34054931/article/details/93843108