인터럽트란
- 컴퓨터 시스템에서 예기치 않은 일이 발생했을 때 CPU에게 알리는 메커니즘
- 프로그램이 아닌 외부 요인(하드웨어, OS 내부 이벤트 등)에 의해 제어 흐름이 변경됨
- 예를 들어, 키보드 입력, 네트워크 패킷 도착, 타이머 이벤트 등에서 발생함
인터럽트 발생
CPU 인터럽트 감지 & 상태 저장
인터럽트 벡터 테이블(IVT) 조회
인터럽트 핸들러 실행
원래 실행 중이던 코드로 복귀
💠 하드웨어 인터럽트
💠 소프트웨어 인터럽트
💠 동기 인터럽트 vs 비동기 인터럽트
인터럽트 발생 시, 해당 인터럽트를 처리하는 핸들러(Interrupt Handler) 실행됨
리눅스에서는 각 인터럽트 번호에 맞는 핸들러를 등록하여 관리
핸들러는 빠르게 실행되어야 하며, 복잡한 작업은 소프트웨어 인터럽트(SoftIRQ), 태스크릿(Tasklet), 워크큐(Workqueue) 등으로 처리
인터럽트 서비스 루틴 이라고도 불림
CPU는 인터럽트 발생 시 인터럽트 벡터 테이블(IVT)을 참조하여 적절한 핸들러 실행
실행 중이던 프로그램의 상태(레지스터 값 등)는 스택(Stack Space)에 저장
인터럽트 처리가 끝나면 스택에 저장된 상태 복원 후 원래 실행하던 코드로 복귀
✅ 과도한 인터럽트 발생 → 성능 저하
✅ 인터럽트 핸들러는 최대한 빠르게 실행
✅ 중첩 인터럽트 관리