2018-2019-1 20165333《信息安全系统设计基础》第九周学习总结

教材内容总结

虚拟内存
虚拟内存时硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每一个进程提供一个大的、一致的和私有的地址空间。通过一个很清晰的机制,虚拟内存提供了三个很重要的能力:
1.它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效的使用了主存。
2.它为每个进程提供了一致的地址空间,从而简化了内存管理
3.它保护了每个进程的地址空间不被其他进程破坏。

物理和虚拟地址
计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每字节都有一个唯一地物理地址(Physical Address, PA)。第一个字节的地址为0,接下来的字节地址为1,再下一个为2,以此类推。给这种简单的结构,CPU访问内存的最自然的方式就是使用物理地址。我们把这种方式称为物理寻址。 早期的PC使用物理地址,而且诸如数字信号处理器、嵌入式微控制器以及Cray超级计算机这样的系统仍然继续使用这种寻址方式。

地址空间:

  • 地址空间是一个非负整数地址的有序集合。地址空间的概念是很重要的,因为它清楚地区分了数据对象和它们的属性。主存的每个字节都有一个选自虚拟地址空间的虚拟地址和一个选自物理空间的物理地址。
    虚拟内存作为缓存的工具
    概念上而言,虚拟内存被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组。每字节都有一个唯一地虚拟地址,作为到数组的索引。磁盘上数组的内容被缓存在主存中。和存储器层次结构中其它缓存一样,磁盘(较低层)上的数据被分割成块,这些块作为磁盘和主存(较高层)之间的传输单元。VM系统通过将虚拟内存分割为称为虚拟页(Virtual Page, VP)的大小固定的块来处理这个问题。每个虚拟页的大小为字节。类似地,物理内存被分割为物理页(Physical Page,PP),大小也为P字节(物理页也被称为页帧)。
    在任意时刻,虚拟页面的集合都分为三个不想交的子集:

  • 未分配的:VM系统还未分配(或者创建)的页。未分配的块没有任何数据和它们相关联,因此也就不占用任何磁盘空间。

  • 缓存的:当前已缓存在物理内存中的已分配页。

  • 未缓存的: 未缓存在物理内存中的已分配页。
    页表

页命中

缺页
在虚拟内存的习惯说法中,缓存不命中称为缺页。下图展示了在缺页之前我们的示例页表的状态。CPU引用了VP3中的一个字,VP3并未缓存在DRAM中。地址翻译硬件从内存中读取PTE3,从有效位推断出VP3未被缓存,并且触发一个缺页异常。缺页异常调用内核中的缺页异常处理程序,该程序会选择一个牺牲页,在此例中就是存放在PP3中的VP4。如果VP4已经被修改了,那么内核就会将它复制回磁盘。无论哪种情况,内核都会修改VP4的页表条目,反映出VP4不再还存在主存中这一事实。

地址翻译
形式上来说,地址翻译是一个N元素的虚拟地址空间(VAS)的元素和一个M元素的物理地址空间(PAS)中元素之间的映射。

多级页表

  • 用来压缩页表的常用方法是使用层次结构的页表
    Linux虚拟内存区域

内核为系统中的每个进程维护一个单独的任务结构(源代码中的task_struct)。任务结构中的元素包含或者指向内核运行该进程所需要的所有信息(例如,PID、指向用户栈的指针、可执行目标文件的名字,以及程序计数器)。

posted @ 2018-12-02 23:01  20165333陈国超  阅读(157)  评论(0编辑  收藏  举报