Linux 内核模块有内存限制吗?

发布于 2024-09-12 09:55:01 字数 48 浏览 10 评论 0原文

Linux 内核模块对内存使用是否有任何限制,即代码段大小或全局内存量或任何东西。

Are there any restrictions on memory usage by a Linux Kernel Module i.e Code Segment size or amount of global memory or any thing.

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

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

发布评论

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

评论(1

雨巷深深 2024-09-19 09:55:01
  • 在 2.6.35 中,如果要加载的模块的长度超过 64 MB,则 load_module() 会退出: http://lxr.linux.no/#linux+v2.6.35/kernel/module.c#L2118
  • vmalloc()用于为模块分配空间——这个如果您尝试分配比物理内存中可用的页面更多的页面,则会失败(这可能只是 RAM 较低的嵌入式内容的问题)
  • 此外,还使用了 kzalloc() (以及 kmalloc())。根据所使用的分配器(SLAB、SLOB、SLUB),也可能存在限制。 SLAB 定义了 KMALLOC_MAX_SIZE,它定义了单次调用 kmalloc() 可以分配的最大字节数。
  • In 2.6.35, load_module() bails out if the length of the module to load exceeds 64 MB: http://lxr.linux.no/#linux+v2.6.35/kernel/module.c#L2118
  • vmalloc() is used to allocate space for the module -- this fails if you try to allocate more pages than available in your physical memory (which in turn will probably only be an issue for embedded stuff with low RAM)
  • Furthermore, kzalloc() (and in turn, kmalloc()) are used. Depending on the allocator used (SLAB, SLOB, SLUB), there may be restrictions as well. SLAB defines a KMALLOC_MAX_SIZE wich defines the maximum number of bytes you can allocate with a single call to kmalloc().
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文