0. SIGINT 란?
Ctrl+c
를 누를 때 발생하는 Signal:
- interrupt를 발생시킴: SIGINT
- 현재 terminal 에서 fore-ground로 동작하는 process (보통 현재 실행 중인 shell script)를
interrupt 시켜 강제 종료시키는데 주로 사용됨.
Signal
:
Process 단위로 동작하는 비동기적 이벤트 처리 메커니즘 으로서
OS를 통해 하나의 process에서 다른 process로 보내짐.
실행 중인 process에게 특정 동작을 지시하는 등으로 동작하며
Signal의 종류에 따라 process에게 요구하는 동작이 다름.
process간 비동기적 통신이나 비동기 event 처리를 수행하는데 이용됨.
kill -l
을 통해 사용가능한 system signal의 종류를 확인할 수 있음.
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로 간주.
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로 제어를 넘기는 메커니즘을 가리키기도 함.
S/W Interrupt과 trap은 매우 비슷(둘 다 cpu의 현재 실행을 중단하고 kernel mode로 진입)하나,
- trap은 s/w interrupt 처럼 system call을 위해 명시적으로 프로그램 코드상에서 호출되어 이용되기도 하나,
- 예외발생 시 이에 대한 처리를 위해 사용되는 비의도적인 예외상황에서도 발생되는 차이점을 가짐.
2. Example: trap을 통한 singal 동작변경.
다음의 예는 trap
명령어를 통해,
- 해당 shell script가 실행되는 중,
- 특정 signal (INT)이 발생할 때 해당 signal의 동작을 바꾸는 것도 가능함.
trap ‘date; exit‘ INT
위의 예의 경우,
- SIGINT가 발생할 경우, 현재 시간을 출력하는
date
가 수행되고 exit
로 shell script가 종료됨.
같이보면 좋은 자료들
2023.01.17 - [Computer/CE] - [CE] Interrupt 요약 (Computer 기준).
'Computer > CE' 카테고리의 다른 글
[CE] Subdivision using DFS (0) | 2023.05.24 |
---|---|
[CE] Stack (0) | 2023.05.23 |
[CE] URL, URI and UNC (0) | 2023.04.09 |
[CE] Ex : 2's complement (1) | 2023.03.21 |
[Tip] Chrome Hot Keys (0) | 2023.03.20 |