一、簡介 Watchdog主要用於監視系統的運行,Linux內核不僅為各種不同類型的watchdog硬體電路提供了驅動,還提供了一個基於定時器的純軟體watchdog驅動。 驅動源碼位於內核源碼樹drivers\char\watchdog\目錄下。 二、原理 內核 watchdog 模塊通過 /de... ...
一、簡介
Watchdog主要用於監視系統的運行,Linux內核不僅為各種不同類型的watchdog硬體電路提供了驅動,還提供了一個基於定時器的純軟體watchdog驅動。 驅動源碼位於內核源碼樹drivers\char\watchdog\目錄下。
二、原理
內核 watchdog 模塊通過 /dev/watchdog 這個字元設備與用戶空間通信。用戶空間程式一旦打開 /dev/watchdog 設備,就會導致在內核中啟動一個 1分鐘的定時器,此後,用戶空間程式需要保證在 1分鐘之內向這個設備寫入數據,每次寫操作會導致重新設定定時器。如果用戶空間程式在 1分鐘之內沒有寫操作,定時器到期會導致一次系統 reboot 操作。 用戶空間程式可通過關閉 /dev/watchdog 來停止內核中的定時器。 在用戶空間,還有一個叫做 watchdog 的守護進程,它可以定期對系統進行檢測,如果某項檢測失敗,則可能導致一次 soft reboot (模擬一次 shutdown 命令的執行),還可以通過 /dev/watchdog 來觸發內核 watchdog 的運行。
三、區別與聯繫
1)硬體watchdog有更好的可靠性
硬體watchdog必須有硬體電路支持, 設備節點/dev/watchdog對應著真實的物理設備, 不同類型的硬體watchdog設備由相應的硬體驅動管理。軟體watchdog由一內核模塊softdog.ko 通過定時器機制實現,/dev/watchdog並不對應著真實的物理設備,只是為應用提供了一個與操作硬體watchdog相同的介面。
軟體watchdog基於內核的定時器實現,當內核或中斷出現異常時,軟體watchdog將會失效。而硬體watchdog由自身的硬體電路控制, 獨立於內核。無論當前系統狀態如何,硬體watchdog在設定的時間間隔內沒有被執行寫操作,仍會重新啟動系統。
2)硬體watchdog功能更加完備
一些硬體watchdog卡如WDT501P 以及一些Berkshire卡還可以監測系統溫度,提供了 /dev/temperature介面。 對於應用程式而言, 操作軟體、硬體watchdog的方式基本相同:打開設備/dev/watchdog, 在重啟時間間隔內對/dev/watchdog執行寫操作。即軟體、硬體watchdog對應用程式而言基本是透明的。
3)另外
在任一時刻, 只能有一個watchdog驅動模塊被載入,管理/dev/watchdog 設備節點。如果系統沒有硬體watchdog電路,可以載入軟體watchdog驅動softdog.ko。
四、測試
http://sunnyshineboy.blog.163.com/blog/static/2028151182012539552151/
五、源碼
http://www.oschina.net/news/8002/linux-watchdog-5.8-released