作者 主題: 看門狗程式  (閱讀 12543 次)

0 會員 與 1 訪客 正在閱讀本文。

被騎上班的老

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 360
    • 檢視個人資料
看門狗程式
« 於: 2002-08-12 10:12 »
發信人: R208.bbs@bbs.kimo.com.tw (小邦邦)
日期: 12 Aug 2002 01:54:58 GMT
標題: Re: 關於dos.h的問題....
信群: tw.bbs.comp.linux    看板: linux/A0ULE5BI
來源: <41fPNY$7LR@bbs.kimo.com.tw>:225436, k4.kimo.com.tw
組織: Yahoo!奇摩大摩域

※ 引述《SUPERCOP.bbs@hcu.twbbs.org (∩__∩y  J A V A ~~~~)》之銘言:
> ※ 引述《R208.bbs@bbs.kimo.com.tw (小邦邦)》之銘言:
> :   我發現在linux下也有DOS.h.....
> :   不過我在gcc的時候卻說沒有這個file或是資料夾......
> :   奇怪.....有人知道是怎麼回是嗎??????
> :   gcc -o test test.c
>     watch dog (看門狗)寫出來的程式是否可以po在bb上呢???? 交流一下 ^^

#include <stdio.h>
#include <sys/io.h>
#include <unistd.h>

main()
{

    iopl(3);
    while(1){
      outb(60, 0x443);
      sleep(30);
    }
    return 0;
}

我是這樣run啦......
關於ioperm的設定我看不太董man寫的意思......
我發現這樣也可以做到watchdog的目的........
不過不確定到底少了些什麼......
如果有錯誤.....歡迎指教.....
--
※ Origin: Yahoo!奇摩 大摩域 <telnet://bbs.kimo.com.tw>
◆ From: 202.39.71.253

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5392
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
看門狗程式
« 回覆 #1 於: 2002-08-12 11:02 »
上面那個 watchdog 不知道與我的認知有沒有不同...

linux 上也有支援一些 watchdog 的 hardware (通常就是用來判斷系統是否還在正常運作, 如果沒有就重新開機), 也支援軟體的方式來處理 (softdog).

我沒有用過硬體的 watchdog, 所以就 softdog 來說明:

在 kernel 編譯的時候, 如果有選取 CONFIG_SOFT_WATCHDOG 編譯成 module, 就會有個 softdog.o 的 module.
如果要使用 software watchdog 時, 先用 mknod 做一個 device file 如:
mknod /dev/watchdog c 10 130
然後可以載入這個 module:
modprobe softdog

這時候, 如果沒有程式負責寫資料進 /dev/watchdog, 經過 60 秒 (內定的時間) 機器就會被重新開機 (不經由正常關機程序, 直接 reboot, 要試的時候注意一下).

如果要更改那個時間, 可以使用 soft_margin 這個參數在載入 module 時設定.

如果是直接編譯在 kernel 時, 可以用 panic=60 這個參數在載入 kernel 時設定 timeout 的時間.

至於要如何避免重新開機... 就要有程式負責每隔一段時間寫資料到 /dev/watchdog 這個 device 中, 讓 softdog 知道機器還正常運作, 程式的寫法很簡單:
代碼: [選擇]

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(int argc, const char *argv[])
{
        int fd=open("/dev/watchdog",O_WRONLY);
        if(fd==-1)
        {
                perror("watchdog");
                exit(1);
        }
        while(1)
        {
                write(fd,"\0",1);
                fsync(fd);
                sleep(10);
        }
}



也有別的方式, 可以參數 kernel source 中 Documentation 下的 watchdog*.txt

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
看門狗程式
« 回覆 #2 於: 2002-08-12 11:59 »
watchdog這個東東很特別,
在OS瀕臨當機時,
還有辦法讓OS重開機,
我用過的E-Smith好像就有內建這功能,
對於放在遠端的主機特別有用,
只要不是硬體性的問題,
watchdog就會讓你的主機活的好好的!

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5392
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
看門狗程式
« 回覆 #3 於: 2002-08-12 12:03 »
如果是 hardware watchdog, 那就很簡單, 反正訊號沒回來就表示當了, 超過時間就 hardware reset 重新開機了.
如果是 software watchdog,  還是有可能連 watchdog 都當了...

ZMAN

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 6247
  • 性別: 男
    • 檢視個人資料
    • 魔力門部落格
看門狗程式
« 回覆 #4 於: 2002-08-12 17:55 »
呵呵
原來這也可以用軟體作啊
這樣可信賴度高嗎
我只知道用硬體的方式
INTEL的SEVER BOARD就有內建
佈線深似海!
網路高如天!

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5392
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
看門狗程式
« 回覆 #5 於: 2002-08-12 20:10 »
多數的工業級主機板應該都有做 hardware..
software 想當然可信賴度沒有 hardware 好, hardware 用幾個 ic 做一個, 也不可能當機, 只要訊號一沒有就重開機了...
software 就要看 OS 當掉的程度而定了... 不過至少 AP 當掉時要重開機是沒什麼問題... 不過 AP 用 mon 來檢查可能更安全一些.

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5392
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
看門狗程式
« 回覆 #6 於: 2002-08-12 20:21 »
另外... 這東西我只敢在以前用 DOS 寫程式的時候使用, 後來的 OS 都不怎麼敢用...
搞不好一重開機後, fs 有問題, 反而開不起來了... :-(