Android WatchDog
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Watchdog in Android
1
2
1. Android Watchdog簡介 (2)
3
1.1 普通watchdog介紹 (2)
4
1.2 android中的watchdog (2)
2. Watchdog 啟動 (3)
5
6
2.1 android啟動簡介 (3)
7
2.2 watchdog啟動介紹 (4)
3. Watchdog与電源管理 (7)
8
9
3.1 電源管理簡介 (7)
10
3.2 watchdog在android電源管理中的角色 (8)
11
3.3 watchdog內部架構分析 (9)
12
參考資料 (12)
13
1. Android Watchdog簡介
14
1.1 普通watchdog介紹
15
Linux 在不同領域如電信、終端便攜設備等得到廣泛的應用,不同領域的應用對 Linux系統也提16
出相應要求。Carrier Grade Linux是OSDL(Open Source Development Lab)發布的電信級Linux 17
的標準,在系統可用性這部分指出 Linux 必須支持 watchdog 機制。Linux 內核從 1.3.51 版本18
開始提供硬體、軟體 watchdog 驅動。
19
軟體watchdog的實現原理是:系統有一個Timer/Alarm專門檢測在規定時間內(一般是1m)程式20
進程有沒有寫的操作。如果應用程式在給定時間內沒有寫操作,watchdog負責reboot應用程式;
21
如果系統在規定時限內沒有寫操作,watchdog負責reboot系統,這種情況下就需要硬體watchdog 22
提供支持, restart系統。
23
1.2 android中的watchdog
24
本文主要介绍android framework层中的watchdog,它屬於一種軟體watchdog實現。對於硬體
25
watchdog不做介紹,對於內核中的watchdog module只做簡單概括。
26
Watchdog的主要作用是:
27
1)檢測應用程式內存使用量。
28
2)判斷系統是否hang up。
29
通過其內部的評判標準,決定處理情況。對於應用程式決定是否結束進程;對於系統,決定是否重30
啟。而評判內存消耗的標準是系統內部配置的值,主要包括softthreshold(軟極限)和hardthreshold 31
(硬極限)。Watchdog中的內部類HeartbeatHandle 繼承Java的handle類,相當於一個內置handle。
32
ran()函數執行死循環,在規定時間內向handle發送消息,進行相應處理。如果一次處理的時間33
超出了系統規定值,認為系統hang up,reboot系統。
34
內置的handle用於處理消息、檢測內存,重啟系統等。是系統的中心處理單元。
35
36
2. Watchdog 啟動
37
對於android中的watchdog根據前面的介紹,我的理解是:它是一種軟體實現,充當一種service 38
的角色。Android框架中服務類型分為:Native服務、Android服務和Init空間服務。關於android 39
框架中的的服務類型,這裡不做展開,只需要知道這些android的service不是指android應用層40
的service。本節中主要講述watchdog的啟動過程,首先我們先闡述一下android系統的啟動過41
程。
42
2.1 android啟動簡介
43
Android的啟動流程,主要有四個步驟:
44
(1) init進程啟動
45
(2) Native服務啟動
46
(3) System Server,Android服務啟動
47
(4) Home啟動
48
總體框架如圖:
49
50 Android 啟動框架圖
51 Init 進程:它是一个由內核啟動的用戶級進程。内核自行啟動之後,就通過啟動一個用戶級程式52 init 的方式,完成引導進程。Init 始終是第一個進程。
53 zygote 进程:奠定了Android 的基础。Zygote 这个进程起来才会建立起真正的Android 运行空间。54 它是一種孵化器,C/S 結構,利用Linux 的fork 機制。其他進程作為一個客戶端向客服端向Zygo 55 te 發出”孵化”請求,Zygote 接收到命令就“孵化”出一個Activity 進程來。
56
2.2 watchdog 啟動介紹
57 上一节说到watchdog 是在SystemServer 中被初始化和啟動的,SystemServer 继承Thread ,在58 SystemServer 被start 的时候,优先初始化关键服务先看初始化。見下圖:
59
註釋:
Watchdog 在systemserver 中啟動