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

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

教材学习内容总结

目标内容:

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

  • 存储器层次结构:

  • 存储器系统:具有不同容量、成本和访问时间的存储设备的层次结构

  • 高速缓存存储器设备:主存中的数据和指令的缓冲区域

  • 随机访问存储器:

  • RAM分为静态和动态两类

  • 静态SRAM比动态DRAM快

    • 静态RAM:将每个位存储在一个双稳态的存储单元里
    • 动态RAM:将每个位存储为对一个电容的充电
  • 传统的DRAM:单元被分成d个超单元,每个超单元由w个DRAM单元组成

  • 增强的DRAM:快页模式DRAM、扩展数据输出DRAM、同步DRAM、双倍数据速率同步DRAM、Rambus DRAM、视频RAM

  • 磁盘存储:

  • 磁盘构造:由盘片构成,每个盘片有表面,主轴,磁道,扇区

  • 磁盘容量:容量由记录密度、磁道密度、面密度决定

  • 磁盘操作:访问时间有三个主要部分寻道时间、旋转时间和传送时间

  • 逻辑磁盘块:磁盘控制器维持着逻辑块号与实际的磁盘扇区之间的映射关系

  • 访问磁盘:CPU使用存储器映射I/O技术向I/O设备发出命令

  • SSD随机访问时间比旋转磁盘快

  • 局部性:

  • 局部性原理:计算机程序倾向于引用邻近于其它最近引用过的数据项的数据项,或者最近引用过的数据项本身的倾向性

    - 时间局部性:被引用过一次的存储器位置很可能在不远的将来被再次引用
    - 空间局限性:如果一个存储器被引用了,在不远的将来很可能会引用附近的一个存储器位置
    
  • 存储器层次结构

    • 缓存命中:程序需要的数据块恰好缓存在第k层
    • 缓存不命中:第k层中没有缓存需要的数据,从第k+1层读取一个数据块可能会替换(驱逐)一个现存的块
  • 缓存不命中种类:冷不命中、强制性不命中(冷缓存)、冲突不命中(限制性的放置策略)、容量不命中(工作集的大小超过缓存的大小)

  • 缓存管理:编译器管理寄存器文件,缓存结构层次的最高层

  • 通用的高速缓存存储器结构

  • 写问题

    • 写命中
    • 直写:立即将w的高速缓存块写回到紧接着的低一层中
    • 写回:尽可能的推迟存储器更新,只有当替换算法要驱逐更新过的块时,才把它写回紧接着的低一层中
    • 写不命中
    • 写分配:加载相应的第一层中的块到高速缓存中,然后更新这个高速缓存块
    • 非写分配:避开高速缓存,直接把这个字写到第一层中
  • 一个真实的高速缓存层次结构的解剖

    • i-cache:只保存指令的高速缓存,通常只读
    • d-cache:只保存程序数据的高速缓存
  • 统一的高速缓存:即保存指令又保存程序数据

  • 高速缓存参数的性能影响

教材学习中的问题和解决过程

  • 问题1:练习题6.7:

改变下列函数的循环顺序,使它以步长为1的引用模式扫描三位数组a:

int sumarray3d(int a[N][N][N])
{
    int i,j,k,sum=0;
    
    for(i=0;i<N;i++){
        for(j=0;j<N;j++){
           for(k=0;k<N;k++){
            sum+=a[k][i][i];
           }
        }
    }
    return sum;
}

我觉得我还是没有理解题目是如何改变循环次序的。

这是答案代码:

int sumarray3d(int a[N][N][N])
{
    int i,j,k,sum=0;
     
    for(k=0;k<N;k++){
        for(i=0;i<N;i++){
           for(j=0;j<N;j++){
            sum+=a[k][i][i];
           }
        }
    }
    return sum;
}

  • 问题1解决方案:

我看了书上的解析,说是

改变循环次序,使得最右边的次序变化的最快。

就可以达到目的,但是我发现我没有理解这一点。

我重新阅读了书上的6.2局部性一节,我认识到,多维数组的存储是按照行顺序存储的,所以只有按照相应的编号,1,2,3,4...读取的才是步长为1的,也就是说要改变循环顺序,按照数组被存储的行优先顺序来,否则,就不是步长为1.

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

  • 问题1:暂无

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

  • Linux信号处理说法正确的是()
    A .
    可以用signal()处理信号
    B .
    一个信号最多只能被接收一次
    C .
    kill(1)用来杀死进程
    D .
    kill(1)用来发送信号
    E .
    可以通过键盘发送信号
    F .
    可以用sigaction()处理信号
    正确答案: A B D E F 你的答案: B D E F

  • 有关exec系列函数,下面说法正确的是()
    A .
    可以用char[][] 来传递argv
    B .
    进程调用了exec系列函数后,pid会变
    C .
    进程调用了exec系列函数后,代码会改变。
    D .
    system()和exec系列等价。
    E .
    exec系列函数中带e的要传入环境变量参数
    F .
    exec系列函数中带v的要传入环境变量参数
    正确答案: C E 你的答案: A C E

  • 关于代码 int main(){} 说法正确的是()
    A .
    返回值是0
    B .
    返回值不确定
    C .
    会调用exit(0)
    D .
    返回值大于0
    E .
    上面代码运行完,在命令行中运行echo $? 的值是0
    正确答案: A C E 你的答案: A E

  • Unix/Linux中通过调用( )可以获取子进程PID。
    A .
    getpid()
    B .
    getppid()
    C .
    getcpid()
    D .
    fork()
    正确答案: D 你的答案: A

  • 有关异常,下面说法正确的是()
    A .
    系统中的异常由异常名唯一确定
    B .
    异常表中存放的是异常处理程序
    C .
    异常表的起始地址存放在异常表基址寄存器中
    D .
    异常处理程序运行在内核模式下
    正确答案: C D 你的答案: A C D

  • 进程上下文包括程序的( )
    A .
    代码和数据
    B .

    C .
    通用寄存器中的内容
    D .
    程序计数器
    E .
    环境变量
    F .
    打开的文件描述符的集合
    正确答案: A B C D E F 你的答案: B C D F

  • Linux中,信号(Signal)是一种()异常控制流。
    A .
    硬件层
    B .
    操作系统层
    C .
    用户层
    D .
    网络层
    正确答案: C 你的答案: B

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • 5232同学进行了在课本的学习部分记录很丰富。

本周结对学习情况

- [20155232](http://www.cnblogs.com/lsqsjsj/p/7860398.html)

其他(感悟、思考等,可选)

感觉这周的实验难度很大,虽然说是每个人一组,但是其实实验过程中还是有很多和我之前的搭档一起完成的部分。感觉自己在SOCKET编程上还有很多需要提高的,虽然在《网络编程基础》中学习了很多,老师讲的也很详细,但是书到用时方恨少,而且linux环境和java环境也是不同的,仍然有很多地方需要我去学习。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

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

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

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

原文地址:https://www.cnblogs.com/xuanyan/p/7839884.html