20145315 《信息安全系统设计基础》第14周学习总结
课程内容总结
物理地址和虚拟地址
- 物理地址:计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每个字节都有唯一的物理地址。
- 虚拟寻址:使用虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到存储器前被转换为适当的物理地址。
地址空间
- 一个地址空间的大小是由表示最大地址所需要的位数来描述的。
- 虚拟存储器的基本思想:允许每个数据对象有多个独立的地址,其中每个地址都选自一个不同的地址空间。
虚拟存储器作为缓存的工具
-
VM系统将虚拟存储器分割为称为虚拟页的大小固定的块。
-
物理存储器被分割为物理页(页帧),大小也为P。
-
在任意时刻,虚拟页面的集合都被分为三个不相交的子集:
- 未分配的:没有任何数据与它们相联,不占任何磁盘空间。
- 缓存的:当前缓存的物理存储器中的已分配页。
- 未缓存的:没有缓存在物理存储器中的已分配页。
-
DRAM缓存的组织结构:
- 由于大的不命中处罚,DRAM缓存是全联的。
- 与硬件SRAM相比,操作系统对DRAM缓存使用了更加复杂精密的替换算法。
- 对磁盘的访问时间很长,DRAM缓存总是使用写回,而不是直写。
页表
页表:将虚拟页映射到物理页。
每次地址翻译 硬件将虚拟地址转换为物理地址时都会读取页表。
页表就是一个页表条目(PTE)的数组。
虚拟地址空间中每个页中一个固定偏移量处都有一个PTE。
DRAM缓存不命中称为缺页。
虚拟存储器作为存储管理工具
VM简化了链接和加载,代码和数据共享,以及应用程序的存储器分配。
虚拟存储器作为存储器保护的工具
SUP位表示进程是否必须运行在内核模式下才能访问该页。READ和WRITE位控制对页面的读和写访问。
如果一条指令违反了这些许可条件,那么CPU就触发一个一般保护故障,将控制传递给一个内核中的异常处理程序。
地址翻译
将一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射。
-
当前页命中的执行步骤(完全由硬件处理):
- 处理器生成虚拟地址,传给MMU
- MMU生成PTE地址,并从高速缓存/主存请求得到他
- 高速缓存/主存向MMU返回PTE
- MMU构造物理地址,并把它传给高速缓存/主存
- 高速缓存/主存返回所请求的数据给处理器。
-
处理缺页(要求硬件和操作系统内核协作完成):
- 处理器生成虚拟地址,传给MMU
- MMU生成PTE地址,并从高速缓存/主存请求得到他
- 高速缓存/主存向MMU返回PTE
- PTE中有效位是零,MMU触发异常,传输CPU中的控制到操作系统内核中的缺页异常处理程序。
- 缺页异常处理程序确定牺牲页,如果这个页面已经被修改了,则把它换出磁盘。
- 缺页异常处理程序调入新的页面,更新存储器中的PTE
- 缺页异常处理程序返回原来的进程,再次执行导致缺页的指令。CPU将引起缺页异常虚拟地址重新发送给MMU。因为虚拟页面现在缓存在物理存储器中,所以就会命中。
TLB加速地址翻译
翻译后备缓冲器(TLB):是一个小的、虚拟存储的缓存,其中每一行都保存着一个由单个PTE组成的块,TLB通常具有高度的相关性。
存储器映射
- 存储器映射:Linux通过将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容的过程。
- 一个对象可以被映射到虚拟存储器的一个区域,要么作为共享对象,要么作为私有对象。
存储器动态分配
分配器的两种基本风格:
- 显示分配器-malloc和free
- 隐式分配器/垃圾收集器
碎片
虽然有未使用的存储器,但是不能用来满足分配请求时,发生这种现象。
-
内部碎片:发生在一个已分配块比有效载荷大的时候
-
外部碎片:发生在当空闲存储器合计起来足够满足一个分配请求,但是没有一个单独的空间块足以处理这个请求时发生。
垃圾收集
垃圾收集器是一种动态存储分配器,它自动释放程序不再需要的已分配块,这些块被称为垃圾。
自动回收堆存储的过程叫做垃圾收集。
当存在一条从任意根节点出发并到达p的有向路径时,说节点p是可达的,不可达点就是垃圾。
存储器有关错误
- 间接引用坏指针
- 读未初始化的存储器
- 允许栈缓冲区溢出
- 假设指针和它们指向的对象是相同大小的
- 造成错位错误
- 引用指针,而不是它所指向的对象
- 误解指针运算
- 引用不存在的变量
- 引用空堆块中的数据
- 引起存储器泄露
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 20/200 | 1/2 | 20/20 | |
第二周 | 30/200 | 2/4 | 18/38 | |
第三周 | 50/200 | 1/4 | 22/30 | |
第四周 | 0/200 | 0/0 | 0/30 | |
第五周 | 100/200 | 2/2 | 25/30 | |
第六周 | 100/200 | 2/2 | 25/30 | |
第七周 | 100/200 | 1/2 | 25/30 | |
第九周 | 100/200 | 1/2 | 25/30 | |
第十周 | 100/200 | 1/2 | 25/30 | |
第十一周 | 100/200 | 1/2 | 25/30 | |
第十二周 | 100/200 | 1/2 | 25/30 | |
第十三周 | 943/200 | 1/2 | 25/30 | |
第十四周 | 0/200 | 1/2 | 25/30 |
参考资料
- 《信息安全系统设计基础》教学进程
- ...