void do_page_fault(u64 esr, u64 fault_ins_addr) 在chchore中fault_addr是在do_page_fault中进行读取的,而且似乎没有一个地方使用到了fault_ins_addr,请问这个参数是多余的吗
zenotme 感觉缺页处理是需要的吧?
yang 1嗯。。我不太明白是啥意思。。因为lab中的方法是 fault_addr=get_fault_addr(); handle_trans_fault(vmspace,fault_addr); 所以需要是指什么意思呢
zenotme 你好,这里fault_ins_addr是”触发Page Fault的指令的地址“,而在handle_trans_fault里面用get_fault_addr获取到的是”访问时产生Page Fault的内存地址“,两者是不同的。 fault_ins_addr在目前版本的chcore中确实用处不大,但该变量一方面可以方便操作系统的开发与调试,另一方面后续也可以基于这一参数实现一些更加高级的功能(如根据触发page fault的指令进行特殊处理等),因此仍然在课程实验中保留了这一变量
fault_ins_addr
handle_trans_fault
get_fault_addr