多核系统上的BSOD错误检查 – 什么线程导致崩溃?

我知道一个Windows的系统会因为一些常见原因而停止运行并出现“蓝屏”,其中一些可能是:

  • 内核模式空间中运行的设备驱动程序或操作系统function会遇到未处理的exception(内存访问问题等)
  • 设备驱动程序或操作系统function会显式崩溃系统,因为它检测到损坏或损坏风险
  • 硬件故障

我感兴趣的是,当检查崩溃转储(比如说WinDBG)时,转储将始终指示导致崩溃的线程,从而允许检查该线程的堆栈,提供导致错误检查和崩溃。 走这个堆栈会给出如何防止未来问题的线索(例如,特定的驱动程序需要更新等)。

知道这一点,我问自己下面的问题,这揭示了我的知识上的差距:

  1. 在多核/处理器系统上,多个线程将同时执行
  2. 那么肯定有两个线程同时发生错误检查的可能性?

在这种情况下会发生什么? 我对于操作系统在并发执行和访问内存和硬件(IRQL和延迟过程调用(DPC)等)方面如何处理多核/处理器系统有一个基本的误解?

谢谢