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

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

教材学习内容总结

1、虚拟存储器提供了三个重要的能力:

  • (1)它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效的使用了主存。

  • (2)它为每个进程提供了一致的地址空间,从而简化了存储器管理。

  • (3)它保护了每个进程的地址空间不被其他进程破坏。
    2、 碎片现象:造成堆利用率低的主要原因是一种碎片现象。

  • 内部碎片:已分配块比有效载荷大时发生的。

  • 外部碎片:是当空闲存储器合计起来满足分配请求,但是没有一个单独的空闲块足够大来处理这个请求。所以,存储器采用试图维持少量的大空闲块,而不是维持大量的小空闲块。
    3、垃圾收集:
    垃圾收集器将存储器视为一张有向可达图,该图的节点被分成一组根节点和一组堆节点,每个堆节点对应于堆中的一个已分配块。在任何时刻,不可达节点对应于垃圾,是不能被应用再次使用的,垃圾收集器的角色是维护可达图的某种表示,并通过不可达节点并将它们返回给空闲链表,来定期回收他们。

  • JAVA:收集器能精确的维护可达图,因此也能够回收所有垃圾。

  • C和C++:收集器不能维持可达图的精确表示,这样的收集器叫做保守的垃圾收集器,即每个可达块都被正确的标记为可达,而一些不可达节点却可能被错误的标记为可达。
    4、C程序中常见的与存储器有关的错误:

  • 间接引用坏指针:在进程的虚拟地址空间中有较大的洞,没有映射到任何有意义的数据。如果我们试图间接引用一个指向这些洞的指针,那么操作系统就会以段异常中止程序。
    最经典的错误是:scanf(“%d”,val);我们将val的值错误传给scanf,而不是&val,在这种情况下scanf将val解释为一个地址,并试图将一个字写到这个位置。

  • 假设指针和它们指向的对象是相同大小的

  • 误解指针运算:指针的算术操作是以它们指向的对象的大小为单位来进行的,而这种大小单位不一定是字节。

  • 引用不存在的变量

  • 引起存储器泄露:没有释放已经分配的块,就返回。

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

  • 问题1:既然虚拟内存是在磁盘上的,为什么运行时不感觉卡顿?
  • 问题1解决方案:因为程序的局部性。
  • 问题2:为什么要了解虚拟存储器?
  • 问题2解决方案:
  1. 虚拟存储器是中心。虚拟存储编辑系统的所有层面。
  2. 虚拟存储器是强大的。虚拟存储器给予应用程序强大的能力,可以创建和销毁存储器片(chunk)、将存储器片映射到磁盘文件的某个部分,以及其他进程共享存储器。
  3. 虚拟存储器是危险的。每次应用程序引用一个变量、间接引用一个指针,或者调用一个类似与malloc的动态分配的函数,就会跟虚拟存储器打交道。
  • ...

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

  • 问题1:XXXXXX
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

代码托管

今天运行statistic.sh脚本出现了问题,等解决了问题会把截图补上的。

上周考试错题总结

  • 错题1及原因,理解情况
  • 错题2及原因,理解情况
  • ...

结对及互评

点评模板:

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

本周结对学习情况

- [2015532](http://www.cnblogs.com/zjy1997/)
- 结对照片
- 结对学习内容
    - 教材第九章
    - 实验四外设驱动程序设计
    - ...

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

xxx
xxx

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 10/10 1/1 10/10
第二周 80/90 1/2 15/25
第三周 100/190 1/3 15/40
第四周 150/340 1/4 18/58
第五周 2/6 20/78
第六周 2/8 20/98
第七周 2124/ 2/10 20/118
第八周 2/12 30/148

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

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

  • 计划学习时间:25小时

  • 实际学习时间:20小时

  • 改进情况:

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

参考资料

原文地址:https://www.cnblogs.com/rh123456/p/7967807.html