인터럽트
인터럽트란 CPU가 프로그램을 실행하고 있는 도중에, 입출력 하드웨어 장치나 예외 상황이 발생하여 CPU에게 처리를 요청하는 신호를 말한다.
인터럽트가 발생하면 CPU는 현재 실행 중인 명령어까지만 수행하고 즉시 작업을 중단한 뒤, 해당 이벤트를 처리하기 위한 ISR( Interrupt Service Routine)이라는 특정 코드로 제어권을 옮긴다.
인터럽트 발생 원인은 외부에 있는지 내부에 있는지에 따라 두 가지로 나뉜다.
1. 하드웨어 인터럽트
CPU 외부의 하드웨어 장치가 전기 신호를 통해 CPU에게 보내는 비동기적(Asynchronous) 신호이다.
예시로는 키보드, 마우스 입력에서 일어난다.
2. 소프트웨어 인터럽트
CPU 내부에서 명령어를 실행하는 과정에서 동기적(Synchronous)으로 발생하는 예외 상황이다.
예시로 프로그램 오류가 나는 0 나누기 등이 있다.

인터럽트가 발생하면 처리 과정은 아래와 같다.
1. 인터럽트 발생
2. CPU는 현재 실행 중인 명령어를 멈추고 제어권으로 이동한다.
3. 현재 실행 중인 프로세스의 상태를 보존해야 하기 때문에 프로세스의 정보들을 스택에 푸시해 백업을 한다.
4. 어떤 장치에서 인터럽트를 요청했는지 이를 식별하기 위해 인터럽트의 고유 번호를 이용한다. 이를 메모리에 있는 인터럽트 벡터 테이블(IVT)을 참조한다.이 IVT에는 해당 인터럽트를 처리할 함수(ISR)의 시작 주소가 있다.
5. IVT에 있는 ISR 함수를 실행해 인터럽트를 처리한다.
6. ISR이 끝나면 IRET라는 특수한 복귀 명령어를 실행해 스택에 저장해뒀던 프로세스의 정보들을 다시 복구한다.
7. 중단되었던 지점부터 다시 프로세스가 실행된다.
인터럽트의 예시로 마우스를 움직이면 커서가 따라오는 경우이다.
마우스를 화면에서 움직이면 컴퓨터는 하던일을 멈추고 커서를 다시 그리는 것이다.
인터럽트가 없다면 마우스 커서는 몇 초 뒤에 움직인 위치로 이동할 것이다.
그리고 계산이 가능한 프로그램에서 0으로 나누는 수식을 입력했다면
산술 논리 연산 장치는 이를 계산하지 못하고 예외가 발생하며, CPU는 이를 인터럽트로 알아들어 에러 메시지를 띄우는 ISR을 실행하라고 할 것이다. 그래서 계산에 오류가 있으면 프로그램이 꺼지거나 경고창이 나타나는 것이다.
'CS' 카테고리의 다른 글
| CS) 파일 입출력과 버퍼 (0) | 2026.01.19 |
|---|---|
| CS) 물리적 메모리 vs 논리적 메모리 (0) | 2026.01.15 |
| CS) 데드락(교착 상태) (0) | 2026.01.15 |
| CS) CPU 스케줄링 (0) | 2026.01.14 |
| CS) 스택 프레임 (0) | 2026.01.14 |