期中总结
课本总结
第1章 计算机系统漫游
信息
- 位+上下文
系统中所有信息都是由一串位表示的,区分不同数据对象唯一方法是读到这些数据对象时的上下文。
程序被翻译成不同格式
- 编译系统
预处理器、编译器、汇编器、链接器
存储设备层次结构
- 核心思想:缓存
- 操作系统核心抽象:文件、虚存、进程、虚拟机
(二)第二章 信息的表示和处理
1. 字长:指明整数和指针数据的标称大小。一个字长为w的机器的虚拟地址范围为0~2^(w-1),程序最多访问2^w个字节。
2. int 、char 4字节,单精度float 字节,双精度double 8字节。
3.三种最重要的数字表示:无符号、补码、浮点数。
4. 运算:整数运算、浮点运算。
5. 小端法和大端法
-
小端法:最低有效字节在前面——“高对高,低对低”
-
大端法:最高有效字节在前面
6.布尔代数:
- 与: &
- 或: |
- 非: ~
- 异或:^
7. 逻辑运算符
- 与:&&
- 或:||
- 非:!
8. 逻辑运算和位运算的区别
- 只有当参数被限制为0或1时,逻辑运算才与按位运算有相同的行为。
- 如果对第一个参数求值就能确定表达式的结果,逻辑运算符就不会对后面的参数求值。
9. 移位运算
- 逻辑右移:在左端补k个0,多用于无符号数移位运算
- 算术右移:在左端补k个最高有效位的值,多用于有符号数移位运算。
10. 有符号数和无符号数的转换
(1)有符号数→无符号数:
- 非负数——保持不变
- 负数——转换成大正数
(2)无符号数→有符号数:
- 小于2的w-1次方——保持不变
- 大于2的w-1次方——转换为负数值
11.扩展
- 零扩展:多用于无符号数转换为一个更大的数据类型,只需在开头加上0即可。
- 符号扩展:多用于补码数字转换,最高有效位是什么,就添加什么。
12.截断数字
将一个w位的数截断为k位数字时,就会丢弃高w-k位。
- 对于无符号数来说,就相当于 mod 2的k次幂
- 对于有符号数来说,先按照无符号数截断,然后再转化为有符号数
13.舍入
- 向偶舍入:将数字向上或向下舍入,是的结果的最低有效数字为偶数。能用于二进制小数。
- 向零舍入:把整数向下舍入,负数向上舍入。
- 向下舍入:正数和负数都向下舍入。
- 正数和负数都向上舍入。
第三章 程序的机器级表示
1.操作数的三种类型
- 立即数
- 寄存器
- 存储器
2.寻址方式:
1.立即数寻址方式
2.寄存器寻址方式
3.存储器寻址方式
- 直接寻址方式
- 寄存器间接寻址方式
- 寄存器相对寻址方式
- 基址变址寻址方式
- 相对基址变址寻址方式
4.mov类指令:将源操作数的值复制到目的操作数中。源操作数指定的值是一个立即数,存储在寄存器中或存储器中。目的操作数制指定一个位置,要么是一个寄存器,要么是一个存储器。
- movb 传送字节
- movw 传送字
- movl 传送双字
- movs 符号位扩展
- movz 零扩展
push:把数据压入栈中
pop:删除数据
- 后进先出
- 栈指针指向栈顶元素
- 栈朝低地址方向增长
5.栈帧:
为单个过程分配的那部分栈称为栈帧。
最顶端的栈帧以两个指针界定:
-
寄存器%ebp-帧指针
-
寄存器%esp-栈指针
1.call
CALL指令的效果是将返回地址入栈,并跳转到被调用过程的起始处。
返回地址是还在程序中紧跟在call后面的那条指令的地址。
2.ret
ret指从栈中弹出地址,并跳转到这个位置。
3.leave
这个指令使栈做好返回的准备
第4章 处理器体系结构
1.Y86指令集体系结构
具体使用结合练习
-
异常
halt指令、非法指令、访问非法地址2.HCL硬件控制语言
-
数字系统
组合逻辑、存储器元素、时针信号
-
表达式
AND:&& OR:|| NOT:!
3.Y86的顺序实现
取指、译码、执行、访存、写回、更新PC
第六章 存储器层次结构
1. 存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。小而快的高速缓存寄存器靠近CPU,下层存储设备慢而大、便宜。
2. 基本存储技术
- SRAM存储器
- DRAM存储器
- ROM存储器
- 旋转和固态的硬盘
3. 随机访问存贮器:分为静态(SRAM)和动态(DRAM)两类,SRAM更快更贵,用来作为高速缓存存储器。DRAM用来作为主存以及图形系统的帧缓冲区。
- 静态RAM:将每个位存储在一个双稳态的存储器单元里,只要有电就会永远保持它的值。
- 动态RAM:将每个位存储为对一个电容的充电,当电容的电压被干扰后就存储器单元就永远不会恢复了。存储器系统必须周期性地通过读出,然后重写来刷新存储器的每一位。
4. 访问主存:数据流通过称为总线的共享电子电路在处理器和DRAM主存之间来回。读事物 从主存传送数据到CPU,写事物从CPU传送数据到主存。
- 总线是一组并行的导线,能携带地址、数据和控制信号。
- 计算机系统配置:CPU芯片、I/O桥、组成主存的DRAM存储器模块
- 系统总线连接CPU和I/O桥,存储器总线连接I/O桥和主存
5. 磁盘构造:磁盘由盘片构成,每个盘片有两面或称为表面,盘片中央有一个可旋转的主轴,它使盘片以固定的旋转速率旋转。
6. 磁盘容量=字节数/扇区 * 平均扇区数/磁道 * 磁道数/表面 * 表面数/盘片 * 盘片数/磁盘
7. 对扇区的访问时间有三个主要部分:寻道时间、旋转时间、传送时间
- 寻道时间:为了读取某个目标扇区的内容,传动臂首先将读写头定位到包含目标扇区的磁道上。移动传动臂所需的时间称为寻道时间。
- 旋转时间:最大旋转延迟Tmax rotation=1/RPM * 60secs/1min。平均旋转时间Tavg rotation的一半。
- 传送时间:Tavg transfer=1/RPM * 1/(平均扇区数/磁道) * 60secs/1min
- 估计总访问时间=Tavg seek+Tavg rotation+Tavg transfer。因为寻道时间和旋转延迟大致相等,所以将寻道时间乘以2可简单估计磁盘访问时间。
8. 局部性:时间局部性、空间局部性
- 重复引用同一个变量的程序有良好的时间局部性。
- 对于具有步长为k的引用模式的程序,步长越小空间局部性越好。具有步长为1的引用模式的程序有很好的空间局部性。在存储器中以大步长跳来跳去的程序空间局部性很差。
- 对于取指令而言,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
自己的收获
说实话这种学习模式还是真的挺累的,如果每一科的老师都用娄老师这样的学习模式,那我们基本大三可以不过了~!~不过好在就这一门课,虽然挺累但是也还在接受范围之内,只是让大三变得没有想象中那么轻松,还要感谢上学期JAVA那门课,让这学期再次接触到娄老师的这种风格教学不会特别难适应。转眼学期了过半了,我们也学习了第一、二、三、四、六章了。经过这几章的学习也到达了课本名字的效果,深入理解计算机系统、对计算机系统的结构层次也更加清楚明了。通过同学和自己查阅书本上很多深奥,难懂的抽象的东西也能慢慢的消化掉
自己的不足
这种学习模式存在一种弊端,就是记得不牢固,经常出现学哪一章的时候,那一周对这一章知识有印象,能掌握一些,但是一旦学习下一章不再回忆之前的东西时,过那么几周,之前的知识感觉消失殆尽。我觉得自己还需要对之前的知识多一点巩固和温习。让知识在脑海里更加牢固一点。