Watchdog

Watchdog位于Framework的services包中,运行时由SystemServer初始化,从而运行在ServerThread中。

作用

Watchdog的主要作用是监控SystemServer中一些服务是否发生了死锁或者长时间被Blocked住而不能正常运行。

原理

定期调用被监控者实现的Monitor接口的monitor()方法,等待一定时间(目前4.2上为30s)后检查标识符,通过标识符来检查被监控者是否已经处于异常状态。

实现细节

  1. Watchdog会在两个周期内(目前4.2上为30s)都调用被监控者的接口,同时检查mCompleted的标识符;只有在连续两个周期内都有被监控者不能正常返回时才会触发后续操作,否则重置状态继续进行下一个周期。
  2. Watchdog发现被监控者处于不正常状态之后的操作便是杀死当前进程(也就是SystemServer进程,被杀死之后会导致zygote自杀,再之后由init进程重新创建zygote重新启动Framework)。
  3. 过程中伴随着日志和Stack Traces的输出和写入,具体参见代码。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容