
0. SIGINT 란?
Ctrl+c 를 누를 때 발생하는 Signal:
- keyboard interrupt 가 발생함을 알리는 SIGNAL: SIGINT
- Ctrl+c 가 눌린 Keyboard의 H/W Interrupt가 Kernel의 드라이버가 감지하고
- 현재 terminal 에서 fore-ground로 동작하는 process (보통 현재 실행 중인 shell script)를
강제 종료시키기 위해 해당 Process로 SIGINT 시그널을 보냄. - 이름이 interrupt이나... SIGNAL임 (S/W Interrupt 아님).
Signal:
Process 단위로 동작하는 이벤트 통보 메커니즘 으로서
OS(Kernel)를 통해 하나의 process에서 다른 process로 보내짐.
프로세스 간 통신(kill())이나
Kernel이 직접 생성(SIGINT,SIGFPE등)하는 방식으로 발생하며,
비동기적 signal(SIGINT,SIGTERM)과
동기적 signal(SIGFPE,SIGSEGV)을 모두 지원함.
kill -l을 통해 사용가능한 system signal의 종류를 확인할 수 있음.
[Linux] SIGNAL 에 대한 요약 정리.
SIGNAL이란??OS (LINUX 및 UNIX계열)에서의 SIGNAL은UNIX 또는 UNIX 계열 또는 POSIX 호환 OS에서 사용되는제한된 형태의 Inter-Process Communication (IPC)에 사용되는비동기적 S/W interrupt임.특정 process가 동일 process
ds31x.tistory.com
1. 참고: S/W Interrupt 와 TRAP
S/W interrupt:
S/W가 명시적(ARM의 SVC, x86의 INT 등의 CPU operator이용)으로
CPU에 interrupt를 발생시키는 경우로
system call을 통해 kernel mode로 변경하여
os의 resource나 서비스를 이용하는데 사용됨.
종류별로 특정 interrupt handler가 실행됨.
S/W interrupt는 synchronous interrupt로
CPU에서 발생하는 interrupt 임.
SIGNAL은 Interrupt와 구별됨.
(Intterupt로부터 Kernel이 SIGNAL을 보내는 경우가 있긴함)
trap 은 process 에서 system call 등을 수행하거나, CPU가 예외를 감지 또는 어떤 조건을 만족할 때,
kernel mode로 들어가기 위해 사용되는 Synchronous Interrupt.
- 일반적으로 cpu에게 현재 명령실행을 중단하고,
- os에게 제어를 넘겨 kernel mode로 들어가
- system call을 처리할 수 있게 해주는 수단이며,
- cpu가 divde by zero 등의 특정 예외처리를 하도록 해줌.
- 항상 동기적으로 사용됨.
- 인터럽트 처리가 끝난 후, trap 을 발생시킨 명령어의 다음 명령어를 실행시킴: Fault, Abort와의 차이점
S/W Interrupt 에 Trap이 속하는 것으로 보기도 함.
또는
Trap은
특정이벤트를 처리하기 위해
CPU가 현재 실행상태를 중단하고
커널모드로 전환해 OS로 제어를 넘기는 메커니즘을 가리키기도 함.
2. Example: trap 명령어를 통한 signal 동작변경.
다음의 예는 trap 명령어를 통해,
- 해당 shell script가 실행되는 중,
- 특정 signal (INT)이 발생할 때 해당 signal의 동작을 바꾸는 것도 가능함.
trap 'date; exit' INT
위의 예의 경우,
- SIGINT가 발생할 경우, 현재 시간을 출력하는
date가 수행되고 exit로 shell script가 종료됨.
위의 trap은 shell command 로서 S/W interrupt 의 일종인 TRAP와는 차이가 있음:
| shell 의 trap 명령어 | TRAP (S/W Interrupt의 일종) | |
| 계층 | Shell(사용자 프로그램) 수준 | CPU 하드웨어 수준 |
| 대상 | Signal handler 등록 | CPU Exception(Interrupt) 발생 |
| 동작 | 특정 signal 수신 시 지정한 명령어 실행 | CPU가 명령어 실행 시 kernel mode로 전환 |
| 예시 | trap 'date; exit' INT | SYSCALL, INT3 실행 시 발생 |
| 관련 메커니즘 | Signal | Interrupt |
같이보면 좋은 자료들
2023.01.17 - [Computer/CE] - [CE] Interrupt 요약 (Computer 기준).
[CE] Interrupt 요약 (Computer 기준).
1. Interrupt Based System (or Interrupt Driven System)오늘날 OS는 interrupt를 기반으로 동작 (Interrupt Based System)한다:interrupt가 발생하면 CPU는 현재 하는 일을 멈추고 해당 interrupt를 해결하려고 동작한다.processor
dsaint31.tistory.com
[Linux] SIGNAL 에 대한 요약 정리.
SIGNAL이란??OS (LINUX 및 UNIX계열)에서의 SIGNAL은UNIX 또는 UNIX 계열 또는 POSIX 호환 OS에서 사용되는제한된 형태의 Inter-Process Communication (IPC)에 사용되는비동기적 S/W interrupt임.특정 process가 동일 process
ds31x.tistory.com
'Computer > Linux' 카테고리의 다른 글
| Git: 사용자와 이메일 정보 설정 및 확인하기-git config (0) | 2024.05.20 |
|---|---|
| [vim] VI : carriage return 제거하기 : CRLF → LF (0) | 2023.07.14 |
| [Linux] vi (or vim) 사용법 정리 (0) | 2023.03.21 |
| [Linux] Network Setting (1) | 2023.02.07 |
| [Linux] 화면 캡쳐 단축키 (0) | 2023.01.30 |