2012-03-21 1 views
2

C + + 코드를 내 프로그램에 추가하여 실제로 내 프로그램을 고정 시켜서 워치 독 타이머를 테스트 할 수 있습니다. 또한 어떻게 OS를 정지시킬 수 있습니까? 감사!어떤 프로그램을 워치 독 타이머를 테스트하기 위해 내 프로그램을 정지/멈추도록 코드 할 수 있습니까?

+5

응답 성을 테스트하고자하는 스레드에 단단히 무한한 while (1) {} 루프를 스레드에 추가하십시오. –

답변

1

당신이 시계를 실행하려는 당신은 당신의 코드 내부의 무한 루프를 사용할 수 있습니다 : 당신이 일정 기간 대신에 무한 루프를 원하는 경우

while(true); 

for(;;); 

do{ 
}while(true); 
+0

'for' 루프는'true' 초기 조건을 필요로하지 않습니다.'for (;;);로 충분합니다. –

+0

예. 당신 말이 맞아요. 업데이트 됨 –

+0

나는 (사실) 동안 선호합니다. 이것은 C 지식이 필요하기 때문에 (;;;)보다 명확합니다. –

0
void sleep (int sec) 
void usleep (int ms) 

합니다.

+0

'sleep'은 시스템을 정말로 멈추게합니까? –

+0

sleep은 현재 실행중인 스레드를 일시 중지하고 다른 스레드를 실행할 수있게합니다. –

+0

@ JoachimPileborg 그러나 나는 OP가 정반대의 것을 원한다고 생각한다. 나는 CPU를로드하는 긴밀한 루프가 워치 독을 트리거 할 확률이 높다는 것을 의미합니다. 스레드를 '잠자기'상태로두면 워치 독을 이해하거나 트리거 할 수 있습니다. 또는 나는 틀린가? –

0

난 항상 개인적으로 좋아 ... 당신이 키를 누를 때까지

cin.get(); 

이 시스템을 일시 중지됩니다 =)

+0

'워치 독'을 트리거합니까? –

0

당신의 OS가 정지 원인? 쉽게 ...

1.

for (;;) { 
    fork(); 
} 

2.

모듈에
for (;;) { 
    malloc(4*1024); // or other size, but not too big, otherwise virtual malloc 
} 

3. (주의!)

DEFINE_SPINLOCK(lock); 
spin_lock_irq(&lock); 
spin_lock_irq(&lock); 

잠 함수는 프로세스로 이끌 정지하지만 OS는 여전히 정상입니다. OS가 멈추게하려면 프로세스가 CPU 유틸리티, 메모리 또는 파일 desc와 같은 너무 많은 리소스를 확보해야하며 해제되지 않아야합니다.

하지만 프로그램이 아닌 (OS가 아닌) 워치 독 타이머를 테스트하기 위해서는 무한 루프로 충분합니다.

관련 문제