在 Linux 中,当一个进程试图访问一个没有当前物理映射的页面(缺少页表条目)时,会产生一个页面错误(由 CPU)。这会导致调用 Linux 的页面错误处理程序。如果这个故障是“严重的”,意味着 Linux 必须从交换设备读取页面,在这种情况下,处理程序必须从实际磁盘读取。由于从磁盘读取是异步的(submit_bio),这是否会导致进程重新调度?(并在 I/O 完成时唤醒?)
如果确实发生了重新安排,“schedule()”的调用在哪里?阅读 mm/swap_state.c 中的代码并不能让我知道何时(或是否)会发生这种情况。