• 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小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    hibernate 映射<二>一对一主键关联
    C# Convert Type to T
    008 OS模块
    001基础知识补充与拓展
    005Buffer(缓冲区)
    009path模块
    002nodejs简介与安装
    007http模块
    004NPM包管理器
    003nodejs的模块化
  • 原文地址:https://www.cnblogs.com/rh123456/p/7967807.html
Copyright © 2020-2023  润新知