인터럽트(Interrupt) vs 트랩(Trap)
인터럽트 vs 트랩
💡학습 자료에서 인터럽트와 트랩이 혼용되어 사용되는데, 정확한 차이를 알 수 없어 정리하기 위해 포스팅을 작성한다.
인터럽트와 트랩
- 정의: 인터럽트는 즉각적인 주의를 요하는 이벤트를 알리는 신호로, 하드웨어 또는 소프트웨어에 의해 발생한다.
정의를 봐도 역시나 헷갈리는데, 그 이유는 트랩이 인터럽트의 일종이기 때문인 듯 하다.
인터럽트는 다시 소프트웨어 인터럽트
와 하드웨어 인터럽트
로 분류되는데, 소위 그냥 말하는 Interrupt
는 하드웨어 인터럽트
로, 외부 장치에 의한 인터럽트에 한정되는 듯 하다.
javatpoint.com에서는 트랩에 대해 다음과 같이 설명한다.
A trap is a software-produced interrupt that can be caused by various factors, including an error in instruction, such as division by zero or illegal memory access. A trap may also be generated when a user program makes a definite service request from the OS.
트랩은 명령어 오류(예: 0으로 나누기나 불법 메모리 접근) 등 여러 가지 요인으로 인해 발생할 수 있는 소프트웨어에 의해 생성된 인터럽트입니다. 또한 트랩은 사용자 프로그램이 운영체제에 명확한 서비스 요청을 할 때도 생성될 수 있습니다.
Interrupt
: 보통Hardware Interrupt
를 의미하나,Software Interrupt
까지 포함하는 경우도 있다. 이는 맥락에 따라 달라지며, 본 포스팅에서는Interrupt
를Hardware Interrupt
를 의미하는 것으로 한정한다.Trap
: 애플리케이션에 의해 실행되는Software Interrupt
를 의미한다.
비교
이제 Trap이 Software Interrupt
인 것을 알았으니 세부적인 차이점에 대해 다뤄보려 한다.
Interrupt(Hardware Interrupt)
하드웨어 인터럽트는 외부 하드웨어 장치가 CPU의 주의를 끌기 위해 발생시키는 신호이다. 예를 들어, 키보드를 누르거나 마우스를 클릭하는 경우, 하드 드라이브의 데이터가 준비된 경우, 프린터 스풀링이 준비된 경우 등이 있다.
- 특징:
- 발생 원인: 하드웨어 장치의 신호.
- 사용 목적: 장치의 상태 변화 통지, 데이터 전송 완료 통지.
- 예시: 키보드 입력, 네트워크 카드의 패킷 수신, 타이머 완료.
Trap(Software Interrupt)
소프트웨어 인터럽트는 프로그램이나 운영체제에서 의도적으로 발생시키는 인터럽트이다. 이는 특정 명령어를 실행함으로써 발생한다. 소프트웨어 인터럽트는 주로 시스템 호출(system call)이나 오류 처리를 위해 사용된다.
- 특징:
- 발생 원인: 프로그램 코드에 의해 발생.
- 사용 목적: 운영체제와의 상호작용, 시스템 서비스 호출, 예외 상황 처리.
- 예시: x86 아키텍처에서의 INT 명령어, 시스템 호출 인터럽트 (예: Linux의 INT 0x80).
비교 테이블
트랩 (Trap) | 인터럽트 (Interrupt) |
---|---|
트랩은 사용자 프로그램이 운영체제에게 즉시 기능을 수행하도록 요청하는 신호이다. | 인터럽트는 CPU에게 하드웨어로부터 즉각적인 주의가 필요한 이벤트를 알리는 신호이다. |
동기적인 프로세스. | 비동기적인 프로세스. |
모든 트랩은 인터럽트이다. | 모든 인터럽트가 트랩은 아니다. |
소프트웨어 장치에서만 발생할 수 있다. | 하드웨어와 소프트웨어 장치에서 발생할 수 있다. |
사용자 프로그램 명령이 생성한다. | 하드웨어 장치가 생성한다. |
소프트웨어 인터럽트로도 알려져 있다. | 하드웨어 인터럽트로도 알려져 있다. |
특정 기능을 실행하고 트랩 핸들러에게 제어를 넘긴다. | CPU에게 특정 인터럽트 핸들러 루틴을 실행하도록 강제한다. |