NDK21_系统关键服务是如何进行守护

NDK开发汇总
在这里插入图片描述

一课题:

系统关键服务是如何进行守护的以及AM命令源码分析

知识点:

  • init进程源码详解
  • init.rc配置文件分析
  • 系统服务的加载原理
  • init进程如何使用SIGCHLD信号
  • 系统服务杀死后如何启动原理分析
  • 系统服务守护过程中 socket执行原理

AM命令源码分析

  • 命令参数如何解析
  • 参数如何封装成Intent
  • 如何跨进程启动四大组件

系统
设置–》应用–》系统服务

二系统服务是如何做到保活的

什么系统关键服务

闹钟 LayoutInflater WindowManager 不是
网络服务,多媒体服务 ,音量服务,安装服务。 电话服务,adb服务 ,触摸事件服务
netd 网络服务 封装了复杂的底层各种类型的网络

mediaservice 多媒体服务 手机开机需要声音,画面

ueventd 屏幕响应事件的服务

ueventd 屏幕响应事件的服务
事件分发 activity ondispatchevent()

logd 日志服务

vold 外部存储设备服务 管理和控制Android平台外部存储设备,包括SD插拨、挂载、卸载、格式化等;

Rild 是电话系统的核心部分

xpose 做到
今天会学习 root权限 如何更改 手机ip地址,系统化版本号,手机ip地址 国家 手机型号 序列号 mac地址 饿了吗手机序列号 语言 denstity
经纬度 手机系统日期,dns。在应用上层所获取到的均是修改之后的,比如Build.VERSION.SDK_INT

1 系统和服务是如何加载

service_list

action_list

init.rc是如何被加载的 数据结构 双向链表

开始启动 函数

Loop 循环

整个Android

开机 —》 关机

2 系统服务如何进行进程保活

init 负责床所有的服务 并且守护整个系统 init也是一个守护进程

1 系统服务类是怎么被加载的

2 系统服务的双进程守护是如何实现的

系统关键服务类
哪些为系统服务呢
网络服务,多媒体服务 ,音量服务,安装服务。 电话服务,adb服务 ,触摸事件服务
通过ps命令查看进程号,凡是父进程为1 的都需要 在开机时加载,kill掉之后 马上会自动重新启动
有些kill掉 手机会自动关机 比如zygote进程
netd 网络服务 封装了复杂的底层各种类型的网络
mediaservice 多媒体服务 手机开机需要声音,画面
ueventd 屏幕响应事件的服务
logd 日志服务
vold 外部存储设备服务 管理和控制Android平台外部存储设备,包括SD插拨、挂载、卸载、格式化等;
Rild 是电话系统的核心部分
今天会学习 如何更改 手机ip地址,系统化版本号,手机ip地址 国家 手机型号 手机序列号 语言 denstity 经纬度 手机系统日期,dns。在应用上层所获取到的均是修改之后的,比如Build.VERSION.SDK_INT

查看 命令
getgrop
如何更改手机ip 命令: setprop net.gprs.local-ip 192.168.1.1
这里的配置文件主要指init.rc。 根目录有一个init.rc文件。该文件是只读的,
我们能不能获取root权限后 通过修改init.rc配置文件 启动 自己的服务呢?

即使有了root权限,可以修改该文件也没有。因为我们在根目录看到的文件只是内存文件的镜像。也就是说,android启动后,会将init.rc文件装载到内存。而修改init.rc文件的内容实际上只是修改内存中的init.rc文件的内容。一旦重启android,init.rc文件的内容又会恢复到最初的装载。想彻底修改init.rc文件内容的唯一方式是修改Android的ROM中的内核镜像(boot.img)。其实boot.img名为内核镜像,有一个镜像ramdisk.img就包含了init.rc文件和init命令。所以只有修改ramdisk.img文件中的init.rc文件,并且重新打包boot.img文件,并刷机,才能彻底修改init.rc文件。将Android源代码,编译后,就会看到out目录中的相关子目录会生成一个root目录,该目录实际上就是ramdisk.img解压后的内容。会看到有init命令和init.rc文件。通过简单的修改init.rc文件是达不到的

init文件 步骤

  1. 初始化属性
  2. 处理配置文件的命令(主要是init.rc文件),包括处理各种Action。
  3. 性能分析(使用bootchart工具)。
  4. 无限循环执行command(启动其他的进程)

使用select函数可以处理socket多连接的问题 ,使用POLL也可以实现同样的功能,且调用方式更加简单。
poll函数使用pollfd类型的结构来监控一组文件句柄,ufds是要监控的文件句柄集合,
nfds是监控的文件句柄数量,
timeout是等待的毫秒数,

Netd就是Network Daemon的缩写,表示Network守护进程,类似的命名还有很多,例如 Vold(Volumn Deamon),Rild(Radio Interface Layer Deamon)
Netd负责跟一些涉及网络的配置,操作,管理,查询等相关的功能实现,比如,例如带宽控制(Bandwidth),流量统计,网络地址转换(NAT),PPP链接,soft-ap,共享上网(Tether),配置路由表,interface配置管理,

三 源码

系统关键服务是如何进行守护.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值