1. 程式人生 > >WatchDog 工作原理

WatchDog 工作原理

作者 :-gityuan

一、概述

Android系統中,有硬體WatchDog用於定時檢測關鍵硬體是否正常工作,類似地,在framework層有一個軟體WatchDog用於定期檢測關鍵系統服務是否發生死鎖事件。WatchDog功能主要是分析系統核心服務和重要執行緒是否處於Blocked狀態。

  • 監視reboot廣播;

  • 監視mMonitors關鍵系統服務是否死鎖。

二、啟動流程

2.1 startOtherServices

[-> SystemServer.java]

privatevoid

startOtherServices(){

...

//建立watchdog【見小節2.2】

finalWatchdog watchdog = Watchdog.getInstance();

//註冊reboot廣播【見小節2.3】

watchdog.init(context,mActivityManagerService);

...

mSystemServiceManager.startBootPhase(SystemService.PHASE_LOCK_SETTINGS_READY);

...

mActivityManagerService

.systemReady(newRunnable(){

@Override

publicvoidrun(){

mSystemServiceManager.startBootPhase(

SystemService.PHASE_ACTIVITY_MANAGER_READY);

...

// watchdog啟動【見小節3.1】

Watchdog.getInstance().start();

mSystemServiceManager.startBootPhase(

SystemService.PHASE_THIRD_PARTY_APPS_CAN_START

);

}

}

}

2.2 getInstance

[-> Watchdog.java]

publicstaticWatchdog getInstance(){

if(sWatchdog == null){

//單例模式,建立例項物件【見小節2.2.1 】

sWatchdog = newWatchdog();

}

returnsWatchdog;

}

2.2.1 建立Watchdog

[-> Watchdog.java]

publicclassWatchdogextendsThread{

...

privateWatchdog(){

super("watchdog");

//【見小節2.2.2 】

mMonitorChecker = newHandlerChecker(FgThread.getHandler(),

"foreground thread",DEFAULT_TIMEOUT);

mHandlerCheckers.add(mMonitorChecker);

mHandlerCheckers.add(newHandlerChecker(newHandler(Looper.getMainLooper()),

"main thread",DEFAULT_TIMEOUT));

mHandlerCheckers.add(newHandlerChecker(UiThread.getHandler(),

"ui thread",DEFAULT_TIMEOUT));

mHandlerCheckers.add(newHandlerChecker(IoThread.getHandler(),

"i/o thread",DEFAULT_TIMEOUT));

mHandlerCheckers.add(newHandlerChecker(DisplayThread.getHandler(),

"display thread",DEFAULT_TIMEOUT));

//【見小節2.2.3】

addMonitor(new

相關推薦

WatchDog工作原理

一、概述 Android系統中,有硬體WatchDog用於定時檢測關鍵硬體是否正常工作,類似地,在framework層有一個軟體WatchDog用於定期檢測關鍵系統服務是否發生死鎖事件。WatchDog功能主要是分析系統核心服務和重要執行緒是否處於Blocked狀態。

WatchDog 工作原理

作者 :-gityuan 一、概述 Android系統中,有硬體WatchDog用於定時檢測關鍵硬體是否正常工作,類似地,在framework層有一個軟體WatchDog用於定期檢測關鍵系統服務是否發生死鎖事件。WatchDog功能主要是分析

Android SSWD(system server Watchdog)工作原理

簡介 一直在想如何介紹Watchdog,思來想去還是原始碼比較給力“This class calls its monitor every minute. Killing this process if they don't return”簡單粗暴。Android系統為了保證

VMware快照的工作原理

所有 整合 100g 性能 不變 小時 此外 建立 console VMware中的快照是對VMDK在某個時間點的“拷貝”,這個“拷貝”並不是對VMDK文件的復制,而是保持磁盤文件和系統內存在該時間點的狀態,以便在出現故障後虛擬機能夠恢復到該時間點。如果對某個虛擬機創建了多

Vue工作原理小結

key 如何實現 reference 讀寫 owa 方法 cli scrip 枚舉 本文能幫你做什麽?1、了解vue的雙向數據綁定原理以及核心代碼模塊2、緩解好奇心的同時了解如何實現雙向綁定為了便於說明原理與實現,本文相關代碼主要摘自vue源碼, 並進行了簡化改造,相對較

angularjs工作原理解析

body oot 分隔 復制 抖動 修改 重新 接收 裏的 個人覺得,要很好的理解AngularJS的運行機制,才能盡可能避免掉到坑裏面去。在這篇文章中,我將根據網上的資料和自己的理解對AngularJS的在啟動後,每一步都做了些什麽,做一個比較清楚詳細的解析。 首

shell編程培訓之shell的工作原理

shell編程培訓Shell是用戶和Linux操作系統之間的接口。Linux中有多種shell,其間缺省運用的是Bash。本章敘述了shell的作業原理,shell的品種,shell的一般操作及Bash的特性。什麽是shellLinux系統的shell作為操作系統的外殼,為用戶提供使用操作系統的接口。它是命令

session rsyns 的工作原理

session rsyns 的工作原理session的工作原理 1.session實現與工作原理瀏覽器和服務器采用http無狀態的通訊,為了保持客戶端的狀態,使用session來達到這個目的。然而服務端是怎麽樣標示不同的客戶端或用戶呢?這裏我們可以使用生活中的一個例子,假如你參加一個晚會,認識了很多人,你會采

CGI的工作原理

設置 mark 之間 com 環境變量 沒有 mar 輸出 表單 CGI是Webserver和外部程序之間的一個接口。利用CGI程序能夠處理從Web上client發送出來的表單和數據。並對此做出相關操作。這樣的反應能夠是HTML文件、圖片、聲音、視頻等能夠在瀏覽器窗口

struts2工作原理

struts archive logs tro images src str hive www 摘取於:http://www.cnblogs.com/jy02444453/archive/2011/08/27/2155427.html struts2工作原理

USB Type-C工作原理解析

說明 是否 forms dfp 其他 耗時 def 左右 del 自從蘋果發布了新MacBook,USB Type-C接口就成為了熱議對象。我來從硬件角度解析下這個USB Type-C,以便大家更好的了解USB Type-C的工作原理。特色尺寸小,支持正反插,速度快(10G

session 的工作原理

銷毀 這樣的 機制 過期 登陸 處理 art 客戶端瀏覽器 生成 一直在使用session存儲數據,一直沒有好好總結一下session的使用方式以及其工作原理,今天在這裏做一下梳理。這裏的介紹主要是基於php語言,其他的語言操作可能會有差別,但基本的原理不變。 1.在p

SpringMVC的工作原理

free 視圖渲染 jstl resp mapping div 更多 con lib 一、spring簡介     springMVC是spring框架的一個模塊,springMVC和spring無需通過中間整合層進行開發。 springMVC是一個基於mvc的

Nginx 模塊的工作原理

nginx 模塊的工作原理Nginx 模塊的工作原理 Handlers :(處理器模塊)此模塊直接處理請求 並且進行內容傳輸以及修改headres信息等操作。Handlers模塊只能處理一個。Filters(處理器模塊):此類模塊只需要對其他服務器模塊輸出的內容進行修改操做,最後又Nginx操做proxies

路由器工作原理

htm 一個 aid 提高 通信 最好 原理 有一種 clas 主機A和主機B所在的網段被許多路由器隔開,這是主機A與主機B的通信就要進過這些中間路由器,這就要面臨一個很重要的問題,如何選擇到達目的地的路徑。包從A到達B有很多條路徑可供選擇,但是很顯然,在這些路徑中在某一

linux設備驅動之platform平臺總線工作原理(三)

linux設備和驅動設備為數據,驅動為加工著1、以led-s3c24xx.c為例來分析platform設備和驅動的註冊過程其中關於led的驅動數據結構為:static struct platform_driver s3c24xx_led_driver = { .probe = s3c24xx_led_pr

zabbix簡介與工作原理

zabbix簡介與工作原理註;如有雷同純屬巧合。1.zabbix簡介zabbix(音同 zbix)是一個基於WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案zabbix能監視各種網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。zabbix

深度解析線程工作原理

路徑 cep dead test deadlock end priority interrupt prior   1, 線程的概念     一個程序中的方法有幾條執行路徑, 就有幾個線程   2, 線程的創建     兩種方式:       1, 繼承Thread

Android 基於Netty的消息推送方案之概念和工作原理(二)

img b2c 決定 watermark net nios 通道 感覺 art 上一篇文章中我講述了關於消息推送的方案以及一個基於Netty實現的一個簡單的Hello World。為了更好的理解Hello World中的代碼,今天我來解說一下關於Netty中一些概念和工

spring工作原理

模塊 反射機制 spa oca .class 關聯 sso 三種方式 += 對spring原理以前寫過類似的博客,地址:點擊打開鏈接。 但是經過一些時間後,盡管天天用著spring,但一提到原理方面,就遺忘了呢?就記得AOP和IOC,