Android Binder原理解析.md
https://www.jianshu.com/p/d155665f81a8
binder是什么?
进程间通信机制
也是一个驱动
Binder.java–>实现IBinder–跨进程的能力
自己创建的进程 webView 视频播放、音乐、大图浏览、推送。系统服务:打电话、闹钟等等。
多进程的优点:
内存:一个app.6g,8g,16g。
风险隔离:一个进程奔溃了,其它的进程不会被牵连,很久之前chrome浏览器一个网页标签一个线程,导致一个网页奔溃会祸及其它的网页,后面一个网页对应一个进程,这个问题就解决了。
Linux进程间通信的方式:
socket
既然Linux已经有它的进程间通信方式为什么还要使用Binder?1. Binder与传统IPC对比?
Binder小于共享内存 优于其他IPC进程间通信
共享内存控制麻烦,易用性差
Binder系统分配UID更安全
Binder是如何做到一次拷贝的?mmap?memory map 内存映射共享内存Binder驱动设备misc设备
Android Binder原理解析.md
https://www.jianshu.com/p/d155665f81a8
binder是什么?
进程间通信机制
也是一个驱动
Binder.java–>实现IBinder–跨进程的能力
自己创建的进程 webView 视频播放、音乐、大图浏览、推送。系统服务:打电话、闹钟等等。
多进程的优点:
内存:一个app.6g,8g,16g。
风险隔离:一个进程奔溃了,其它的进程不会被牵连,很久之前chrome浏览器一个网页标签一个线程,导致一个网页奔溃会祸及其它的网页,后面一个网页对应一个进程,这个问题就解决了。
Linux进程间通信的方式:
socket
既然Linux已经有它的进程间通信方式为什么还要使用Binder?1. Binder与传统IPC对比?
Binder小于共享内存 优于其他IPC进程间通信
共享内存控制麻烦,易用性差
Binder系统分配UID更安全
Binder是如何做到一次拷贝的?mmap?memory map 内存映射共享内存Binder驱动设备misc设备
Android Binder.md
基本原理Binder 的通信模型有 4 个角色:Binder Client、Binder Server、Binder Driver(Binder 驱动)、ServiceManager。
ServiceManager、Binder Client、Binder Server 处于不同的进程,他们三个都在用户空间,而 Binder 驱动在内核空间。
Server进程通过Binder驱动,在ServiceManager( 映射关系表 )注册。
Client进程通过Binder驱动,在ServiceManager( 映射关系表 )查找到相应的Server进程代理对象。
Client进程通过Binder驱动再与Server进程通信。
Linux 自 带 多 种 进 程 通 信 方 式 , 为 什 么 Android 都没采用二偏偏使用 Binder 通信Linux 现有的所有进程间 IPC
管道
消息队列
缺点: 信息复制两次,额外的 CPU 消耗;不合适频繁或信息量大。
共享内存
优点:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快。缺点: 通信需要设计复杂的 ...
Android Binder.md
基本原理Binder 的通信模型有 4 个角色:Binder Client、Binder Server、Binder Driver(Binder 驱动)、ServiceManager。
ServiceManager、Binder Client、Binder Server 处于不同的进程,他们三个都在用户空间,而 Binder 驱动在内核空间。
Server进程通过Binder驱动,在ServiceManager( 映射关系表 )注册。
Client进程通过Binder驱动,在ServiceManager( 映射关系表 )查找到相应的Server进程代理对象。
Client进程通过Binder驱动再与Server进程通信。
Linux 自 带 多 种 进 程 通 信 方 式 , 为 什 么 Android 都没采用二偏偏使用 Binder 通信Linux 现有的所有进程间 IPC
管道
消息队列
缺点: 信息复制两次,额外的 CPU 消耗;不合适频繁或信息量大。
共享内存
优点:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快。缺点: 通信需要设计复杂的 ...
四大组件的启动过程.md
Activity的启动过程Service的启动过程Service的绑定过程广播的注册、发送和接收过程广播的注册过程广播的注册有两种,静态注册和动态注册。
静态注册过程静态注册在应用安装时由PackageManagerService来完成注册过程。
动态注册过程广播的发送和接受过程广播的发送和接收过程分为两个部分来进行讲解,分别是ContextImpl到AMS的调用过程和BroadcastReceiver的调用过程。
ContextImpl到AMS的调用过程AMS到BroadcastReceiver的调用过程Content Provider的启动过程
Android 系统进程启动流程.md
https://developer.android.com/guide/platform?hl=zh-cn#art
Android平台架构Android 是一种基于 Linux 的开放源代码软件栈,为各类设备和机型而创建。下图所示为 Android 平台的主要组件。
Linux内核(Linux kernel)Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。
硬件抽象层 (HAL)硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
Android Runtime(ART)对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应 ...