Siganl 시그널이란?
Kernel or Process 에서 다른 process에게 어떤 사건이 발생했음을 알려주는 소프트웨어적인 통지(이벤트)
Signal lifetime: 시그널 생성 시점부터 process에게 전달되는 시점까지
[Signal Handler]
When process catch the signal , do specific action
[Signal Pending]
Signal that has been generated, but not yet delivered is said to be pending
[Singal mask]
시그널을 블록시키는것,
시그널 마스크는 블록된 시그널의 리스트를 가진다.
SIGNAL을 받은 시점에서 해당 프로세스의 ACTION
- Signal IGNORE
- SIgnal BLOCK
- 등록된 시그널 핸들러로 특정 동작 수행
- 등록된 시그널이 없는 경우, OS단에서 정의해놓은 커널 기본 동작 수행
SIGNAL 블록 vs 무시?
블록 | 무시 |
시그널이 프로세스에게 '전달'조차 안됨. ※ 블록이 해제되는 순간 전달됨. |
시그널이 프로세스에게 전달되나 버려짐. |
SIGNAL - PROCESS RELATION
PCB에 해당 프로세스가 Block 또는 처리되야할 시그널 정보 관리
(ex. Pending, Sigpending, Blocked, Sig)
사용자->커널 모드 전환 직전에 해당 프로세스의 PCB의 signal 정보를 확인하여
처리가 필요한 동작이 있을 경우, 해당 처리를 담당하는 커널함수(기본 동작일 경우 커널)를 호출하고
해당 함수가 실행된 후에 사용자 모드로 전환.
이미 정의해둔 동작이 Process 내에 있는 함수라면 (사용자 모드의 함수)
사용자모드로 전환 후 해당 함수 호출
∴ SIGNAL 체크 시점이 커널->사용자 모드 전환시이다.
∴ 정의된 함수 영역에 따라 사용자 or 커널 함수가 동작(수행)됨
'LINUX > Linux' 카테고리의 다른 글
Signal mask, set 함수 (0) | 2019.06.15 |
---|---|
Signal 생성 함수, 예제 (0) | 2019.06.15 |
pthread 함수 예제2 (0) | 2019.06.15 |
pthread 함수 예제 (0) | 2019.06.15 |
vim, vi Editor 라인별 복사 / 삭제 / 붙여넣기 명령어 (0) | 2019.06.07 |