当前位置: 首页 > 面试题库 >

KMALLOC大小分配

封昊天
2023-03-14
问题内容

KMALLOC是仅在页面大小的内存中分配还是可以分配较少的内存?kmalloc可以分配多少大小?我在哪里可以找到它的描述,因为到处看都没有真正说出它分配了多少内存?我想知道KMALLOC分配的实际大小是多少。是否分配2的幂的大小?它只是从准备就绪的缓存中查找可用对象吗?


问题答案:

我的理解如下:内核正在处理系统的物理内存,仅在页面大小的块中可用;因此,在调用时,您kmalloc()将仅获得某些预定义的固定大小的字节数组

您获得的实际内存取决于系统的体系结构,但是kmalloc可以处理的最小分配量最大为32或64字节。您将kmalloc() 至少
从呼叫中返回所需的内存(通常更多)。通常,您获得的空间不会超过128 KB(再次取决于体系结构)

要获取系统的页面大小(以字节为单位),您可以执行以下命令:

getconf PAGESIZE

要么

getconf PAGE_SIZE

有关最大页面大小的信息位于/usr/src/linux/include/linux/slab.h中

是的,页面大小通常是2的乘方,但同样,您不会完全得到所需要的,而是更多。

您可以使用如下代码:

void * stuff;
stuff = kmalloc(1,GFP_KERNEL);
printk("I got: %zu bytes of memory\n", ksize(stuff));
kfree(stuff);

要显示分配的实际内存量:

[90144.702588] I got: 32 bytes of memory


 类似资料:
  • 问题内容: 我正在尝试提出一个要求区分大小写的结果的请求。 例如在我的数据库中 该请求是 但我有3行作为结果,我只想要abcdef 我试图找到一个解决方案 但是我有这个错误: 未知归类:’Latin1_General_CS_AS’{“成功”:false,“错误”:“#1273-未知归类:’Latin1_General_CS_AS’”} 谢谢 问题答案: 感谢您的帮助,我找到了不是latin1 ut

  • https://docs.oracle.com/javase/8/docs/api/java/util/Spliterator.html SIZED特征值表示在遍历或拆分之前从估计大小()返回的值表示有限大小,在没有结构源修改的情况下,表示完整遍历将遇到的元素数量的精确计数。 SUBSIZE Character 值表示 trySplit() 生成的所有拆分器都将同时具有 SIZE 和 SUBSIZ

  • 对于报告(0.1%的所有查询),我需要返回一个所有可能类别的列表,区分大小写! 考虑以下文件: 运行以下查询: 返回: 是否有方法返回区分大小写的类别(存储在文档中)?我对此查询结果中的感兴趣。 Elasticsearch论坛中的问题 谢谢,伊泰

  • 我试图在Elasticseach 7中实现部分的、区分大小写的匹配。 我正在使用设置创建索引: 以及映射: 以下查询将正确返回文档: 但当我将搜索词小写时,它不会返回文档: 如何配置Elasticsearch,使其与使用小写搜索词的名称字段值匹配?

  • 问题内容: indexOf(String)方法区分大小写吗?如果是这样,是否有不区分大小写的版本? 问题答案: 这些方法均区分大小写。通过预先将字符串转换为大写/小写,可以使它们(大致来说,以一种折断的方式,但是可以处理很多情况)不区分大小写: