2019 年春 lab3 评分
匿名2023/07/31 19:51:40提问
    lab3student
302

评分标准
==============================================================================
lab3 满分 10 分.

* 实验基础分 8 分:
- 看 make grade

* 对实现过程的简要描述占 1 分:
- 只贴代码扣 0.5 -- 希望是自然语言的描述
- 描述有重大错误酌情扣分

* 对三个问题的回答占 1 分
- 错一个扣 0.5

* 在我下载 repo 后才补交的, 我探测了部分, 这些人得分乘以 0.8.
* 即刻起不接受补交.


集中出现的问题
==============================================================================
最大的错误在于练习 1 问题 2:

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

答案要点

* 需要明确提到 *硬件* 要做什么.
- 关键词须包含 CR2, "将 eflags/eip/cs/errorcode 压栈", 以及 "跳转到 IDT 项指向的中断处理例程".
有些人意思是对的, 但是说的过于简略 "硬件执行缺页异常处理例程", 没分.
- 很多人一通瞎说, 想到什么写什么吗, 能写多少写多少 (Chinese 博大精深), 他们的答案里面一堆事情是软件做的.

* 缺页服务例程过程中继续缺页不是 double fault.
- double fault 指的是, 处理器尝试跳转到 handler 这一过程中发生了异常.
包含但不限于: handler 在 IDT 中对应项的 Present = 0; 将 eflags 等压栈时栈溢出导致保护错误
- double fault 不指: 异常处理例程执行过程中, 因为某条指令执行而导致的嵌套异常.

* 还有的人把 "缺页异常" 写成 "缺页中断"
- 建议从汇编开始补习, 着重补习汇编和计原



附录
==============================================================================
Double fault 在 Intel SDM 中的描述如下. 注意是 while calling, 而非 while
executing. (英文 broad and profound)

> Indicates that the processor detected a second exception while calling an
> exception handler for a prior exception.
回答(0
    推荐问答
      Simple Empty
      暂无数据