• 填写各个基本练习中要求完成的报告内容
    • 完成实验后,请分析ucore_lab中提供的参考答案,并请在实验报告中说明你的实现与参考答案的区别
    • 列出你认为本实验中重要的知识点,以及与对应的OS原理中的知识点,并简要说明你对二者的含义,关系,差异等方面的理解(也可能出现实验中的知识点没有对应的原理知识点)
    • 列出你认为OS原理中很重要,但在实验中没有对应上的知识点

    练习0:填写已有实验

    本实验依赖实验1/2。请把你做的实验1/2的代码填入本实验中代码中有“LAB1”,“LAB2”的注释相应部分。

    练习1:给未被映射的地址映射上物理页(需要编程)

    完成do_pgfault(mm/vmm.c)函数,给未被映射的地址映射上物理页。设置访问权限
    的时候需要参考页面所在 VMA
    的权限,同时需要注意映射物理页时需要操作内存控制
    结构所指定的页表,而不是内核的页表。注意:在LAB3 EXERCISE
    1处填写代码。执行

    请在实验报告中简要说明你的设计实现过程。请回答如下问题:

    • 请描述页目录项(Page Directory Entry)和页表项(Page Table Entry)中组成部分对ucore实现页替换算法的潜在用处。

    练习2:补充完成基于FIFO的页面替换算法(需要编程)

    完成vmm.c中的do_pgfault函数,并且在实现FIFO算法的swap_fifo.c中完成map_swappable和swap_out_victim函数。通过对swap的测试。注意:在LAB3
    EXERCISE 2处填写代码。执行

    请在实验报告中简要说明你的设计实现过程。

    请在实验报告中回答如下问题:

    • 如果要在ucore上实现”extended clock页替换算法”请给你的设计方案,现有的swap_manager框架是否足以支持在ucore中实现此算法?如果是,请给你的设计方案。如果不是,请给出你的新的扩展和基此扩展的设计方案。并需要回答如下问题
      • 需要被换出的页的特征是什么?
      • 在ucore中如何判断具有这样特征的页?
      • 何时进行换入和换出操作?

    扩展练习 Challenge 1:实现识别dirty bit的 extended clock页替换算法(需要编程)

    扩展练习 Challenge 2:实现不考虑实现开销和效率的LRU页替换算法(需要编程)