인터럽트(interrupt)는 CPU가 현재 수행하던 작업을 잠시 멈추고 더 중요한 사건을 처리하도록 만드는 신호이다.
키보드 입력, 마우스 클릭, 하드웨어 장치의 완료 알림, 오류 등 다양한 상황에서 발생한다.
이번 글에서는 인터럽트의 개념부터, 하드웨어 인터럽트 처리 과정과 ISR 수행 과정까지 한 번에 정리한다.
1. 인터럽트란
인터럽트는 CPU의 정상적인 실행 흐름을 방해하고 CPU의 주의를 다른 작업으로 전환시키는 신호이다.
1️⃣ 동기 인터럽트 (Synchronous Interrupt)
CPU 내부에서 발생하는 인터럽트
- 대표적 예: 0으로 나누기 오류, 페이지 폴트, 잘못된 명령어 실행 등
- 프로그램의 예외(exception)와 동일한 개념
2️⃣ 비동기 인터럽트 (Asynchronous Interrupt)
입출력 장치 등 하드웨어에서 발생
- 프린터, 네트워크, 센서, 키보드/마우스 등
- CPU 외부에서 발생하기 때문에 하드웨어 인터럽트라고도 부름
예:
- 프린터가 출력 완료 알림을 보냄
- 키보드가 키 입력 발생 사실을 전달
- 마우스가 움직임 신호 전달
2. 하드웨어 인터럽트 처리 절차
CPU가 하드웨어 인터럽트를 처리하는 순서를 정확히 정리하면 다음과 같다.
1️⃣ 하드웨어 인터럽트 처리 순서 (설명)
- 입출력장치가 CPU에게 인터럽트 요청 신호를 전송
- CPU는 명령어 사이클이 끝날 때마다 인터럽트 여부를 확인
- 인터럽트 요청이 있으면 CPU는 인터럽트 플래그를 확인
- 현재 인터럽트를 받아들일 수 있는지 판단
- 인터럽트 허용 상태라면, CPU는 현재 수행 중인 작업을 백업
- 주로 PC(프로그램 카운터) 등 레지스터 값 저장
- CPU는 인터럽트 벡터를 확인
- 처리해야 하는 ISR의 시작 주소 결정
- 인터럽트 서비스 루틴(ISR) 실행
- ISR 수행이 끝나면 백업했던 작업 상태 복원 후 기존 작업 재개
2️⃣ 하드웨어 인터럽트 순서도
┌──────────────────────────────┐
│ 1. 입출력장치 → CPU 인터럽트 요청 │
└───────────────┬──────────────┘
▼
┌──────────────────────────────┐
│ 2. CPU: 명령어 사이클 종료 후 │
│ 인터럽트 발생 여부 확인 │
└───────────────┬──────────────┘
▼
┌──────────────────────────────┐
│ 3. 인터럽트 플래그 확인 │
│ (허용? 차단?) │
└───────┬──────────────────────┘
│예(허용) │아니오(차단)
▼ ▼
┌──────────────────────────────┐ ┌─────────────────────────┐
│ 4. 현재 작업 상태 백업 │ │ 인터럽트 무시 후 기존 작업 지속 │
└───────────────┬──────────────┘ └─────────────────────────┘
▼
┌──────────────────────────────┐
│ 5. 인터럽트 벡터 확인 │
│ (ISR 주소 찾기) │
└───────────────┬──────────────┘
▼
┌──────────────────────────────┐
│ 6. 인터럽트 서비스 루틴 실행 │
└───────────────┬──────────────┘
▼
┌──────────────────────────────┐
│ 7. 백업한 작업 상태 복원 후 │
│ 기존 작업 재개 │
└──────────────────────────────┘
3. 인터럽트 요청(IRQ)과 인터럽트 플래그
1️⃣ 인터럽트 요청 (Interrupt Request, IRQ)
- 하드웨어 장치가 CPU에게 “나를 처리해 주세요!”라고 보내는 신호
- 인터럽트가 들어오면 CPU는 현재 흐름이 중단될 수 있는지를 평가한다.
2️⃣ 인터럽트 플래그 (Interrupt Flag)
- CPU의 플래그 레지스터 내부에 존재
- 인터럽트 요청을 받을지, 무시할지 결정하는 비트
인터럽트 플래그가 0 → 인터럽트 비허용 (무시)
인터럽트 플래그가 1 → 인터럽트 허용
4. 인터럽트의 종류: Maskable vs Non-maskable
1️⃣ Maskable Interrupt
- CPU가 인터럽트를 기본적으로 허용하지만, 설정에 따라 무시할 수도 있는 인터럽트
- 대부분의 하드웨어 인터럽트가 여기에 속한다.
2️⃣ Non-maskable Interrupt (NMI)
- 절대로 무시할 수 없는 치명적 인터럽트
- 예: 전원 문제, 하드웨어적 치명 오류
5. 인터럽트 서비스 루틴(ISR)
ISR(Interrupt Service Routine)은 인터럽트를 처리하는 전용 프로그램 코드이다.
CPU는 인터럽트가 발생하면 ISR로 점프하여 문제를 해결한 뒤 다시 원래 작업으로 되돌아온다.
1️⃣ ISR 실행 순서 설명
- CPU가 인터럽트 발생을 감지
- 현재 실행 중인 상태(레지스터, PC 등) 백업
- 인터럽트 벡터로부터 ISR 시작 주소 획득
- ISR 실행
- 인터럽트 처리 완료
- 백업했던 작업 상태 복원
- 원래 수행하던 프로그램 실행 재개
2️⃣ ISR 순서도
┌──────────────────────────┐
│ 1. 인터럽트 발생 감지 │
└───────────────┬──────────┘
▼
┌──────────────────────────┐
│ 2. 현재 상태(PC/레지스터) 저장 │
└───────────────┬──────────┘
▼
┌──────────────────────────┐
│ 3. 인터럽트 벡터 확인 │
│ → ISR 시작 주소 획득 │
└───────────────┬──────────┘
▼
┌──────────────────────────┐
│ 4. ISR 실행 │
│ (인터럽트 처리 루틴) │
└───────────────┬──────────┘
▼
┌──────────────────────────┐
│ 5. 처리 완료 │
└───────────────┬──────────┘
▼
┌──────────────────────────┐
│ 6. 저장했던 실행 상태 복원 │
└───────────────┬──────────┘
▼
┌──────────────────────────┐
│ 7. 원래 프로그램으로 복귀 │
└──────────────────────────┘
7. 인터럽트 서비스 루틴(ISR)의 저장 위치와 선택 방식
인터럽트 서비스 루틴(ISR)은 운영체제가 메모리에 미리 저장해 둔 함수 형태의 코드이다.
하드웨어 장치가 인터럽트를 발생시키면, 장치는 고유한 인터럽트 번호(IRQ) 를 CPU에 전달한다.
CPU는 이 번호를 기반으로 인터럽트 벡터 테이블(Interrupt Vector Table) 을 조회하여
“어떤 ISR을 실행해야 하는지”를 결정한다.
즉,
- 장치는 ISR 주소를 직접 보내는 것이 아니라 IRQ 번호를 보내고
- CPU는 인터럽트 벡터 테이블에서 해당 번호에 대응하는 ISR의 시작 주소를 가져와 실행한다.
정리하면
인터럽트는 CPU가 효율적으로 여러 장치를 관리하고, 오류나 외부 신호에 즉시 반응할 수 있게 만드는 핵심 메커니즘이다.
이번 글에서는 인터럽트의 동작 원리와 흐름을 ASCII 순서도로 명확하게 설명했다.
'컴퓨터 과학' 카테고리의 다른 글
| [컴퓨터 구조] 메모리 - RAM (0) | 2025.11.23 |
|---|---|
| [컴퓨터 구조] CPU - 성능 향상을 위한 설계 (0) | 2025.11.23 |
| [컴퓨터 구조] CPU - 레지스터 (0) | 2025.11.23 |
| [컴퓨터 구조] 컴퓨터가 이해하는 정보 -명령어 (0) | 2025.11.23 |
| [컴퓨터 구조] 컴퓨터가 이해하는 정보 - 데이터 문자 (0) | 2025.11.22 |