Linux kernel 在Linux中,是否所有属于用户模式进程或正在运行的内核模式模块的页面都可以进入磁盘?

Linux kernel 在Linux中,是否所有属于用户模式进程或正在运行的内核模式模块的页面都可以进入磁盘?,linux-kernel,operating-system,kernel,linux-device-driver,Linux Kernel,Operating System,Kernel,Linux Device Driver,我正在开发一个内核模式模块,它读取RAM中可用的所有页面。我想知道,如果我从我创建的RAM映像中获得进程和内核模块的列表,是否可能因为应用程序的所有页面都已进入磁盘而无法获得任何应用程序的跟踪?如果没有,在应用程序的用户模式和内核模式中有任何特定部分永远不会被分页吗?当然有一些内核部分永远不会被分页:例如,分页代码。除非某个进程在内存中锁定了一个页面,否则整个进程都可以被调出。内核的任何部分都不能被调出或交换,因为内核在真实内存中运行。分页和交换是虚拟内存管理中的术语,它只适用于在用户空间中运行

我正在开发一个内核模式模块,它读取RAM中可用的所有页面。我想知道,如果我从我创建的RAM映像中获得进程和内核模块的列表,是否可能因为应用程序的所有页面都已进入磁盘而无法获得任何应用程序的跟踪?如果没有,在应用程序的用户模式和内核模式中有任何特定部分永远不会被分页吗?

当然有一些内核部分永远不会被分页:例如,分页代码。除非某个进程在内存中锁定了一个页面,否则整个进程都可以被调出。

内核的任何部分都不能被调出或交换,因为内核在真实内存中运行。分页和交换是虚拟内存管理中的术语,它只适用于在用户空间中运行的程序

可加载的内核模块LKM,一旦加载,就是内核的一部分,所以不,它们不能被分页或交换


但是,在回答您的问题时,是的,在用户空间中运行的进程可能会将其所有内存分页/交换到磁盘,但不太可能一次将每个页面分页出来,除非进程在繁忙的系统上处于空闲状态。

谢谢。我认为操作系统代码的任何部分都不会在Linux中被分页。你说的对内核模块有用吗?我的意思是整个内核模块都可以被调出?