zoukankan      html  css  js  c++  java
  • 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小时

    参考资料

  • 相关阅读:
    scikit-learn随机森林调参小结
    用Spark学习FP Tree算法和PrefixSpan算法
    典型关联分析(CCA)原理总结
    scikit-learn Adaboost类库使用小结
    Google maps API开发(二)(转)
    php中setcookie函数用法详解(转)
    关于中英数字混排的字符串分割问题(转)
    字符串截取函数
    jQuery Masonry构建pinterest网站布局注意要点(转)
    【jQuery插件】用jQuery Masonry快速构建一个pinterest网站布局(转)
  • 原文地址:https://www.cnblogs.com/crazymosquito/p/7860783.html
Copyright © 2011-2022 走看看