1.ServiceManager
ServiceManager在init进程启动后启动,用来管理系统中的Service。
首先看一下开机过程,一般开机过程分为三个阶段:
①OS级别,由bootloader载入linux内核,内核开始初始化,并载入built-in的驱动程序,内核完成开机后,载入init进程,切换至用户空间。
②Android-level,由init进程开始,读取init.rc,Native服务启动,并启动重要的外部程序,如ServiceManager、zygote。
③Zygote-Mode,Zygote启动System Service,然后进入Zygote Mode,在Socket等候命令,随后,使用者将看到一个桌面环境,桌面环境由一个名为Launcher的应用程序负责提供。
ServiceManager是由init进程启动的,它是Binder进程间通信机制的核心组件之一,扮演着Binder进程间通信机制上下文管理者的角色,同时它还负责管理系统中的Service组件,并且向Client组件提供获取Service代理对象的服务。
ServiceManager运行在一个独立的进程中,因此Service组件和Client组件也需要通过进程间通信机制来和它进行交互,而采用的进程间通信机制也是Binder机制。这样看来ServiceManager除了是Binder进程间通信机制的上下文管理者外,还是一个特殊的Service组件。
进程间通信: