2018-2019-1 20165226 《信息安全系统设计基础》第9周学习总结
目录
一、教材学习内容总结
虚拟内存
- 虚拟内存重要性(为什么需要程序员理解它?):
- 虚拟存储器是核心的
- 虚拟存储器是强大的
- 虚拟存储器是危险的。
- 虚拟存储器提供的的三个重要能力:
- 它的主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效的使用了主存。
- 它为每个进程提供了一致的地址空间,从而简化了存储器管理。
- 它保护了每个进程的地址空间不被其他进程破坏。
物理和虚拟寻址
地址空间
虚拟内存作为缓存的工具
- VM系统将虚拟内存分割为虚拟页,每个虚拟页大小为P=2^p字节。
- 物理存储被分割为物理页,大小也为P字节。
- 任意时刻,虚拟页面的集合都被分为三个不相交的子集:
- 未分配的:VM系统还没分配(创建)的页,不占用任何磁盘空间。
- 缓存的:当前缓存在物理存储器中的已分配页。
- 未缓存的:没有缓存在物理存储器中的已分配页。
页表
- 将虚拟页映射到物理页。每次地址翻译硬件将一个虚拟地址转换为物理地址时都会读取页表
- 页表是一个页表条目

缺页
- DRAM缓存不命中称为缺页
- 在磁盘和内存之间传送页的活动叫做交换或者页面调度
- 页从磁盘换入DRAM和从DRAM换出磁盘;一直等待到不命中发生的时候才换入页面;这种策略被称为按需页面调度
地址翻译
- 地址翻译是一个N元素的虚拟地址空间(VAS)中的一个元素和一个M元素的物理地址空间(PAS)之间的映射
- 所需符号

利用TLB加速地址翻译
- CPU产生一个虚拟地址
- MMU从TLB中取出相应的PTE
- MMU将这个虚拟地址翻译成一个物理地址,并且将它发送到高速缓存/主存
- 高速缓存/主存将所请求的数据字返回给CPU
研究:Intel Core i7/Linux存储器系统
linux将虚拟存储器组织成一些区域(也叫做段)的集合。一个区域就是已经存在的(已分配的)虚拟存储器的连续片
- 一个具体区域的区域结构:
- vm _start:指向这个区域的起始处;
- vm _end:指向这个区域的结束处;
- vm _prot:描述这个区域内所包含的所有页的读写许可权限;
- vm _fags:描述这个区域内的页面是与其他进程共享的,还是这个进程私有的,等等;
- vm _next:指向链表的下一个结构。
- Linux缺页异常处理:
- 看虚拟地址A是否合法?
- 看试图进行的内存访问是否合法?
- 处理缺页
内存映射
Linux通过将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容的过程,这个过程称为内存映射。
对象
- Unix文件系统中的普通文件
- 匿名文件(全都是二进制0)
再看fork函数
fork函数被当前进程调用时,它创建了当前进程的mm_struct、区域结构和页表的原样拷贝。它将两个进程中的每个页面都为标记只读,并将两个进程中的每个区域结构都标记为私有的写时拷贝。
再看execve函数
使用execve函数将a.out程序加载到内存
当运行时需要额外虚拟存储器时,使用动态存储器分配器维护一个进程的虚拟存储器区域。
- 系统调用malloc函数,从堆中分配块
- 系统调用free函数来释放已分配的堆块
- 实现一个简单的分配器
- 通用分配器设计
- 操作空闲链表的基本常数和宏
- 创建初始空闲链表
- 释放和合并块
- 分配块
返回目录
二、练习
返回目录
三、代码托管与统计
****
代码托管
返回目录
四、学习进度条
| 目标 |
5000行 |
30篇 |
400小时 |
|
| 第一周 |
87/87 |
2/2 |
20/20 |
|
| 第二周 |
71/158 |
1/3 |
12/32 |
|
| 第三周 |
100/258 |
2/5 |
13/45 |
|
| 第四周 |
3265/9750 |
2/7 |
15/60 |
|
| 第五周 |
282/9786 |
1/8 |
8/68 |
|
| 第六周 |
1980/13996 |
2/10 |
8/76 |
|
| 第七周 |
488/14484 |
1/11 |
8/84 |
|
| 第八周 |
175/15044 |
3/14 |
8/92 |
|
| 第九周 |
6400/278403 |
2/16 |
10/102 |
|
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
参考:软件工程软件的估计为什么这么难,软件工程 估计方法
计划学习时间:8小时
实际学习时间:10小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
返回目录
五、参考资料
返回目录
2018-2019-1 20165226 《信息安全系统设计基础》第9周学习总结
原文:https://www.cnblogs.com/musea/p/10052257.html