1 / 13

Problem4: Virtual Memory

Problem4: Virtual Memory. HJC jinchenhan@fudan.edu.cn. 知识点. VM hierarchy COW 4 小 问. 错误分析. VM 机制不清晰 地址计算错误,图中 PTE 位 置标错 第二题或第四题出现诸如 10240 或 20480 这种答案,是对 PF 的理解有误,切记所有的 page fault 都是以一个 page 为单位触发的 (protect fault 实际上也是一种 page fault). 1. 补完程序. 比较简单,不做解释了,可以参见 CSAPP 第 728-729 页

dotty
Download Presentation

Problem4: Virtual Memory

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Problem4: Virtual Memory HJC jinchenhan@fudan.edu.cn

  2. 知识点 • VM hierarchy • COW • 4小问

  3. 错误分析 • VM机制不清晰 • 地址计算错误,图中PTE位置标错 • 第二题或第四题出现诸如10240或20480这种答案,是对PF的理解有误,切记所有的page fault都是以一个page为单位触发的(protect fault实际上也是一种page fault)

  4. 1. 补完程序 • 比较简单,不做解释了,可以参见CSAPP第728-729页 • 第[1]&[4]空,写成运算结果算对 • 第[3]空只写MAP_SHARED算对 • 第[6]空只写MAP_PRIVATE算对

  5. 2&3. PF个数及B处PT图 • 数组长度每个10240,所占空间10240*4,也就是10*2^12 bytes,即10个页 • sarr地址0xb77fa000 ~ 0xb7803fff • larr地址0xb77f0000 ~ 0xb77f9fff • 二级页表,PD和PT的index见下页图

  6. 2&3. PF个数及B处PT图(cont.) • 地址运算结果

  7. 2&3. PF个数及B处PT图(cont.) • mmap之前pt图如下 • 根据题目表述,无数字白色方块均表示空白的PTE或PDE

  8. 2&3. PF个数及B处PT图(cont.) • B处pt图如下

  9. 2&3. PF个数及B处PT图(cont.) • 两个数组共占用了20个页表,根据刚才对数组开始、结束地址的计算,这20个页表所对应的PTE均应处于fill状态 • 此外,从(2DE,000)之后的4个页表,与之前的地址的PDE不同,而2DE这个PDE之前是空的,所以需要新创建一个新的PT

  10. 2&3. PF个数及B处PT图(cont.) • 从(2DD,3F0)到(2DE,003)这20个PTE所对应的物理页表是之前不存在,在A-B程序段的初始化中才创建出来的,所以在每个页表第一次写入的时候会触发PF,一共20个 • PDE 2DE所指向的PT之前不存在,A-B段代码执行完后被创建出来,第一次写入该PT的时候触发PF,一共1个 • A-B段代码共触发PF 21个

  11. 4. COW个数 • sarr不触发COW,只有对larr的10个页表的写操作会触发COW • 父进程+子进程分别对自己的larr进行了修改,共有20次COW的PF • 父进程写某个被置了COW的页表,触发PF之后,子进程再次对该页进行写入依然会触发PF!(CSAPP P726)

  12. 4. COW个数(cont.) • PF的处理过程是,当发现一个PF是因为COW而触发的时候,首先检查当前这个物理页的引用数,如果超过1(对应父进程的情况),那么给当前进程新分配一个物理页,修改PTE,重新执行触发PF的指令;如果恰为1(对应子进程的情况),也就是当前进程是该物理页唯一拥有者,则不会新分配物理页,而是直接修改PTE,重新执行触发PF的指令。

  13. 谢谢 • 如果还有哪里讲解的不清楚,或是还有什么疑问,欢迎发邮件与我讨论 • 祝大家新年快乐

More Related