꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

시스템 프로그래밍

시그널 (signal)

gold_dragon 2021. 5. 7. 14:11

시그널은 IPC 기법 중 하나로 사용할 수 있습니다. 또한 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생되었는지를 알려주는 기법입니다. 예로 'ctrl + c'를 눌렀을 때 프로세스를 종료시키는 것이 시그널을 사용한 것입니다.

시그널 종류

SIGKILL

프로세스 죽임

 

SIGALARM

알람 발생

 

SIGSTP

프로세스 멈춤

 

SIGCONT

멈춘 프로세스 이어서 실행

 

SIGNT

프로세스에 인터럽트를 보내서 프로세스를 죽임

 

SIGSEGV

프로세스가 다른 메모리 영역 침범

시그널 동작

프로그램에서 특정 시그널의 기본 동작 대신 동작을 하도록 구현 가능합니다.

각 프로세스에서 시그널 처리에 대해 다음과 같은 동작 설정이 가능합니다.

- 시그널 무시

- 시그널 블록 (블록을 푸는 순간, 해당 프로세스에서 시그널 처리)

- 프로그램 안에 등록된 시그널 핸들러로 재정의한 특정 동작 수행

- 등록된 시그널 핸들러가 없으면, 커널에서 기본 동작 수행

시그널과 프로세스

PCB에 해당 프로세스가 블록 또는 처리해야하는 시그널 관련 정보를 관리합니다. 커널 모드에서 사용자 모드 전환시 시그널 정보를 확인해서, 해당 시그널을 처리합니다.

'시스템 프로그래밍' 카테고리의 다른 글

스레드 관리  (0) 2021.05.07
쉘 스크립트  (0) 2021.05.07
IPC 기법  (0) 2021.05.07
프로세스 관리 - 프로세스 종료  (0) 2021.05.06
프로세스 관리 - 프로세스 생성 속도 향상 (copy on write)  (0) 2021.05.06