2017-2018-1 20155314 《信息安全系统设计基础》第9周学习总结

2017-2018-1 20155314 《信息安全系统设计基础》第9周学习总结

教材学习内容总结

学习目标

  • 了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
  • 理解局部性原理
  • 理解缓存思想
  • 理解局部性原理和缓存思想在存储层次结构中的应用
  • 高速缓存的原理和应用

教材内容提炼

第6章 存储器层次结构

6.1 存储技术

6.1.1 随机访问存储器
  1. 随机访问存储器(RAM)(易失性存储器)
    • 分为两类

      • 静态RAM(SRAM)
      • 动态RAM(DRAM)
    • SRAM比DRAM更快,但更贵

    • 传统的DRAM

    • 内存模块(MM)

    • 增强的DRAM

      • 快页模式DRAM(FPM DRAM)
      • 扩展数据输出DRAM(EDO DRAM)
      • 同步DRAM(SDRAM)
      • 双倍数据速率同步DRAM(DDR SDRAM)
      • 视频RAM(VRAM)
  2. 只读存储器(ROM)(非易失性存储器)
    • 可编程ROM(PROM)
    • 可擦写可编程ROM(EPROM)
    • 电子可擦除PROM(EEPROM)
    • 闪存(FLASH)
    • 固态硬盘(SSD)
  3. 访问主存
    • CPU chip:CPU芯片
    • Register file:寄存器文件
    • ALU:算术逻辑单元
    • Bus interface:总线接口
    • System bus:系统总线
    • I/O bridge:I/O桥
    • Memory bus:内存总线
    • Main memory:主存
6.1.2 磁盘存储
  1. 磁盘构造

    • 磁盘(disk):由一个或多个叠放在一起的盘片组成,被封装在一个密封的包装里。整个装置通常被称为磁盘驱动器,简称为磁盘(又称旋转磁盘,以区别基于闪存的固态硬盘(SSD没有移动部分))
      • 盘片(platter):磁盘由盘片构成,每个盘片有两面或者称为表面,表面覆盖着磁性记录材料
      • 磁道(track):每个表面由一组称为磁道的同心圆组成
      • 扇区(sector):每个磁道被划分为一组扇区
      • 间隙(gap):扇区之间由一些间隙分隔开
      • 柱面(cylinder)
  2. 磁盘容量

    • 记录密度(recording density)(位/英寸)
    • 磁道密度(track density)(道/英寸)
    • 面密度(areal density)(位/平方英寸)

    计算公式:

  3. 磁盘操作

    • 磁盘以扇区大小的块来读写数据
    • 访问时间
      • 寻道时间
      • 旋转时间
      • 传送时间
  4. 逻辑磁盘块

  5. 连接I/O设备

    • 总线
      • 数据总线
      • 控制总线
      • 地址总线
      • 系统总线
      • 存储总线
      • I/O总线
    • 连接到总线的设备
      • 通用串行总线(USB)
      • 图形卡(或适配器)
      • 主机总线适配器
      • 其他设备(如网络适配器)
  6. 访问磁盘

6.1.3 固态硬盘
<img src="http://images2017.cnblogs.com/blog/1071508/201712/1071508-20171217175127749-1055827420.png" width="90%" />
6.1.4 存储技术趋势
- 不同的存储技术有不同的价格和性能折中
- 不同存储技术的价格和性能属性以截然不同的速率变化着

6.2 局部性

  • 局部性原理
  • 两种不同的形式
    • 时间局部性
    • 空间局部性
  • 有良好局部性的程序比局部性差的程序运行得更快
6.2.1 对程序数据引用的局部性
  • 步长为1的引用模式:顺序访问一个向量每个元素
  • 步长为k的引用模式:一个连续向量中每隔k个元素进行访问
  • 随着步长的增加,空间局部性下降
6.2.2 取指令的局部性
6.2.3 局部性小结
  • 重复引用相同变量的程序有良好的时间局部性
  • 对于:
    • 具有步长为k的引用模式的程序,步长越小,空间局部性越好
    • 具有步长为1的引用模式的程序有良好的空间局部性
    • 在内存中以大步长跳来跳去的程序的空间局部性会很差
  • 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好

6.3 存储器层次结构

  • 存储技术
  • 计算机软件
  • 典型的存储器层次结构
6.3.1 存储器层次结构中的缓存
  • 缓存命中
  • 缓存不命中
  • 缓存不命中的种类
  • 缓存管理
6.3.2 存储器层次结构概念小结
  • 利用时间局部性
  • 利用空间局部性

6.4 高速缓存存储器

#####6.4.1 通用的高速缓存存储器组织结构
  • 高速缓存参数小结
6.4.2 直接映射高速缓存
#####6.4.3 组相联高速缓存 #####6.4.4 全相联高速缓存 #####6.4.5 有关写的问题 #####6.4.6 一个真实的高速缓存层次结构的解剖 #####6.4.7 高速缓存参数的性能影响 ####6.5 编写高速缓存友好的代码 ####6.6 综合:高速缓存对程序性能的影响 #####6.6.1 存储器山 #####6.6.2 重新排列循环以提高空间局部性 #####6.6.3 在程序中利用局部性 ###课后实践:mypwd ####实践要求

