我正在尝试使用 linux 设备驱动程序来分配物理内存/页面。我有一个 ioctl,任何应用程序都可以调用它,它只是分配一个物理页面并使用 vm_insert_page 将其映射到进程内存。我正在使用 alloc_page() 来分配物理页面。我想知道的是,alloc_page() 分配的物理页面是否计入制作 IOCTL 的进程,或者它是否只是属于驱动程序的物理页面。
我指的计数是在 android 中的低内存杀手或内存不足杀手之类的东西。这些组件在决定在内存不足或内存不足的情况下终止哪个进程之前,会跟踪进程的物理内存使用情况。
另一个问题:GFP_HIGHUSER和GFP_HIGHUSER_MOVABLE有什么区别?我知道使用 alloc_page(GFP_HIGHUSER) 会给我一个不可分页(不交换到磁盘)页面。GFP_HIGHUSER_MOVABLE 会改变这个吗?请不要指出我的来源。我问这个问题是因为我看到的来源并且它没有足够的文档或者我无法从提供的文档中理解。