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

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

学习目标

1.理解虚拟存储器的概念和作用

2.理解地址翻译的概念

3.理解存储器映射

4.掌握动态存储器分配的方法

5.理解垃圾收集的概念

6.了解C语言中与存储器有关的错误

教材学习内容总结

物理和虚拟寻址

  • 使用虚拟寻址时,CPU通过生成一个虚拟地址(Virtual Address,VA)来访问主存,这个虚拟地址在被送到存储器之前先转换成适当的物理地址。将一个虚拟地址转换为物理地址的任务叫做地址翻译(address translation)。

虚拟存储器作为缓存的工具

在任意时刻,虚拟页面的集合都分为三个不相交的子集:

  • 未分配的:VM系统还未分配(或者创建)的页。未分配的块没有任何数据和它们相关联,因此也就不占用任何磁盘空间。(没有调用malloc或者mmap的)
  • 缓存的:当前缓存在物理存储中的已分配页。(已经调用malloc和mmap的,在程序中正在引用的)
  • 未缓存的:没有缓存在物理存储器中的已分配页。(已经调用malloc和mmap的,在程序中还没有被引用的)

存储器映射(Windows下也有类似的机制,名叫内存映射)

Linux(以及其他一些形式的Unix)通过将一个虚拟存储器区域与一个磁盘上的对象(object)关联起来,以初始化这个虚拟存储器区域的内容,这个过程称为存储器映射(memory mapping)。虚拟存储器区域可以映射到两种类型的对象的一种

(1)Unix文件上的普通文件

(2)匿名文件

垃圾回收

1、垃圾收集器将存储器视为一张有向可达图(reachability graph)。

2、Mark%Sweep垃圾收集器由标记(mark)阶段和清除(sweep)阶段组成。标记阶段标记出根节点的所有可达的和已分配的后继,而后面的清除阶段释放每个被标记的已分配块。典型地,块头部中空闲的低位中的一位来表示这个块是否被标记了。

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

  • 问题1:malloc()到底从哪里得到的内存空间?
  • 问题1解决方案:查资料从C语言的malloc()和free()函数原理【整理】 - CSDN博客得知,答案是从堆里面获得空间。也就是说函数返回的指针是指向堆里面的一块内存。操作系统中有一个记录空闲内存地址的链表。当操作系统收到程序的申请时,就会遍历该链表,然后就寻找第一个空间大于所申请空间的堆结点,然后就将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。

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

本周未遇到代码调试问题。

代码托管

上周考试错题总结

  • 错题1:
    Unix/Linux中,对于代码fd=open("foo",O_WRONLY,0766),umask=022,下面说法正确的是()

A . 进程对foo是只写的

B . 同组成员能写foo

C . 使用者可以执行foo

D . 任何人都可以写foo

  • 分析:选A、C;因为九个权限可以用0777表示,07(使用者)7(同组成员)7(其他人)
    7(111)(读:写:执行),文件实际权限是mode&~mask

结对及互评

点评模板:

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

本周结对学习情况

- [20155218](博客链接)
- 结对照片
- 结对学习内容
    - XXXX
    - XXXX
    - ...

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

这一章重点是掌握书本上的知识。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 65/65 1/1 10/10
第三周 120/185 2/3 15/15
第五周 375/560 3/6 14/29
第六周 287/847 1/7 14/43
第七周 575/1422 2/8 13/56
第八、九周 500/1922 3/11 30/86
第十、十一周 401/2323 2/13 30/116

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

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

  • 计划学习时间:12小时

  • 实际学习时间:12小时

  • 改进情况:

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

参考资料

原文地址:https://www.cnblogs.com/haoliberale/p/7966034.html