* 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 |