加分题-mypwd的实现

  1. 学习pwd命令
  2. 研究pwd实现需要的系统调用(man -k; grep),写出伪代码
  3. 实现mypwd
  4. 测试mypwd

提交过程博客的链接

思想

  • 直接调用函数getcwd()

    getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数maxlen为buffer的空间大小。可以采取令buffer为NULL来使getcwd()调用malloc给buffer动态分配空间。

代码

#include <stdio.h>
#include <unistd.h>
int main(){
    printf("当前路径为:%s
",getcwd(NULL,0));
    return 0;
}

运行截图

gvgG8.png

代码调试中的问题和解决过程

无法打开Y86-64模拟器界面

gxffK.png

解决方法

这是Y86-64模拟器的Makefile中配置GUI相关路径错误导致的,解决方法是将两个GUI路径分别设置为TKLIBS=-L/usr/lib -ltk8.5 -ltcl8.5TKINC=-I/usr/include/tcl8.5即可,如下图:
gxWY6.png
成功打开Y86-64模拟器:
gxRFx.png

代码托管

N6kAx.png

上周考试错题总结

CH03

  1. 假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是()

    A. 若t==0 ,则ZF=1

    B. 若t<0, 则CF=1

    C. 若t<0, 则SF=1

    D. 若(a<0==b<0)&&(t<0 != a<0), 则OF=1

    E. 若(a<0==b<0)&&(t<0 != a<0), 则CF=1

    F. leaq指令不影响条件码寄存器

    G. cmp指令不影响条件码寄存器

    【错选】A B D G

    【答案】A D F

    【解析】参考课本p135

  2. 以下代码是将void decode1(long *xp, long *yp, long *zp)反汇编的结果,下面说法正确的是()

    gv0rd.png

    A. 从汇编代码看出,decode1的参数先入栈的是zp

    B. 从汇编代码看出,decode1的参数先入栈的是xp

    C. 函数功能等价于 t=x; x=y; y=z; z=t;

    D. 函数功能等价于 x=y; y=z; z=x;

    【错选】B C

    【答案】C

  3. 对于图中内存地址和寄存器的值,下面说法正确的是()

    gvwKH.png

    A. %rax的值是0x100

    B. (%rax)的值是0x100

    C. (%rax)的值是0x104

    D. (%rax)的值是0xFF

    E. 4(%rax)的值是0xAB

    F. (%rax,%rcx,4)的值是0xAB

    G. (%rax,%rcx,4)的值是0x104

    【错选】A D E

    【答案】A D E F

    【解析】参考课本p121

CH08

  1. 有关exec系列函数,下面说法正确的是()

    A. 可以用char[][] 来传递argv

    B. 进程调用了exec系列函数后,pid会变

    C. 进程调用了exec系列函数后,代码会改变

    D. system()和exec系列等价

    E. exec系列函数中带e的要传入环境变量参数

    F. exec系列函数中带v的要传入环境变量参数

    【错选】A C E

    【答案】C E

    【解析】不能用char[][] 来传递argv,结尾的0(null)无法处理;system=fork+exec+wait;

  2. 有关wait类系统调用,说法正确的是()

    A. wait(&status) 等价于waitpid(-1, &status, 0)

    B. 父进程中执行waitpid, 等待集合中的所有子进程结束了才返回

    C. 父进程中执行waitpid, 等待集合中的任一子进程结束了才返回

    D. 子进程中的退出状态在wait的status参数返回

    【错选】A B D

    【答案】A C D

    【解析】参考课本p516 517 518

  3. 有关fork(),下面说法正确的是()

    A. 一次调用,两次返回

    B. 子进程中,fork()返回子进程PID

    C. 子进程可以读写父进程中打开的文件

    D. 子进程和父进程的用户级虚拟地址空间相同但独立

    【错选】A D

    【答案】A C D

    【解析】参考课本p514

  4. 关于代码 int main(){} 说法正确的是()

    A. 返回值是0

    B. 返回值不确定

    C. 会调用exit(0)

    D. 返回值大于0

    E. 上面代码运行完,在命令行中运行echo $? 的值是0

    【错选】A E

    【答案】A C E

    【解析】main中不调用exit,会补上exit(0)

  5. 用户进程可以通过()访问内核代码和数据

    A. 特权指令

    B. 系统调用

    C. 模式位

    D. 程序计数器

    【错选】C

    【答案】B

    【解析】参考课本p510

  6. 进程上下文包括程序的( )

    A. 代码和数据

    B. 栈

    C. 通用寄存器中的内容

    D. 程序计数器

    E. 环境变量

    F. 打开的文件描述符的集合

    【错选】B C D F

    【答案】A B C D E F

    【解析】参考课本p508

  7. Linux中,信号(Signal)是一种()异常控制流。

    A. 硬件层

    B. 操作系统层

    C. 用户层

    D. 网络层

    【错选】B

    【答案】C

    【解析】参考课本p501

结对及互评

本周结对学习情况

  • 20155323
  • 结对学习内容
    • 教材第1章 计算机系统漫游

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:5小时

  • 实际学习时间:2小时

参考资料

原文地址:https://www.cnblogs.com/crazymosquito/p/7860783.html