2017-2018-1 20155231 《信息安全系统设计基础》第11周学习总结
教材学习内容总结
- 理解虚拟存储器的概念和作用
- 虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互。
- 虚拟存储器作为虚拟的工具:
唯一的虚拟抵制是作为到数组的索引的。
磁盘上数据的内容被缓存在主存中。
VM系统通过将虚拟存储器分割为称为虚拟页(VP)。
每个虚拟页的大小为P=2^P字节。
物理存储器被分割为物理页(PP,也称为页帧),大小为P字节。
在任何时刻,虚拟页面的三个子集:
未分配的:VM系统还未分配的页
缓存的:当前缓存在物理存储器中的已分配页
未缓存的:没有缓存在物理存储器中的已分配页
- 理解地址翻译的概念
- 地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理空间地址(PAS)中元素之间的映射,MAP:VAS→PAS∪Ø
- 利用TLB加速地址翻译
- 理解存储器映射
- Linux通过将一个虚拟存储器与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容,这个过程称为存储器映射。
- 虚拟存储器区域可以映射到两种类型的对象中的一种:
- Unix文件系统中的普通文件
- 匿名文件
- 一旦一个虚拟页面被初始化,它就在一个由内核维护的专门的交换文件之间换来换去。
- 交换文件也叫做交换空间或者交换区域。
- 一个对象可以被映射到虚拟存储器的一个区域,要么作为共享对象,要么作为私有对象。
- 一个映射共享对象的虚拟存储器区域叫做共享区域。类似的,还存在私有区域。
- 私有对象使用写时拷贝技术被映射到虚拟存储器中。
- 掌握动态存储器分配的方法
- 动态存储器分配器维护着一个进程的虚拟存储器区域,称为堆(heap)。
- 对于每个进程,内核维护着一个变量brk,它指向堆的顶部。
- 分配器将堆视为一组不同大小的块的集合来维护。
- 每个块就是一个连续的虚拟存储器片,要么是已分配的,要么是空闲的。
- 分配器有两种基本风格:
显式分配器:要求应用显式地释放任何已分配的块。
隐式分配器:要求分配器检测一个已分配块何时不再被程序所使用,那么就释放这块。 - 隐式分配器页叫做垃圾收集器,而自动释放未使用的已分配的块的过程叫做垃圾收集。
- 理解垃圾收集的概念
- 垃圾收集器:动态存储分配器
- 垃圾:程序不再需要的已分配块
- 垃圾收集:自动回收堆存储的过程
- 了解C语言中与存储器有关的错误
- 间接引用坏指针
- 读为初始化的存储器
- 允许栈缓冲区溢出
- 假设指针和它们所指向的对象是相同大小的
- 造成错位错误
- 引用指针,而不是它所指向的对象
- 误解指针运算
- 引用不存在的变量
- 引用空闲堆块中的数据
- 引起存储器泄漏
教材学习中的问题和解决过程
- 问题1:mallock和free函数
- 问题1解决方案:程序通过调用malloc函数来从堆中分配块。
malloc函数返回一个指针,指向大小为至少size字节的存储器块,这个块会为可能包含在这块内的任何数据对象类型做对齐。
free函数来释放已分配的堆块
代码调试中的问题和解决过程
- 问题1:实验4
- 问题1解决方案:
代码托管
上周考试错题总结
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
- [结对同学学号1](博客链接)
- 结对照片
- 结对学习内容
- XXXX
- XXXX
- ...
其他(感悟、思考等,可选)
xxx
xxx
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第11周 | 200/2200 | 2/2 | 11/20 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:11小时
-
实际学习时间:20小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)