服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

学得懂的 Android Framework 教程之Binder

日期: 来源:鸿洋收集编辑:阿豪
1
虚拟地址与物理地址


在和群里的小伙伴交流的过程中发现很多同学对于计算机组成和操作系统这块基础了解的比较少,所以我觉得有必要简单科普一下虚拟地址和物理地址。
操作系统内核一般以页为单位管理物理内存,一页的大小通常是 4k 即 4096个Byte。为方便管理,通常会给这些页编一个号, 0,1,2,3,4。0 1 2 3 4 只是举例,实际不一定是。
对于进程而言,他访问的内存地址不是物理地址而是一个虚拟的地址空间。
一样通过页的方式管理,一样的编号。
当我们申请内存的时候,(c语言一般是 malloc 函数, c++ java 一般是通过关键字 new),比如 new Integer() ,操作系统先在虚拟地址空间找到一个空闲页比如 2 号页,然后在物理地址找到空闲页 比如 0 号页。
找到以后,会将这个对应关系放到一个表中记录,这个表通常就是常说的 MMU 单元(内存管理单元)。
为什么要搞虚拟地址和 mmu,因为操作系统是多进程的,如果没有虚拟地址,多个进程的物理内存访问会变得难以管理。有了虚拟地址以后,每个进程看到的都是完整的干净的地址空间。内存的管理扔给了操作系统,简化了应用程序的开发。

以上就是一个便于理解的简化的内存管理的模型,实际情况要复杂一些,涉及了分段分页,一二级页表,快表等内容,更为详细的内容可以参考计算机组成,操作系统相关的书籍。


2
Binder 是什么?


在 linux 中,每个进程都有自己的虚拟内存地址空间。虚拟内存地址空间又分为了用户地址空间和内核地址空间。
不同进程之间用户地址空间的变量和函数是不能相互访问的。

很多时候,提供系统功能的数据和函数都会放在固定的几个进程中(比如显示画面,播放声音等),我们编写的用户程序要实现相应的功能就需要通过跨进程通信技术来访问这些数据和函数。


3
实现跨进程通信的思路


虽然用户地址空间是不能互相访问的,但是不同进程的内核地址空间是相同和共享的,我们可以借助内核地址空间作为中转站来实现进程间数据的传输。
具体的我们在 B 进程使用 copy_from_user 将用户态数据 int a 拷贝到内核态,这样就可以在 A 进程的内核态中访问到 int a。
更进一步,可以在 A 进程中调用 copytouser 可以将 int a 从内核地址空间拷贝到用户地址空间。至此,我们的进程 A 用户态程序就可以访问到进程 B 中的用户地址空间数据 int a 了。
4
优化我们的方案


为了访问 int a ,需要拷贝两次数据。能不能优化一下?我们可以通过 mmap 将进程 A 的用户地址空间与内核地址空间进行映射,让他们指向相同的物理地址空间:
完成映射后,B 进程只需调用一次 copyfromuser,A 进程的用户空间中就可以访问到 int a了。这里就优化到了一次拷贝。

以上就是 binder 最基本的原理了。


5
总结


跨进程通信的需求普遍存在。
binder 跨进程通信核心原理是 copytouser 和 mmap。


最后推荐一下我做的网站,玩Android: wanandroid.com ,包含详尽的知识体系、好用的工具,还有本公众号文章合集,欢迎体验和收藏!


推荐阅读:

这个值取对了,ViewPager2才能纵享丝滑
Kotlin 协程的7个灵魂拷问
2023移动端技术探索


扫一扫 关注我的公众号

如果你想要跟大家分享你的文章,欢迎投稿~


┏(^0^)┛明天见!


相关阅读

  • 对空间的重组:合居 / 北京辰境设计

  • 感谢北京辰境设计的分享▲开放的起居空间 Living room©立明 本案为精装房改造项目,位于北京丰台区核心地段,建筑面积87㎡,家庭成员为新婚夫妻和一猫一狗。The
    renovation pro
  • 当 GIS 遇到数字化转型

  • 点击上方“慧天地”关注‍‍文章转载自微信公众号云布道师,作者:曾志明,版权归原作者及刊载媒体所有。前言在 GIS 圈子中,有一句流传已久的说法:“80% 的数据都和地理空间位置有
  • 当 GIS 遇到数字化转型|阿里云产业智能

  • 云布道师笔者从事 GIS 基础软件开发二十年,曾负责国内某知名 GIS 软件从 Windows 平台迁移到跨平台的全过程,对 GIS 软件的技术实现和发展演变过程有切身的体会。近年来加入阿
  • 10 大白帽黑客专用的 Linux 操作系统

  • 来自公众号:民工哥技术之路注:所有素材内容均收集整理于网络,仅用于技术学习今天列出一些最常用、最受欢迎的Linux发行版来学习黑客和渗透测试,建议大家要遵守相关法律法规。1.
  • 福建首家“福”文化书店在福州正式营业

  • ▲“开门见福”的百福门 张旭阳/摄▲幸福大道上方满是“福” 张旭阳/摄▲福墙前有个诵福台 张旭阳/摄读者平日可以背靠福墙手握话筒参加朗读活动▲福书轩的图书围绕“福
  • 日照城市书房樱花园馆荣膺两项全国大奖

  •   日照日报/日照新闻网讯 3月16日,2022年长三角及全国部分省市最美公共文化空间大赛颁奖典礼在上海浦东举行。日照市城市书房樱花园馆荣获“最美公共文化空间大奖”和“百
  • 如果让你来设计网络

  • 转自:低并发编程你是一台电脑,你的名字叫 A很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接
  • Rokid发布AR眼镜Rokid Max,搭载Micro OLED屏

  • 2023·03·23JM Insights 每日讯:Rokid发布了最新一代消费级AR智能眼镜Rokid Max,搭配索尼半导体科技Micro OLED屏幕,屏幕分辨率为1920×1080,入眼亮度最高可达600nit。编辑:Lyl
  • 距离味蕾的唤醒 还差一道臭鳜鱼

  • 从家乡“远道而来”的食材,再经由湖北厨师的巧手烹饪,这家经营了十八年的菜馆,做出了融合宁夏人口味的湖北菜,接下来就让我们跟着磊哥一起打卡这家店吧~能够在宁夏做出地道的湖

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 日子252|搞关系

  • 朱丽 女【中国】我的朋友不多。然后能定义成好朋友的,更屈指可数。既然是好朋友,难免彼此遇到重要事情会商量,会讨论一些对策,总是想尽力帮对方缓解一些焦虑。要不然叫什么朋友
  • 聊聊NDK开发那些事

  • / 今日科技快讯 /近日,中国移动(股价63.6港元,市值1.4万亿港元)在港交所发布2022年年度业绩公告,2022年实现营运收入为9373亿元,同比增长10.5%。公司股东应占利润为1254.59亿
  • 实战|记一次完整体系的攻防演练

  • 前言,本次笔记是记录在工作中的一个攻防演练环境搭建和通过部署的应用存在的文件上传漏洞getshell,接着上线frp,接着上线msf,实现msf远程渗透。准备工作:1,在客户的内网环境部署一
  • 学得懂的 Android Framework 教程之Binder

  • 1虚拟地址与物理地址在和群里的小伙伴交流的过程中发现很多同学对于计算机组成和操作系统这块基础了解的比较少,所以我觉得有必要简单科普一下虚拟地址和物理地址。操作系统