1 2 3 4 5 6 7 8 9 10 11 12 13
Watchdog in Android
1. Android Watchdog簡介 ................................................................................................................................................... 2
1.1 普通watchdog介紹 .............................................................................................................................................. 2 1.2 android中的watchdog .......................................................................................................................................... 2 2. Watchdog 啟動 ................................................................................................................................................................ 3
2.1 android啟動簡介 ................................................................................................................................................... 3 2.2 watchdog啟動介紹 ................................................................................................................................................ 4 3. Watchdog与電源管理 ..................................................................................................................................................... 7
3.1 電源管理簡介........................................................................................................................................................ 7 3.2 watchdog在android電源管理中的角色 ............................................................................................................. 8 3.3 watchdog內部架構分析 ........................................................................................................................................ 9 參考資料 ............................................................................................................................................................................ 12
14
1. Android Watchdog簡介
1.1 普通watchdog介紹
Linux 在不同領域如電信、終端便攜設備等得到廣泛的應用,不同領域的應用對 Linux系統也提出相應要求。Carrier Grade Linux是OSDL(Open Source Development Lab)發布的電信級Linux 的標準,在系統可用性這部分指出 Linux 必須支持 watchdog 機制。Linux 內核從 1.3.51 版本開始提供硬體、軟體 watchdog 驅動。
軟體watchdog的實現原理是:系統有一個Timer/Alarm專門檢測在規定時間內(一般是1m)程式進程有沒有寫的操作。如果應用程式在給定時間內沒有寫操作,watchdog負責reboot應用程式;如果系統在規定時限內沒有寫操作,watchdog負責reboot系統,這種情況下就需要硬體watchdog提供支持, restart系統。
15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36
1.2 android中的watchdog
本文主要介绍android framework层中的watchdog,它屬於一種軟體watchdog實現。對於硬體watchdog不做介紹,對於內核中的watchdog module只做簡單概括。
Watchdog的主要作用是:
1) 檢測應用程式內存使用量。 2) 判斷系統是否hang up。
通過其內部的評判標準,決定處理情況。對於應用程式決定是否結束進程;對於系統,決定是否重啟。而評判內存消耗的標準是系統內部配置的值,主要包括softthreshold(軟極限)和hardthreshold(硬極限)。Watchdog中的內部類HeartbeatHandle 繼承Java的handle類,相當於一個內置handle。ran()函數執行死循環,在規定時間內向handle發送消息,進行相應處理。如果一次處理的時間超出了系統規定值,認為系統hang up,reboot系統。
內置的handle用於處理消息、檢測內存,重啟系統等。是系統的中心處理單元。
37
2. Watchdog 啟動
對於android中的watchdog根據前面的介紹,我的理解是:它是一種軟體實現,充當一種service的角色。Android框架中服務類型分為:Native服務、Android服務和Init空間服務。關於android框架中的的服務類型,這裡不做展開,只需要知道這些android的service不是指android應用層的service。本節中主要講述watchdog的啟動過程,首先我們先闡述一下android系統的啟動過程。
38 39 40 41 42
43 44 45 46 47 48
2.1 android啟動簡介
Android的啟動流程,主要有四個步驟: (1) init進程啟動 (2) Native服務啟動
(3) System Server,Android服務啟動 (4) Home啟動
49
總體框架如圖:
註釋: Watchdog在systemserver中啟動 50 51 52 53 54 55 56
Android啟動框架圖
Init進程:它是一个由內核啟動的用戶級進程。内核自行啟動之後,就通過啟動一個用戶級程式init的方式,完成引導進程。Init始終是第一個進程。
zygote进程:奠定了Android的基础。Zygote这个进程起来才会建立起真正的Android运行空间。它是一種孵化器,C/S結構,利用Linux的fork機制。其他進程作為一個客戶端向客服端向Zygote發出”孵化”請求,Zygote接收到命令就“孵化”出一個Activity進程來。
57 58 59
2.2 watchdog啟動介紹
上一节说到watchdog是在SystemServer中被初始化和啟動的,SystemServer继承Thread,在SystemServer被start的时候,优先初始化关键服务先看初始化。見下圖:
60 61 62 63 64 65 66 67
Watchdog初始化
在SystemServer run函数末尾,将检查当前系统是否已经准备好运行第三方代码。通过systemReady函数实现,这属于ActivityManagerService的内容,可以查阅
\\frameworks\\base\\services\\java\\com\\android\\server\\am\\ActivityManagerService。当系统已经准备好运行第三方代码的时候,将执行systemReady參數中傳入的callback函數,watchdog這時才被啟動。見下圖: