Android:Binder思考笔记

news2025/7/9 7:11:41

基础知识

进程空间划分

在这里插入图片描述

  • 一个进程空间分为用户空间与内核空间。用户空间与内核空间都是虚拟内存,映射到物理内存。所有进程的内核空间映射到同一块物理内存,是共享的
  • 二者区别:
    • 进程间,用户空间的数据不可共享,即用户空间=不可共享空间
    • 进程间,内核空间的数据可共享,所以内核空间=可共享空间
  • 进程内用户空间与内核空间进行交互需要系统调用,主要函数
    • copy_from_user():将用户空间的数据拷贝到内核空间
    • copy_to_user():将内核空间的数据拷贝到用户空间

在这里插入图片描述

传统的进程间通讯方式

Android基于Linux内核,Linux进程通讯方式有socket、共享内存、管道、信号量等

在这里插入图片描述

工作流程:

  1. 发送数据:通过系统调用copy_from_user()将数据从用户空间copy到内核缓存区
  2. 接收数据:通过系统调用copy_to_user()将数据从内核空间copy到用户空间

缺点:

  1. 效率低下,需要做两次数据拷贝。用户空间->>内核空间->>用户空间
  2. 接收数据的缓存由接收方提供,接收方不知道需要多大缓存

Binder

Binder 是什么

以我的理解,binder 是client、service与ServiceManager沟通的桥梁,是一种类似驱动的存在

经典的binder图文说明

与其他IPC对比

  1. 从性能的角度:Binder数据拷贝只需要一次,而管道、消息队列、Socket需要2次,但共享内存方式一次内存拷贝都不需要;从性能角度看,Binder性能仅次于共享内存。
  2. 从稳定性的角度:Binder是基于C/S架构的,稳定性较好;共享内存实现方式复杂,没有客户与服务端之别, 需要充分考虑到访问临界资源的并发同步问题,否则可能会出现死锁等问题;从这稳定性角度看,Binder架构优越于共享内存。(PS:简单解释下C/S架构,是指客户端(Client)和服务端(Server)组成的架构,Client端有什么需求,直接发送给Server端去完成,架构清晰明朗,Server端与Client端相对独立,稳定性较好)
  3. 从安全的角度:传统Linux IPC的接收方无法获得对方进程可靠的UID/PID,从而无法鉴别对方身份;而Android作为一个开放的开源体系,拥有非常多的开发平台,App来源甚广,因此手机的安全显得额外重要;对于普通用户,绝不希望从App商店下载偷窥隐射数据、后台造成手机耗电等等问题,传统Linux IPC无任何保护措施,完全由上层协议来确保。Android为每个安装好的应用程序分配了自己的UID,故进程的UID是鉴别进程身份的重要标志

在这里插入图片描述

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

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

相关文章

线性与树型数据结构可视化模拟器

线性与树型数据结构可视化模拟器 题目2:线性与树型数据结构可视化模拟器 [问题描述] 数据结构课程是计算机类专业的核心课程之一,是计算机科学与技术必修的专业基础课程。数据结构研究的范围和计算机软件有着密切的联系。课程涉及到大量的概念、定义以及数据结构的…

JS数据类型的探究

JS数据类型的探究 分思考三部曲? 是什么?为什么?怎么做? 一:什么是数据类型? 在程序设计的类型系统中,数据类型(英语:Data type),又称资料型态、资料型别,是用来约束数据的解释。在编程语言中&…

我去面试聊了半天MySQL索引,结果面试官黑脸让我回家等结果...

V-xin:ruyuanhadeng获得600页原创精品文章汇总PDF 目录 1、面试真题2、面试官心理分析3、面试题剖析 1、面试真题 MySQ索引的原理和数据结构能介绍一下吗?b树和b-树有什么区别?MySQL聚簇索引和非聚簇索引的区别是什么?他们分别是…

影响网站排名的4个因素,教你提高网站排名的方法

我们优化网站的目的是,使网站的排名靠前,让更多的用户看到并访问网站,达到营销的效果。网站排名靠前,可以提高企业品牌的知名度,对网站是非常有益的。在网络多变的环境下,影响网站排名有哪些因素呢&#xf…

JAVA使用springboot整合佳博标签打印机(三)

在JAVA使用springboot整合佳博标签打印机(二)的文章中使用的是花生壳进行的内网穿透 花生壳内网穿透会有异常情况,因为使用的是花生壳免费版本的内网穿透,可能会有服务异常的情况出现,免费服务没有保障 优化方案使用NGINX替换花生壳来实现内网穿透 准…

从头开始实现一个留言板-README

前言 仓库地址:da1234cao/RestFulAPIDemo 由于我没做过C服务器的开发,没有这方面的工程经验,所以代码中,大概率有一些我意识不到的问题,欢迎提issue。 PS: 代码使用C实现restful接口,给前端提供数据读取…

