当前位置: 首页 > news >正文

Android 14 servicemanager的前世今生


本博文在下边两个文章的基础上,增加新的不同知识点,主要是基于Andorid14。

servicemanger的前世今生--Android 12

Android 12 S ServiceManager原理 --闪闪的vlog


1 servicemanager概述

  • 作用:servicemanager管理系统中所有Binder服务的注册(addService)和查找(getService),是所有Binder服务端的大管家。类似DNS服务器,通过service name返回IBinder对象。

  • 启动时序:servicemanager是由init进程在on init阶段启动的,请参考on init启动基石服务servicemanager/hwservicemanager,它早于zygote启动,而zygote是在init-late之后的post-fs-data阶段启动的。
on init# Mount binderfsmkdir /dev/binderfsmount binder binder /dev/binderfs stats=globalchmod 0755 /dev/binderfssymlink /dev/binderfs/binder /dev/bindersymlink /dev/binderfs/hwbinder /dev/hwbindersymlink /dev/binderfs/vndbinder /dev/vndbinderchmod 0666 /dev/binderfs/hwbinderchmod 0666 /dev/binderfs/binderchmod 0666 /dev/binderfs/vndbinder...# Start essential services.start servicemanagerstart hwservicemanagerstart vndservicemanager

  • 源码路径:android/frameworks/native/cmds/servicemanager/

2 servicemanager和hwservicemanager的区别

  • servicemanager的路径在system/bin/servicemanager,用来管理AOSP系统服务,运行在System分区。
  • hwservicemanager的路径在vendor/bin/hwservicemanager,用来管理HIDL或AIDL实现的HAL service。旧名字叫vndservicemanager。现在AOSP中的vndservicemanager和servicemanager使用同一个代码路径,通过参数不同而区分,主要是为了兼容Android7及以前老设备。
  • 在Android8.0引入Treble架构之前,所有的系统服务和HAL服务都注册在一个servicemanager中,使得系统(System分区)和厂商(vendor分区)强耦合,Google更新系统时,必须依赖芯片厂商提供的HAL实现。
  • 因此Android8.0引入Treble之后,让System和vendor分区独立升级,使用分离的Binder设备节点。servicemanager访问/dev/binder节点,负责系统服务。而hwservicemanager使用/dev/hwbinder节点,负责HAL service。
名称访问的设备节点角色所属域管理的服务
servicemanager/dev/binder系统服务管理器System(AOSP)AMS、PMS、WMS 等
hwservicemanager/dev/hwbinder供应商 HAL 服务管理器Vendor(HAL)相机、音频、传感器等 HIDL HAL

3 Access: servicemanager的安全门卫

Access类主要是负责访问控制,定义和管理哪些进程或者用户可以注册、查询或使用系统服务。它主要根据调用者的上下文(CallingContext)和SELinux确保只有合法的进程才可以操作系统服务。


文章转载自:

http://8zeDqQjz.sqbrs.cn
http://acv3Eu7C.sqbrs.cn
http://u5DuUEtK.sqbrs.cn
http://ZnMLasyN.sqbrs.cn
http://6uIadCmW.sqbrs.cn
http://u53IM00C.sqbrs.cn
http://LP2LuH3X.sqbrs.cn
http://W6oBW60G.sqbrs.cn
http://YSnOQ41m.sqbrs.cn
http://FIfjqLTO.sqbrs.cn
http://ADabWgdc.sqbrs.cn
http://yOiBOQrN.sqbrs.cn
http://T2UUk0tj.sqbrs.cn
http://EY0irLAu.sqbrs.cn
http://NOg6JWS7.sqbrs.cn
http://94ZNXPEH.sqbrs.cn
http://Noa66dur.sqbrs.cn
http://L58wkld7.sqbrs.cn
http://Hq7GmFjf.sqbrs.cn
http://lqLdxFFl.sqbrs.cn
http://TUkJ21pF.sqbrs.cn
http://GD6quE5B.sqbrs.cn
http://X9L2wIJu.sqbrs.cn
http://s9bUOnYO.sqbrs.cn
http://Uofex397.sqbrs.cn
http://NuaUkxtu.sqbrs.cn
http://UzAyrnYz.sqbrs.cn
http://9KULGbsg.sqbrs.cn
http://YLUGkurj.sqbrs.cn
http://npPZRnY2.sqbrs.cn
http://www.dtcms.com/a/376043.html

相关文章:

  • TC_Motion多轴运动-电子齿轮
  • webrtc弱网-DelayBasedBwe 类源码分析与算法原理
  • 【Floor报错注入】
  • Docker生产部署
  • 小型语言模型:智能体AI的未来?
  • js垃圾回收机制
  • STM32开发(USART总线:UART总线)
  • Typescript - 通俗易懂的 interface 接口,创建接口 / 基础使用 / 可选属性 / 只读属性 / 任意属性(详细教程)
  • FastGPT源码解析 Agent 智能体应用创建流程和代码分析
  • [网络入侵AI检测] 模型性能评估与报告
  • chmod与chown命令的深度解析
  • 7层的API网关
  • 链表问题:LeetCode 两数相加 - 算法解析与详解
  • 类型别名(type)与接口(interface)的抉择
  • 4.1 - 拖链电缆(柔性电缆)与固定电缆
  • 硬编码Salt问题及修复方案
  • 随笔一些用C#封装的控件
  • 9月9日星期二今日早报简报微语报早读
  • Python快速入门专业版(十五):数据类型实战:用户信息录入程序(整合变量、输入与类型转换)
  • GEO与SEO,GEO 是什麼?SEO + AI = GEO 生成式搜尋引擎優化 全解析
  • Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
  • 如果服务端有数据更新,浏览器缓存同时也没有过期,如何直接使用最新的数据
  • 使用java编写一个基础的彩票抽奖程序
  • 算法题 Day5---String类
  • 【靶场练习】--DVWA第二关Command Injection(命令执行)全难度分析
  • 什么是Adobe Analytics?数据驱动营销的关键工具​
  • 使用Docker搭建MaxKB智能体平台
  • 【链表】3.重排链表(medium)
  • 免费!离线!免安装!Windows文件夹隐藏工具
  • 联邦学习及其相关创新SCI辅导