Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333072
  • 博文数量: 102
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1146
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-21 22:33
文章分类

全部博文(102)

文章存档

2011年(8)

2010年(94)

我的朋友

分类: 嵌入式

2010-01-23 20:49:43

Android的IPC机制Binder的各个部分
http://blog.chinaunix.net/u1/49742/showart.php?id=1918335



1. kernel
binder.c利用ipc机制,跟昨天看的ashmem机制差不多....
/proc下有binder进程使用的一些信息(?)

2. user space里的binder.c and servicemanager.c文件,在第一篇文章里有介绍

3. java层的实现,,,不同进程之间如何通讯,有什么特性,看这个图和例子吧
0126ec3d-c058-4293-87d6-6e3ec697f0b3.jpg


inder 是 android 大量使用的 IPC 機制。當使用者在 launcher (home) 按了某個 App 時,這個動作會經由 ActivityManager 向 zygote 發出請求,並從 zygote fork 出新的 process 執行被選擇的 App。這個過程大致上有 4 個 process 參與:home、system server、zygote 和新產生的 appA。更仔細去看的話,

  1. system server 向 home 送出 touchscreen 事件

  2. home 向 system server 送出 start activity 事件

  3. system server 向 zygote 送出 appA 的啟動參數

  4. appA 向 system server 送出 attach 事件


除 了第 3 項以外,其它跨 process 的溝通都是採用 binder。Zygote 是 android 上少數幾個聽 unix socket 的程式。驗證這個說法最簡單的方法是去看 process 的 memory maps 還有 opened fd,這個技巧在之前有用過,這邊暫且略過。

阅读(1054) | 评论(0) | 转发(0) |
0

上一篇:Mmap笔记

下一篇:像风一样扫过Android吧!

给主人留下些什么吧!~~