익명 사용자
로그인하지 않음
계정 만들기
로그인
youngwiki
검색
Signal 문서 원본 보기
youngwiki
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
원본 보기
역사
←
Signal
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
상위 문서: [[Signals and Nonlocal jumps]] ==개요== signal이란 시스템에서 어떤 종류의 이벤트가 발생했음을 프로세스에 알리는 작은 메시지이다. signal은 이를 위해서 kernel에서 process로 보내지며, signal type은 1~30의 정수로 식별된다. 이때 어떤 signal에 저장된 정보는 해당 ID와 그 signal이 도착했다는 사실 뿐이다. 아래는 몇가지 signal ID와 그에 대응되는 signal들을 나타낸 표이다. {| class="wikitable" |+ !ID !Name !Default Action !Corresponding Event |- |2 |SIGINT |Terminate |User typed ctrl-c |- |9 |SIGKILL |Terminate |Kill program(cannot override or ignore) |- |11 |SIGSEGV |Terminate |Segmentation violation |- |14 |SIGALRM |Terminate |Timer Signal |- |17 |SIGCHLD |Ignore |Child stopped or terminated |} ==Signal Concepts== [[파일:SignalHandling.png|섬네일|400x400픽셀|signal handler가 signal을 캐치하는 기본적인 흐름]] 시그널이 대상 프로세스로 전달되는 과정은 다음 두 가지의 명확한 단계로 이루어진다. # Sending a signal #* 커널은 destination 프로세스의 context 일부 상태를 업데이트해 해당 프로세스에 시그널을 보낸다. 다음은 signal이 전달되는 경우이다. #*# 커널이 0으로 나누기 오류나 자식 프로세스의 종료와 같은 시스템 이벤트를 감지했을 때 #*# 한 프로세스가 kill 함수를 호출하여 명시적으로 커널에게 대상 프로세스에 signal을 보내도록 요청했을 때 #* 프로세스는 자기 자신에게 시그널을 보낼 수도 있다. # Receiving a signal #* destination 프로세스는 커널이 해당 시그널의 전달에 반응하도록 강제할 때 시그널을 받는다. 프로세스는 시그널에 대해 다음 세 가지 중 하나의 반응을 할 수 있다: #*#signal을 무시(Ignore) #*# 프로세스를 종료(Terminate) #*# 사용자 수준 함수인 signal handler을 실행하여 시그널을 catch하여 처리 #Pending and Blocked Signal #* Pending signal은 전송되었지만 수신이 완료되지 않은 signal을 의미한다. #** 특정한 유형의 pending signal은 최대 하나만 존재할 수 있다. 만약 프로세스가 특정 유형(k)의 pending signal을 가지고 있다면, 그 프로세스에 대해 이후에 보내지는 동일한 유형(k)의 signal는 대기열에 쌓이지 않고 단순히 버려진다. #* 프로세스는 특정한 유형의 signal 수신을 block할 수 있다. #** 이때 signal이 전달될 수는 있으나, 해당 signal은 pending signal이 되어 프로세스가 해당 유형의 signal을 unblock하기 전까지는 수신되지 않는다. #* 커널은 각 프로세스의 context에서 pending signal과 blocked signal에 대한 bit vector를 가지고 있다. #** pending: pending signal들의 집합을 나타내는 bit vector이다. #*** 커널은 유형이 k인 signal이 전달되면 pending vector에 k bit를 설정한다. #*** 커널은 유형이 k인 signal이 수신되면 pending vector에서 k bit를 지운다. #** blocked: block된 signal들의 집합을 나타내는 bit vector이다. #*** signal mask라고도 불린다. #*** sigprocmask 함수를 통해서 특정 유형의 signal을 block하거나 unblock할 수 있다. ==각주== [[분류:컴퓨터 네트워크]]
Signal
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록