Linux kmap和kmap_atomic解析
名为解析,名不符实,简单记录一下。
kmap
函数将分配到的高端内存映射到永久内存映射区域.。
kmap
函数不能用于中断处理程序, 因为它可能进入睡眠状态。
上面内容引用自https://blog.csdn.net/gatieme/article/details/52705178
kmap_atomic用于高端内存映射,用于紧急的,短时间的映射,它没有使用任何锁,完全靠一个数学公式来避免混乱,它空间有限且虚拟地址固定,这意味着它映射的内存不能长期被占用而不被unmap,kmap_atomic在效率上要比kmap提升不少,然而它和kmap却不是用于同一场合的。不管怎么说,它的设计是很完美的。
kernel可以在多个cpu上同时运行不同的task,然而它们共同使用一个内存地址空间,也就是说,地址空间对于多个cpu看到的是同一个,kmap_atomic使用的是地址空间顶部的一小段地址空间,内核逻辑将这一小段地址空间分成了若干个节,每一节的大小是一个page的大小,可以用来映射一个page,根据公用地址空间的原理,所有的cpu共同使用这些节,因此如何能保证N个cpu调用kmap_atomic不会将page映射到一个地址呢?这就是这个数学公式所起的作用:
idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
其中KM_TYPE_NR代表type的最大值加1:
enum km_type {
KM_BOUNCE_READ,
KM_SKB_SUNRPC_DATA,
KM_SKB_DATA_SOFTIRQ,
KM_USER0,
KM_USER1,
...
KM_TYPE_NR
};
以上内容来自于 https://blog.csdn.net/dog250/article/details/6129826
在早期的kernel中的,原型为
void *kmap_atomic(struct page *page,km_type type)
新版本kernel中没有了第二个参数
void *kmap_atomic(struct page *page)
Linux kmap和kmap_atomic解析相关推荐
- linux项目课程设计,LINUX课程设计项目需求解析.doc
LINUX课程设计项目需求解析 1引言 目前大学生就业形势越来越严峻,为了给学生增加就业砝码,学校为每个学生提供一个展示自我的平台,在学校web服务器上开通注册通道,让每个学生都可以拥有自己的个人网站 ...
- jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国
我们将使用 Linux 上的命令行工具解析并格式化打印 JSON.它对于在 shell 脚本中处理大型 JSON 数据或在 shell 脚本中处理 JSON 数据非常有用.-- Ostechnix J ...
- Linux入门之inode解析及管道重定向
Linux入门之inode解析及管道重定向 inode 简介: 当磁盘分区格式化后会根据分区格式.大小等信息来指定分区分配多少个inode表,每个inode表都会有一个在当前分区中唯一的编号,可能有一 ...
- Linux文件权限的解析
Linux文件权限的解析 LINUX当前目录下可以用ls -l 命令来查看当前目录下所有文件夹和文件的权限. 用ls命令得到的权限表示格式类似这样:-rwxr-xr-x 下面解析一下格式所表示的意思. ...
- linux暂时不能域名解析,Kali Linux中暂时不能解析域名
Kali Linux中暂时不能解析域名 环境:kali linux 这个问题是再用apt install命令安装软件时发现的 用ping www.xxxxxxxx.com 再次确认无法解析域名 参考: ...
- linux服务器无法解析域名解决办法,Linux服务器内部无法解析域名
Linux服务器内部无法解析域名 问题现象 Linux 服务器内部无法正常解析域名. 问题原因 可能的原因包括: DNS 设置问题 防火墙策略问题 NSCD 服务问题 处理办法 可以依次进行如下检查: ...
- Linux的DNS正向解析和转发配置
Linux的DNS正向解析和转发配置 DNS是Domain Name System(域名系统)的简称,用来解析域名和ip的对应关系.关于域名的定义以及解析原理大家都知道. DNS搭建非常简单,所需软件 ...
- linux dns无法解析,Linux服务器内部无法解析域名
Linux服务器内部无法解析域名 问题现象 Linux 服务器内部无法正常解析域名. 问题原因 可能的原因包括: DNS 设置问题 防火墙策略问题 NSCD 服务问题 处理办法 可以依次进行如下检查: ...
- window环境下运行linux解压命令,使用压缩的方式将Windows下的zip压缩包上传到Linux系统的方法解析...
我们可以使用在Windows下压缩文件夹,然后到Linux系统下解压缩的方式,完成整个上传工作. 第一步:在Windows系统下,将整个文件夹压缩成zip后缀的压缩包 方法一: 在文件夹xtemp上, ...
最新文章
- FPGA笔试题解析(五):串并转换与奇分频电路
- PowerShell收发TCP消息包
- Python Module_subprocess_子进程(程序调用)
- 十、深入Java字符串(下篇)
- Flask 实战:如何从零开发“知乎”
- 详解Vuex常见问题、深入理解Vuex
- 磨刀不误砍柴工—Exceptionless搭配log4net记录日志
- 【LeetCode - 123】买卖股票的最佳时机 III
- 做好7步 迅速成为行业专家
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之工程创建
- matlab用卷积积分求单自由度阻尼系统响应(零极点模型)
- 映客都是互刷礼物吗_仿映客刷礼物效果 代码优化
- AcWing 1208. 翻硬币
- VMware之以太网链接
- 汽车+辐射测试软件,汽车EMC辐射发射的一些所见所闻和思考
- std::begin、std::end、std::next 用法
- CSP201903-1 小中大 (Python)
- 链路聚合(Port-Channel)
- 解决ADB卡在等待调试器的问题Waiting For Debugger is waiting for the debugger to attach.
- C/C++后台开发基础知识
热门文章
- mysql 支持 pdo_使php支持pdo_mysql_睿合科技
- 初识Android四大组件之一Activity(活动)
- win10 jenkins svn android studio 自动化打包教程 以及一些问题的解决办法
- hdp xiazia
- MYSQL二级表的管理_MySQL库和表的管理
- switch手柄可以连电脑吗_电脑可以拍照吗
- 115. Leetcode 718. 最长重复子数组 (动态规划-子序列问题)
- R语言实战应用精讲50篇(十九)-R语言gganimate函数应用案例:静态图变成动态,让你的图表更酷炫
- 深度学习核心技术精讲100篇(七十六)-分类-决策树
- 对比几个数据概念,数据仓库、数据集市、数据湖、数据中台分别是什么?到底有什么区别?都得做吗?