linux内核中kmalloc与vmalloc

news2024/11/28 0:38:00

在这里插入图片描述

kmallocvmalloc 是 Linux 内核中的两种内存分配方法,它们都用于为内核分配内存,但它们在使用和管理内存方面存在一些重要差异。下面我们详细讨论这两种内存分配方法的异同。

相同点:

  1. 都是内核空间的内存分配方法。
  2. 都可以用于动态分配内存,内存大小可以在运行时指定。
  3. 分配的内存只能被内核使用,用户空间不能直接访问。

不同点:

  1. 连续性: kmalloc 分配的内存是物理上连续的,而 vmalloc 分配的内存只是虚拟上连续的。这意味着 kmalloc 分配的内存可用于需要物理连续内存的硬件设备,而 vmalloc 分配的内存仅适用于不需要物理连续内存的场景。

  2. 分配大小: 由于 kmalloc 需要分配物理连续的内存,因此在分配大块内存时可能会失败(因为找不到足够大的连续物理内存区域)。相比之下,vmalloc 可以分配较大的内存块,因为它使用虚拟地址空间,只要有足够的可用物理内存即可。

  3. 分配速度: 由于 kmalloc 在物理内存上连续,通常分配速度较快。而 vmalloc 在分配内存时需要在虚拟地址空间中查找可用的区域并建立页表映射,所以分配速度相对较慢。

  4. 内存管理: kmalloc 分配的内存来自于内核的伙伴系统(Buddy System),该系统管理物理内存页框。而 vmalloc 分配的内存来自于虚拟地址空间,它使用页表将虚拟地址映射到物理内存。

  5. 内存释放: kmalloc 分配的内存释放后可以立即被重新分配给其他请求,而 vmalloc 分配的内存释放后不会立即回收物理内存,而是保留在虚拟地址空间,直到下一次分配。

总结起来,kmalloc 更适用于需要物理连续内存且分配速度要求较高的场景,而 vmalloc 更适用于需要较大内存块且物理连续性要求不高的场景。根据实际需求选择合适的内存分配方法是内核编程中的一个重要考虑因素。

【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/742111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

anaconda目录下的pkgs文件夹很大,可以删除吗?

pkgs这个目录占用了6GB的硬盘空间。 其实里面是conda安装第三方包的时候保存在本地的下载文件,大部分是可以删除的。 只是删除后,后续你需要创建虚拟环境的时候或者在虚拟环境下pip安装第三方库的时候,会从网络去下载,没法直接从…

Jmeter的常用设置(一)

文章目录 前言一、Jmeter设置中文 方法一(临时改为中文)方法二(永久改成中文)二、启动Jmeter的两种方式 方法一(直接启动,不打开cmd窗口)方法二(带有cmd窗口的启动)三、调…

【xxl-job】本地部署并接入xxl-job到项目中

本地部署并接入xxl-job到项目中 一、xxl-job简介 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 什么是分布式任务调度 通常任务调度的程序是集成在应用…

SparkCoreDAG

DAG有向无环图 倒推 故推导程序的执行计划时,先看代码有几个action算子,从action倒推 一个action会产生一个JOB(DAG)(即一个应用程序内的子任务) 一个action一个Job一个DAG 一个application里面可以有多…

Latex:画图识别符号

http://detexify.kirelabs.org/classify.html

RDMA RoCev2 CM建链和Socket建链测试

前言 RDMA在高性能计算,AI大模型训练中发挥着重要的作用。 主流支持RDMA的协议有IB、RoCev1、RoCev2、iWARP。 其中RoCev2是应用最广泛的协议,因为其RDMA over UDP/IP,不依赖昂贵的IB网络设备,同时支持路由,性能上也…

Azure Kinect 之 Note(一)

