一、概念

mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。如下图所示:

由上图可以看出,进程的虚拟地址空间,由多个虚拟内存区域构成。虚拟内存区域是进程的虚拟地址空间中的一个同质区间,即具有同样特性的连续地址范围。上图中所示的text数据段(代码段)、初始数据段、BSS数据段、堆、栈和内存映射,都是一个独立的虚拟内存区域。而为内存映射服务的地址空间处在堆栈之间的空余部分。

1.什么是虚拟地址空间?

在32位系统中,每个进程都有4G的虚拟地址空间,其中3G用户空间,1G内核空间(linux),每个进程共享内核空间,独立的用户空间,下图形象地表达了这点

驱动程序运行在内核空间,所以驱动程序是面向所有进程的。

用户空间切换到内核空间有两种方法:

(1)系统调用,即软中断

(2)硬件中断<

从零开始之驱动发开、linux驱动(二十九、mmap原理)相关推荐

  1. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十九:LCD模块

    实验二十九:LCD模块 据说Alinx 301支持 7"TFT,好奇的朋友一定疑惑道,它们3.2"TFT以及7"TFT等两者之间究竟有何区别呢?答案很简单,前者自带控制器 ...

  2. Linux驱动 简单的Linux驱动基础知识

    Linux驱动 简单的Linux驱动基础知识 一.简述         记--Linux驱动学习笔记. Linux驱动程序初始化硬件设备,并提供硬件控制接口给更上一层的应用调用. 例如使用QT应用程序 ...

  3. 美学心得(第二百二十九集)罗国正

    美学心得(第二百二十九集) 罗国正 (2021年10月) 2999.清朝鉴赏家陆时化,字润之,号听松,是江苏太仓人.他的美学思想,非常值得大家关注.研究.现将他的观点摘要如下: 1.他强调先天文化之根 ...

  4. 智能化软件开发微访谈·第十九期暨2022新年特辑:软件智能化开发:进展与挑战...

    CodeWisdom 智能化软件开发沙龙是复旦大学CodeWisdom团队参与组织的专注于代码大数据与智能化软件开发的学术和技术沙龙,面向相关领域的学术界研究者和工业界实践者,通过各种线上和线下交流活 ...

  5. 曾国藩谕纪鸿(咸丰六年九月二十九夜)- 勤俭自持,习劳习苦

    字谕纪鸿儿:         家中人来营者,多称尔举止大方,余为少慰.凡人多望子孙为大官,余不愿为大官,但愿为读书明理之君子.勤俭自持,习劳习苦,可以处乐,可以处约.此君子也.余服官二十年,不敢稍染官 ...

  6. 活动预告 | 智能化软件开发微访谈·第十九期暨2022新年特辑:软件智能化开发:进展与挑战...

    CodeWisdom 智能化软件开发沙龙是复旦大学CodeWisdom团队参与组织的专注于代码大数据与智能化软件开发的学术和技术沙龙,面向相关领域的学术界研究者和工业界实践者,通过各种线上和线下交流活 ...

  7. android游戏性能测试,评测 篇二十九:用游戏数据来彰显实力,华为nova5i Pro游戏性能篇...

    评测 篇二十九:用游戏数据来彰显实力,华为nova5i Pro游戏性能篇 2020-01-02 00:20:00 4点赞 1收藏 2评论 笔者带着大家对华为nova5i Pro做了开箱测试,了解外观与 ...

  8. 妙!二十九招驱蚊止痒不再愁

    天气热了,蚊子也多了,让人烦不胜烦,如何才可解决蚊子带来的困扰,现整理了二十九个妙法,解决蚊子不在愁! 1.在家庭中可用浓肥皂涂抹可迅速止痒,或用香皂蘸水在红肿处涂抹. 原因是肥皂高级脂肪酸的钠盐.如 ...

  9. 【Microsoft Azure 的1024种玩法】二十九.基于Azure VM快速实现网络入侵检测 (IDS) 及网络安全监视 (NSM)

    [简介] 数据包捕获是一个重要组件,可以实施网络入侵检测系统 (IDS) 并执行网络安全监视 (NSM). 我们可以借助开源 IDS 工具来处理数据包捕获,并检查潜在网络入侵和恶意活动的签名. 使用网 ...

  10. 微信小程序从入坑到放弃二十九:一个小场景搞懂冒泡事件bindtap和catchtap的区别

    摘要: 在微信小程序中,bindtap事件会产生冒泡,若不加以拦截,会一直冒泡到顶端.在某些情况下,一次点击会触发若干点击事件.为了防止冒泡,使用catchtap即可解决问题.在有全屏半透明背景的弹出 ...

最新文章

  1. 腾讯2013暑期实习笔试面试总结
  2. codeforce 1311 C. Perform the Combo 前缀和
  3. 一行代码开启 Winform 中的 ListView 和 DataGridView 双缓冲功能
  4. 这家AI公司用面具破解中国人脸识别系统!微信、支付宝、火车站无一幸免
  5. MySQL数据库创建用户root@%
  6. 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...
  7. 【分享】北漂五年,创业、字节、和阿里,现在回家
  8. kali linux查看局域网的电脑,kali linux 如何查找局域网ip
  9. Installing third-party firmware on x3-55 letv (by quqi99)
  10. 【Python实践】Python部分实际案例解答1
  11. vue 生成PDF(A4标准PDF分页)
  12. 表结构生成html页面,表结构设计器
  13. xshell修改服务器登录密码
  14. Word文档图标变成空白如何恢复
  15. XGBoost Stopping to Avoid Overfitting(early_stopping_rounds )
  16. 【模电】0014 运放自激振荡和消除(补偿)
  17. ROS 之 使用yocs_velocity_smoother对机器人速度进行限制
  18. 「补课」进行时:设计模式(15)——观察者模式
  19. 微信小程序使用真机或开发工具进行http请求开发测试亲测有效
  20. 解决利用<input type=“file“>上传文件时,value拿到的是fakePath问题

热门文章

  1. JavaScript高级编程设计(第三版)——第三章:基本概念
  2. 《MySQL DBA:SSL连接》
  3. Linux内核中的IPSEC实现2
  4. 全国电费优惠充值接口源码
  5. std::partial_sort 用法
  6. 最强大易用的开源MODBUS库-YMODBUS,包含MASTER/SLAVE
  7. Edge浏览器安装油猴插件以及好用的插件推荐
  8. iOS 证书管理、验证、打包流程
  9. Kotlin--Sealed Class Sealed Interface
  10. 网站服务器发生故障,全国DNS服务器发生故障