xv6中trap(即让cpu暂停执行当前代码,去执行相应的处理代码的情况)有三种: 系统调用 异常,如除以零 设备中断,例如完成了一次读写事件,当然也包括定时中断 发生trap时,一般的处理是: 控制转移到kernel kernel保存当前进程的相关状态(具体就是trampoline.s中,将寄存器保存到进程的trapframe,将栈顶指针设为内核栈的,恢复tp寄存器,让其保存当前cpu的id,从trapframe中取出内核页表页的地址,设置为satp的值,并刷新tlb,从tf中取出usertr