Azure Kinect Azure Kinect DK 是一款开发人员工具包,配有先进的AI 传感器,提供复杂的计算机视觉和语音模型。 Kinect 将深度传感器、空间麦克风阵列与视频摄像头和方向传感器整合成一体式的小型设备,提供多种模式、选项和软件开发工具包(S…

Web开发模式

Web开发介绍 1 什么是web开发 Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 所以Web开发说白了,就是开发网站的,例如下图所示的网站:淘宝,京东等等 那么我们…

【*2400 线段树】CF444 C

Problem - C - Codeforces 题意: 思路: 首先询问的是权值和,那么维护一个区间和sum,因此pushup部分就好了 考虑修改,区间修改,因此要打标记 一次修改对区间和的贡献不能直接计算,因此我们考…

8-1、Deployment运行应用的机制

Kubernetes 通过各种 Controller 来管理 Pod 的生命周期。为了满足不同业务场景,Kubernetes 开发了 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 、 CronJob 等多种 Controller。 用户通过 kubectl 创建 Depl…

ENSP模拟器如何设置命令行和描述框的背景颜色及字体

ENSP模拟器如何设置命令行和描述框的背景颜色及字体 选择“菜单 > 工具 > 选项”, 在弹出界面中选择“字体设置”。 单击“字体”后的“选择”设置字体,单击“字体颜色”后的“选择”设置字颜色,单击“背景颜色”后的“选择”设置…

UnityVR--机械臂场景11-简单流水线应用3

目录 一. 前言 二. 设置一个定时器 三. 添加机械臂事件 四. 机械臂控制函数OnArmCtrl 五. 定义上面的3个机械臂移动方法 六. 机械臂各关节转动控制 七. 场景实现 八. 完整代码 一. 前言 上一篇使用了DoTween插件,并且改写了事件的相关参数,本篇…

jenkins 关闭关闭CSRF Protection(跨站请求伪造保护)

jenkins版本 我的jenkins版本是:2.332.4 背景 Jenkins版本自2.204.6以来的重大变更有:删除禁用 CSRF 保护的功能。 从较旧版本的 Jenkins 升级的实例将启用 CSRF 保护和设置默认的发行者,如果之前被禁用。 解决方法 老版本Jenkins的CSRF…

QT各种控件常用样式表qss示例

1、表格控件QTableWidget和QTableView 这个控件比较复杂,里面包含了滑动条、表头(又细分为内容区/空白区)、表格、整体、左上角按钮等多种不同的元素,他们之间有复杂的叠层关系。需要通过各种“选择器”来指定样式的作用范围。 …

解决openKylin显示不能自适应VMware窗口大小的教程

目录 前言解决步骤效果图 前言 相信很多朋友们使用VMware配置成功openKylin后对遇到不能全屏显示的问题很头痛,今天我用我自己的电脑为例,给大家示范一下。 网上对于虚拟机不能自适应VMware主要有两个方案 一个是编辑虚拟机设置----显示器----指定监…

如何用ChatGPT做咨询师,附Prompt

对基本问题研究得不深不透、得不到可靠的分析框架支持的情况下,仓促采取就事论事的应对措施 ,由于未能触及事情的根本,往往非但不能获得预期的效果,相反可能引发新的矛盾。 ——吴敬琏(著名经济学家,国务院…

【JavaEE初阶】JavaScript基础语法

摄影分享: 文章目录 1.初识JavaScript1.1JavaScript简介1.2JavaScript 和 HTML 和 CSS 之间的关系1.3JavaScript 运行过程1.4JavaScript 的组成 2.JS基础语法2.1在HTML中引入JS2.2第一个JS程序2.3变量2.4JS的内置类型2.4.1数字2.4.2字符串2.4.3布尔类型2.4.4undefined类型和nu…

821. 跳台阶

链接: 821. 跳台阶 - AcWing题库 题目: 一个楼梯共有 nn 级台阶,每次可以走一级或者两级,问从第 00 级台阶走到第 nn 级台阶一共有多少种方案。 输入格式 共一行,包含一个整数 nn。 输出格式 共一行,包含一…

性能测试:Jmeter压测过程中的短信验证码读取

目录 问题背景 解决思路 实现方法 1. 建立JDBC连接 2. 使用JDBC请求获取验证码 3. 使用正则将验证码提取并使用 问题背景 现如今国内的大部分软件或者网站应用,普遍流行使用短信业务,比如登录、注册以及特定的业务通知等。 对于这些业务&#xff…

1.Cesium介绍及环境配置

前言 鸽了半年,flag立的太多,稿子存了100多篇,都没有开始排版整理,这些天正好学习cesium,决定每天更新一篇,提提神!🤔😲😁 一、Cesium简介 Cesium是一个用于显…