期中总结

课本总结

 

第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那门课,让这学期再次接触到娄老师的这种风格教学不会特别难适应。转眼学期了过半了,我们也学习了第一、二、三、四、六章了。经过这几章的学习也到达了课本名字的效果,深入理解计算机系统、对计算机系统的结构层次也更加清楚明了。通过同学和自己查阅书本上很多深奥,难懂的抽象的东西也能慢慢的消化掉

自己的不足

这种学习模式存在一种弊端,就是记得不牢固,经常出现学哪一章的时候,那一周对这一章知识有印象,能掌握一些,但是一旦学习下一章不再回忆之前的东西时,过那么几周,之前的知识感觉消失殆尽。我觉得自己还需要对之前的知识多一点巩固和温习。让知识在脑海里更加牢固一点。

 

posted @ 2015-11-01 20:19  20135221黄卫  阅读(406)  评论(1编辑  收藏  举报