我所有的驱动程序代码目前都是这样做的,主要是因为我与一位非常资深的驱动程序程序员一起工作了几年,他之前在 Windows 内核团队工作了 15 年,他要求这样做。我养成了这样的习惯,从来没有真正问过“为什么?”这个问题。
我知道明显的原因,例如与分页相比,非分页池稀缺,并且您无法对目标系统做出假设(例如有多少非分页内存可用)。但是我们最近继承了许多 Linux 驱动程序程序员,他们开始使用我的驱动程序代码(显然在 Linux 中没有这样的区别),当我告诉他们代码/数据必须随时放入分页池时,他们都起身了可能的。
那么,我们进行分页/非分页池分配的真正原因是什么?