如何封装一个实用的上传组件

前言 马上放假了,时间上相对宽裕,对最近做的东西进行一些总结。今天我们来看一个非常实用的组件,上传组件 我们先从组件的定位、组件的应用场景、组件的特性几个方面进行归纳 定位: 对于上传组件,基础的组件功能属…

【C++】-- 继承

目录 继承的概念及定义 继承的概念 继承的定义 定义格式 继承基类成员访问方式的变化 基类和派生类对象赋值转换 子类对象可以赋值给父类对象/指针/引用 派生类对象赋值给基类的对象 派生类对象赋值给基类的指针 派生类对象赋值给基类的引用 继承中的作用域 派生类的默认成员函…

IM开源项目OpenIM部署文档-从准备工作到nginx配置

IM开源项目OpenIM部署文档-从准备工作到nginx配置 2022-11-14 22:27OpenIM 一、准备工作 运行环境 linux系统即可, Ubuntu 7.5.0-3ubuntu1~18.04最优 图片视频文件存储 支持cos/MinIO https/wss协议 1. 需申请域名或者子域名(web im端登录注册及im…

C# HTML

一 HTML 超文本标记语言 在HTML当中存在着大量的标签,我们用HTML提供的标签,将要显示在网页中的内容包含起来。就构成了我们的网页。 二 CSS CSS 控制网页内容显示的效果。 HTMLCSS静态网页。 JSJquery 动态效果。 三 开始动手写HTML页面 ① 首先在…

XSS进阶二

目录实验目的预备知识实验环境实验步骤一实例四、换一个角度,阳光依旧实验步骤二实例五、限制了我的左手,我还有右手实验步骤三实例六、大胆去思考,小心去求证实验目的 1.深入理解xss工作原理。 2.怎么去绕过规则实现xss。 3.培养学生的独立…

Spring Cloud(十):Spring Cloud Skywalking

链路追踪组件选型 Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件&…

XCTF-web Robots

场景一:Training-WWW-Robots 进入场景,提示关于robots.txt文件 访问robots.txt文件,目录下存在 /fl0g.php 文件,进一步访问得到flag 场景二:robots 根据题目,提示关于robots.txt协议 访问成功&#xff…

api股票数据接口能实现什么功能?

api股票数据接口在量化投资方面能够受到比较多交易者的开发和使用的,主要是得于股票量化交易数据接口的7个策略十档行情,可以实现一键解决炒股难题,和多指标辅助追踪主力,跟主力做强势股,只有在行股票数据接口一键就可…

零样本图像分类综述

零样本图像分类综述 摘要 零样本图像分类指训练集和测试集在数据的类别上没有交集的情况下进行图像分类,该技术是解决类别标签缺失问题的一种有效手段,因此受到了日益广泛的关注,自提出问题至今。零样本图像分类研究已经大致有十年时间啦。…

学完 Fluent 官方基础教程,你离一名合格Fluent 流体工程师还有多远?

作者 | 张杨 仿真秀专栏作者 Fluent软件的学习包含基础部分和进阶部分,通常我们学习Fluent软件,都是从一个最简单的三通管开始的。 图1 Fluent的标准初学案例——三通管混合换热 ANSYS Fluent官方的基础培训课程表,通常只包括以下几个方面…

堆排序在topK场景题中的应用及原理

参考以下文章: 堆排序(大顶堆、小顶堆)----C语言 006 查找第k大的数——堆结构的初应用寻找最大的K个数,Top K问题的堆实现海量数据查找最大的前k个数(小顶堆) 零、先简单说下处理topK问题的答案: 一般我们说 topK 问…

如此简单易懂的方式 让网站支持PWA

总结起来,网站配置PWA简单步骤为: 1.编写 manifest.json; 2.编写 serviceWorker.js; 3.在 index.html 引入上述两个文件; 4.把上述三个文件放在网站根目录(或者同一目录下); 5.网站需要部署在https环境才能…

mannose-PEG-Alkyne|甘露糖-聚乙二醇-巯基|巯基修饰甘露糖

mannose-PEG-Alkyne|甘露糖-聚乙二醇-巯基|巯基修饰甘露糖 中文名称:甘露糖-巯基 英文名称:mannose-SH 别称:巯基修饰甘露糖,巯基-甘露糖 西安齐岳生物还可以提供PEG接枝修饰甘露糖,mannose-PEG-Alkyne 甘露糖-聚乙…

Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)

需要全部源码请点赞关注收藏后评论区留言~~~ 一、需求描述 假定用户打开一个旅游App想看看哪里风景比较优美,那么App应当展示各地的风景名声图片,为了让界面不太呆板,可以考虑交错显示风景图片,接着用户向下拉动页面,…