我在xv6-rev6源代码中找不到页面错误处理程序。是我错过了它还是根本没有页面错误处理程序?我在Traps.h中确实找到了“#define T_PGFLT 14 //页面错误”(工作表上的第2817行),但除了第2817行外,我找不到它。
答案 0 :(得分:2)
异常处理从vector14()
开始,它在vector.S中定义,由this Perl script生成。
vector14()
然后将控制转移到alltraps()
,这是所有进一步的异常和系统调用处理的公共入口点。
alltraps()
最后调用一个C处理程序trap()
,它分析事件并调度适当的处理程序(系统调用,I / O,异常)。
trap()
调用pgfault_handler()
来处理页面错误。