Linux内核内存管理?

发布于 2024-10-12 18:58:49 字数 67 浏览 6 评论 0原文

Linux 内核会在模块释放后释放内核模块内存中的 kmalloc 而不是 kfree,就像它与用户空间应用程序一样吗?

Will Linux Kernel free kmalloc'ed and not kfree'd in kernel module memory after module release just like it's work with user space apps?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无声静候 2024-10-19 18:58:49

内核不会对模块进行任何垃圾收集。如果模块 kmalloc 是一个内存块,并且在卸载模块之前没有 kfree 它,则该块将保持分配状态并且无法访问,直到下次重新启动为止。

The kernel will not do any garbage collection for a module. If the module kmallocs a chunk of memory and doesn't kfree it before the module is unloaded, that chunk will stay allocated and inaccessible until the next reboot.

梦里寻她 2024-10-19 18:58:49

正如其他人所说,内核不会对模块进行任何垃圾收集,但设备驱动程序可以使用 devm_* 类型的资源分配(称为托管资源分配函数),并且内核将在之后执行所有必需的清理工作没有更多关于该设备的参考。

请参阅此处,了解内核源代码中 的注释源代码devm_kmalloc

As others said, the kernel will not do any garbage collection for a module but device drivers can use devm_* types of resource allocations (called managed resource allocation functions) and the kernel will do all the required cleanups after there is no more reference to the device.

See here for the commented source code in the kernel source for devm_kmalloc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文