임베디드

[리눅스] 시그널 신호 보내기, WDT(Watchdog Timer)

히똔 2022. 4. 29. 16:56
728x90
반응형

시그널 (Signal) 이란?

특정 이벤트가 발생했을때 신호를 보내서 알려준다.

kill -l

명령어를 통해 시그널 종류를 파악할 수 있다.

 

인터럽트 (Interrupt) 란?

CPU 동작중 하던일을 멈추고 처리하도록 하는 것이다.
즉, 인터럽트 발생시 예약된 함수가 동작한다. (콜백 함수랑 비슷)

 

ISR (Interrupt Service Routine)

인터럽트 핸들러라고도 불리며, 인터럽트 발생시 호출되는 코드이다.

 

Signal API 사용


사용자 정의 Signal 을 만들어서 다음 명령어를 실행시키면 해당 시그널이 동작한다.

killall -사용자정의시그널 프로세스이름


코드 내에서도 다음 코드로 시그널을 실행 시킬 수 있다.

kill(프로세스ID, 사용자정의시그널)

 

코드 작성

실행결과

 

WDT (Watchdog Timer) 란?

watchdog은 '경비견' 의 영어단어다.
임베디드 시스템의 안전장치로, 오작동을 막기 위한 타이머다.
동작 중 무한 루프가 돌거나 응답이 없을때 WDT가 Timeout이 되고,
시스템 리셋, 중지/ 메모리 덤프 / 코어 덤프 동작이 이루어진다.

 

WDT 구현하기

Signal과 alarm 함수로 WDT를 구현할 수 있다.
alarm 함수를 통해서 전달되는 시그널 함수는 SIGALRM 이다.

코드작성

실행결과

 

 

 

[리눅스] Bash 쉘 프로그래밍 : 입출력, 변수, 주석, if문

쉘에서 쓰는 언어는 생소하다. 그래서 새로 배워야함! 출력 echo 명령어를 이용한다. echo HI 입력 read 명령어를 이용한다. read input echo $input 변수 생성 변수이름=값 으로 변수를 만들 수 있다. first=10

asdfmelody.tistory.com

 

728x90
반응형