名为解析,名不符实,简单记录一下。

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解析相关推荐

  1. linux项目课程设计,LINUX课程设计项目需求解析.doc

    LINUX课程设计项目需求解析 1引言 目前大学生就业形势越来越严峻,为了给学生增加就业砝码,学校为每个学生提供一个展示自我的平台,在学校web服务器上开通注册通道,让每个学生都可以拥有自己的个人网站 ...

  2. jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国

    我们将使用 Linux 上的命令行工具解析并格式化打印 JSON.它对于在 shell 脚本中处理大型 JSON 数据或在 shell 脚本中处理 JSON 数据非常有用.-- Ostechnix J ...

  3. Linux入门之inode解析及管道重定向

    Linux入门之inode解析及管道重定向 inode 简介: 当磁盘分区格式化后会根据分区格式.大小等信息来指定分区分配多少个inode表,每个inode表都会有一个在当前分区中唯一的编号,可能有一 ...

  4. Linux文件权限的解析

    Linux文件权限的解析 LINUX当前目录下可以用ls -l 命令来查看当前目录下所有文件夹和文件的权限. 用ls命令得到的权限表示格式类似这样:-rwxr-xr-x 下面解析一下格式所表示的意思. ...

  5. linux暂时不能域名解析,Kali Linux中暂时不能解析域名

    Kali Linux中暂时不能解析域名 环境:kali linux 这个问题是再用apt install命令安装软件时发现的 用ping www.xxxxxxxx.com 再次确认无法解析域名 参考: ...

  6. linux服务器无法解析域名解决办法,Linux服务器内部无法解析域名

    Linux服务器内部无法解析域名 问题现象 Linux 服务器内部无法正常解析域名. 问题原因 可能的原因包括: DNS 设置问题 防火墙策略问题 NSCD 服务问题 处理办法 可以依次进行如下检查: ...

  7. Linux的DNS正向解析和转发配置

    Linux的DNS正向解析和转发配置 DNS是Domain Name System(域名系统)的简称,用来解析域名和ip的对应关系.关于域名的定义以及解析原理大家都知道. DNS搭建非常简单,所需软件 ...

  8. linux dns无法解析,Linux服务器内部无法解析域名

    Linux服务器内部无法解析域名 问题现象 Linux 服务器内部无法正常解析域名. 问题原因 可能的原因包括: DNS 设置问题 防火墙策略问题 NSCD 服务问题 处理办法 可以依次进行如下检查: ...

  9. window环境下运行linux解压命令,使用压缩的方式将Windows下的zip压缩包上传到Linux系统的方法解析...

    我们可以使用在Windows下压缩文件夹,然后到Linux系统下解压缩的方式,完成整个上传工作. 第一步:在Windows系统下,将整个文件夹压缩成zip后缀的压缩包 方法一: 在文件夹xtemp上, ...

最新文章

  1. FPGA笔试题解析(五):串并转换与奇分频电路
  2. PowerShell收发TCP消息包
  3. Python Module_subprocess_子进程(程序调用)
  4. 十、深入Java字符串(下篇)
  5. Flask 实战:如何从零开发“知乎”
  6. 详解Vuex常见问题、深入理解Vuex
  7. 磨刀不误砍柴工—Exceptionless搭配log4net记录日志
  8. 【LeetCode - 123】买卖股票的最佳时机 III
  9. 做好7步 迅速成为行业专家
  10. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之工程创建
  11. matlab用卷积积分求单自由度阻尼系统响应(零极点模型)
  12. 映客都是互刷礼物吗_仿映客刷礼物效果 代码优化
  13. AcWing 1208. 翻硬币
  14. VMware之以太网链接
  15. 汽车+辐射测试软件,汽车EMC辐射发射的一些所见所闻和思考
  16. std::begin、std::end、std::next 用法
  17. CSP201903-1 小中大 (Python)
  18. 链路聚合(Port-Channel)
  19. 解决ADB卡在等待调试器的问题Waiting For Debugger is waiting for the debugger to attach.
  20. C/C++后台开发基础知识

热门文章

  1. mysql 支持 pdo_使php支持pdo_mysql_睿合科技
  2. 初识Android四大组件之一Activity(活动)
  3. win10 jenkins svn android studio 自动化打包教程 以及一些问题的解决办法
  4. hdp xiazia
  5. MYSQL二级表的管理_MySQL库和表的管理
  6. switch手柄可以连电脑吗_电脑可以拍照吗
  7. 115. Leetcode 718. 最长重复子数组 (动态规划-子序列问题)
  8. R语言实战应用精讲50篇(十九)-R语言gganimate函数应用案例:静态图变成动态,让你的图表更酷炫
  9. 深度学习核心技术精讲100篇(七十六)-分类-决策树
  10. 对比几个数据概念,数据仓库、数据集市、数据湖、数据中台分别是什么?到底有什么区别?都得做吗?