鲸鱼的抽屉  

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

教材学习内容总结

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

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

  • 问题1:书中对局限性的概念解释是“计算机程序倾向于引用临近于其他最近引用过的数据项,或者最近引用过的数据项本身”,这里的“临近于”是什么意思呢?是指内存地址上临近吗?

  • 问题1解决方案:通过阅读教材,这里的临近应该指的是时间间距短、内存地址近即与上一次引用的内存位置附近的一个内存位置。一个具有良好的局限性的程序运行速度会更快。高速缓存存储器是用来保存最近被引用的指令和数据项,从而提高对主存的访问速度。

  • 问题2:局限性的两种形式“时间局限性”和“空间局限性”是如何体现的?

  • 问题2解决方案:时间局限性是指被引用过一次的存储器位置在未来会被多次引用(通常在循环中)比如图6-17中的sum变量。空间局限性是指如果一个存储器的位置被引用,那么将来他附近的位置也会被引用,例如v[]数组。

  • 问题3:引入步长概念的意义?

  • 问题3解决方案:通过对比sumarrycols和sumarray可以发现,我们访问内存中的元素时,尽量按着内存中存放的顺序,“一个挨着一个”地读取内存单元中的值,这样步数少,空间局部性高。

  • 总结起来量化评价程序中局限性的简单原则如下:

    • 重复引用同一个变量的程序有良好的时间局部性
    • 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。
    • 对于取指令来说,循环具有良好的时间和空间局部性。循环体越小,迭代次数越多局部性越好。
  • 问题4:怎么解决冲突不命中?

  • 问题4解决方案:可以按照“时间局限性”的思想,把可能被多次使用的数据元素写入缓存;还可以改变策略,改用映射以外的其他策略。

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

  • 问题1:高速缓存存储器结构中各个参数的含义是什么?
  • 问题1解决方案:通过反复阅读教材第436页,我的理解是:
    • 第一层划分:高速缓存被分成2^s个高速缓存组;
    • 第二层划分:每个高速缓存租被划分为E行
    • 第三层划分:每行被划分为有效位、标记位、数据块三部分
      • 其中有效位用于标记该行缓存中的数据是否有效
      • 标记位用于标识一个分组中的哪一行

20155312

(statistics.sh脚本的运行结果有问题,这周编写了很多代码,但只统计了79行)

上周考试错题总结

上周没有测试

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

  • 20155333
  • 结对照片
  • 结对学习内容
    • 网络编程第11章
    • 教材第3章
    • ...

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

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1500 2/9 30/90
第五周 200/1800 2/11 20/120
第六周 300/2000 2/13 18/140
第七周 500/2300 2/14 22/158
第八周 300/2800 1/16 30/180
第九周 1000/3800 2/17 20/210

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

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

  • 计划学习时间:20小时

  • 实际学习时间:17小时

  • 改进情况:

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

参考资料

posted on 2017-11-19 22:44  鲸鱼的抽屉  阅读(171)  评论(1编辑  收藏  举报