Backend/OS★

시그널 (Signal)

petitCoding 2011. 5. 26. 11:43


* Signal

 

- 특정 이벤트 발생시 프로세스에게 소프트웨어 인터럽트를 걸어줌으로써 알려준다.

- 비동기적인 사건의 발생을 태스크에게 알리는 메커니즘

- 종류 : SIGKILL, SIGINT(DEL, Ctrl-C), SIGBUS, SIGUSR1....

- Task의 시그널 처리 방법 : 종료, 무시, 수행 중지, 시그널 처리 함수 수행 등.

- 대부분의 시그널은 정상 종료(normal termination)가 일어남

- SIGABRT, SIGBUS, SIGSEGV, SIGQUIT, SIGILL, SIGTRAP, SIGSYS, SIGXCPU, SIGXFSZ, SIGFPE 시그널은 비정상종료(abnormal termination)을 발생시킴

 

*Signal의 생성

 

- 터미널에서 특수키를 누르는 경우(Ctrl-C, Ctrl-Z,..)

- Hardware의 오류 : 0으로 나눈 경우, 잘못된 메모리 참조하는 경우

- Kill 함수의 호출(대상 프로세스에 대한 권한이 있어야 한다)

- 네트워크에서 데이터 오류, 파이프 오류, 알람 시계의 종료 등

 

*Signal 전달

 

- 발생된 Signal이 수신되어 정해진 방법으로 처리

- 지연(Pending) : 발생된 Signal의 전달되지 못한 상태

 

*Signal의 block

 

- 블록이 해제되거나 무시하도록 변경될 때까지 지연된 상태로 남는다

- Signal 마스크 : 블록될 Signal 집합

 

*Signal 처리

 

- Default action(SIG_DFL) : 특별한 처리 방법을 선택하지 않은 경우. 대부분 signal의 기본 처리 방법은 프로세스를 종료 시킴

- Ignore the signal(SIG_IGN) : SIGKILL과 SIGSTOP signal을 제외한 모든 signal을 무시할수 있다. 하드웨어 오류시 발생한 signal에 대해서는 주의가 필요.

- catch the signal : signal이 발생하면 미리 등록된 함수(signal handler)가 수행하지만 SIGKILL, SIGSTOP signal은 제외.




반응형

'Backend > OS★' 카테고리의 다른 글

리눅스 커널 컴파일  (0) 2011.05.27
ltrace / strace  (0) 2011.05.26
inode (index node)  (0) 2011.05.26
Task Scheduling  (0) 2011.05.26
쓰레드 동기화 (Synchronization)  (0) 2011.05.26