Binder进程间通讯(一)---- 总览

    Android的底层基于linux相信这是全部android开发人员都了解的,可是android得进程间通讯机制能够说是外来户,罗老师介绍的很详细,这里我整理一下:linux

  1. 提供服务的进程称为Server进程,而访问服务的进程称为Client进程
  2. 同一个Server进程能够同时运行多个组件来向Client进程提供服务,这些组件称为Service组件
  3. 同时,同一个Client进程也能够同时向多个Service组件请求服务,每个请求都对应有一个Client组件,或者称为Service代理对象。
  4. Server进程和Client进程都维护一个Binder线程池来处理进程间的通讯请求,已实现并发地提供和访问服务。
  5. Server进程和Client进程的通讯要依靠运行在内核空间的Binder驱动程序来进行。Binder驱动程序向用户空间暴露了一个设备文件/dev/binder,使得应用程序进程能够间接地经过它来创建通讯通道。
  6. Service组件在启动时,会将本身注册到一个Service Manager组件中,以便Client组件能够经过Service Manager组件找到它。所以,咱们将Service Manager组件称为Binder进程间通讯机制的上下文管理者,同时因为它也须要与普通的Server进程和Client进程通讯,咱们也将它看做是一个Service组件,只不过它是一个特殊的Service组件。
  7. Client、Service和Service Manager运行在用户空间,而Binder驱动程序运行在内核空间,其中,Service Manager和Binder驱动程序由系统负责提供,而Client和Service组件由应用程序来实现。Client、Service和Service Manager均是经过系统调用open、mmap和ioctl来访问设备文件/dev/binder,从而实现与Binder驱动程序的交互,而交互的目的就是为了可以间接地执行进程间通讯。

    用一张图来讲明一下android

Binder驱动程序实如今内核空间中,注意驱动程序是放在kernel中的,而不是放在android源代码中的。我并无下载源码,而是在http://androidxref.com/上看到源码,用的是kernel3.18源代码,搜索一下就能找到binder.h 和 binder.c文件。他就是一个比较标准的驱动程序,设备文件就是 /dev/binder ,可是没有提供hal层的代码。并发

相关文章
相关标签/搜索