硬件Watchdog基本上已经是嵌入式芯片的标配了,它可以在系统出现严重错误时(程序跑飞,死锁等)无法恢复系统时,重启系统.原理比较简单:用一个定时器作为看门狗硬件,开启后,要定时"喂狗"(计数重载),如果在规定时间内没有"喂狗",看门狗定时器就会进行硬件重启.
在Android系统中,除了硬件Watchdog,还实现了一个软件Watchdog,主要是为了弥补硬件Watchdog功能的单一性,它本身继承Thread,是一个线程类,Android Watchdog主要作用如下:
1),接收系统内部reboot请求,重启系统;
2),监护SystemServer进程,防止系统死锁.
1,实现原理
主要代码位置:
frameworks/base/services/core/java/com/android/server/Watchdog.java
frameworks/base/services/java/com/android/server/SystemServer.java
流程图如下(网摘):
// 未完,待续...
2,启动
Watchdog是一个Thread,并且采用了单例模式实现,在SystemServer进程中被初始化和启动的.当SystemServer中的ServerThread线程被Start时,各种Android服务被注册和启动,其中包括了Watchdog的初始化和启动.代码实现在startOtherServices方法中,如下:
final Watchdog watchdog = Watchdog.getInstance();
watchdog.