2020春-lab3申诉邀请贴
匿名2023/07/31 19:51:39提问
    lab3student
306
## 申诉邀请

看报告看的头都晕了~~搞错分数很有可能,所以大家拿起维权的武器,留下你的学号和大概情况,我会仔细去确认的。

这里说下我的评分标准和这次的基本情况。

评分标准与作答基本情况

ucore:

概况

总分10分,运行结果:5分,报告:5分,挑战:2分,超过10分按10分记。最后换算为百分制。

运行结果

运行结果以 make grade 输出为准,这里我做了文件替换,只是用 kern\mm\swap_fifo.c 和 kern\mm\vmm.c 两个文件。

只有两位同学没拿到满分。

报告:

代码分析 1 分:

由于本次代码真的很简单,只要简单分析就给了,哪怕把注释全都抄过来,或者直接甩给我一份代码我都认(仅代表个人标准,其他助教可能严格要求)。只写:翻译注释即可,不给分。

练习一第一问 1 分:

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

只要写出访问位和修改位/dirty位对于时钟算法的帮助就给分。只写存在位帮助判断是否在磁盘上得0.5分。

其他正确答案:PTE还在存在位为0时,记录了磁盘分区的信息。保留位为记录其他信息提供了可能。

除了部分偷懒选手,大部分拿了满分。

练习一第二问 1 分:

Q: 如果 ucore 的缺页服务例程在执行过程中访问内存,出现了页访问异常,请问硬件要做哪些事情?

这道题比较完善的答案:

这种情况下会发生中断嵌套,再次进行缺页中断处理,不过和第一次缺页中断处理有所不同。

硬件会将发生缺页地址保存在 cr2 中,不换栈,(不压入 ss, rsp)压入rflags、cs、rip,跳转到 page fault 对应中断向量位置。

关于 double fault (在第三周周四课堂讨论参考答案上有详细描述):

(x86)硬件是允许 异常嵌套。异常嵌套在前若干次(根据内核栈的大小,几百到几千次)都是标准的异常处理流程处理。每次嵌套,硬件和软件都会压栈,所以若干次嵌套之后会栈溢出(i.e. 到没有页表映射的地址)。这时继续嵌套,CPU 在尝试跳转到 IDT 指向的 handler 过程中发现不能压栈,因为栈溢出了,压栈会导致 page fault。也就是说,“尝试跳转到 page fault handler 的时候又触发了一个 page fault”,这时触发 double fault 异常,处理器会按照标准流程尝试跳转到 handler 去处理这个 double fault(注意 double fault 和其他异常一样就是一个普通的异常)。但是栈已经溢出了,所以在跳转到 double fault 的时候再次发生了 page fault(硬件无法压栈 eip 等)。这种情况下处理器进入 shutdown mode,也就是 triple fault。

使用 qemu 的时候,qemu 默认检测到 cpu shutdown 之后会自动 reboot(可用参数 -no-reboot 修改这个行为)。
double fault 不是说【执行】fault handler 的时候触发了 fault,而是【硬件跳转到】fault handler 的时候触发了 fault。并且 double fault 就是一个普通异常。triple fault 才是不可恢复的重大错误,会导致关机。

我希望看到的描述是:保存 cr2, 不换栈,压入 rflags、cs、rip,跳转执行。只说会执行 page fault 处理得一半分;说出标准流程、错误认为执行double fault 处理,得满分;只说执行 double fault 处理不得分。只要有说不换栈、不压入ss rsp,得满分,因为已经意识到了这是一个嵌套的中断。

完美答出期望答案的大概 5 人左右,这些都是看了课后讨论答案的好同志。大概有一半同学由于描述不全、错误、不严谨扣了一半分。

练习二三问 2 分:

此题难度很小,扣分主要是没看清题目,答成了 fifo,或者干脆没看到还有回答要求的。答案不再赘述。

挑战

部分同学做了 challenge 1, 仅有一位同学同时做了 1 2。

只要有我接受的描述 / 代码,自行测试的截图,合理的说明就会给分。由于测试比较麻烦,允许有自己不同的设计,这部分主要依靠报告中的分析和示例给分。

rcore

问答 2 分:

有两个比较明显的错误。

  • 其一:在 do_pagefault 之后没有把从磁盘上读取的新页放入页面管理中,解决:加一句 push_frame。
  • 其二:写回脏页靠的是访问位,这在时钟调度算法中会导致脏页无法写回,解决:改变判断方式。

只要提到以上任何一点就满分。其他分析合理的也给满分。回答一些影响效率但不是错误的问题,如:页面管理总在全局进行等,得 1.5 分,分析两点得满分。回答一些比较不是问题的问题,如 fifo 有belady,分析详细的得1分,分析太简单得 0.5 。

回答(0
    推荐问答
      Simple Empty
      暂无数据