Binder和SurfaceFlinger以及SystemServer介绍-android学习之旅(79)

来源:互联网 发布:arm linux gcc 4.4.2 编辑:程序博客网 时间:2024/05/06 19:27

由于binder机制的存在,使得进程A可以访问进程B中的对象。

这里写图片描述

Android系统Binder机制中的四个组件Client、Server、Service Manager和Binder驱动程序:

1. Client、Server和Service Manager实现在用户空间中,Binder驱动程序实现在内核空间中

2. Binder驱动程序和Service Manager在Android平台中已经实现,开发者只需要在用户空间实现自己的Client和Server

3. Binder驱动程序提供设备文件/dev/binder与用户空间交互,Client、Server和Service Manager通过open和ioctl文件操作函数与Binder驱动程序进行通信

4. Client和Server之间的进程间通信通过Binder驱动程序间接实现

5. Service Manager是一个守护进程,用来管理Server,并向Client提供查询Server接口的能力

Binder在调用另一个进程的对象时,就像在自己的进程中一样

#

Binder实际上使用的共享内存的方式来进行通信,Binder作为一个中间这进行传递共享数据

Binder实际上使用的共享内存的方式来进行通信,Binder作为一个中间这进行传递共享数据

Native Service:系统初始化时建立

Android Service:系统二阶段初始化建立

systemserver介绍:

1.Zygote进程是Android Java世界的开创者,所有的Java应用程序进程都由Zygote进程创建。Zygote创建应用程序进程过程其实就是复制自身进程地址空间作为应用程序进程的地址空间。

#

2.Zygote进程是所有Android Java应用程序进程的父进程,是继承关系,应用程序进程继承Zygote进程的所有资源,Zygote进程在启动时加载所有应用程序进程运行所需的公共资源。普通应用程序在启动时,只需要加载自身特性资源就可以了。

surfaceFlinger介绍:

1.SurfaceFlinger服务运行在Android系统的System进程中,它负责管理Android系统的帧缓冲区(Frame Buffer)。每一个Android应用程序与SurfaceFlinger服务都有一个连接,这个连接都是通过一个类型为Client的Binder对象来描述的,来通知surfaceFlinger绘制自己的UI。 ##

2.Android应用程序在通知SurfaceFlinger服务来绘制自己的UI的时候,需要通过SharedClient将UI元数据传递给SurfaceFlinger服务,一个SharedClient对应一个Android应用程序,一个SharedClient至多包含SharedBufferStack(共享缓冲区堆栈),一个Shared-BufferStack对应一个surface。

0 0
原创粉丝点击