4️⃣ 프로세서 구조와 동작 원리
컴퓨터 시스템에서 예외(Exception)와 인터럽트(Interrupt) 는 CPU의 정상적인 명령어 실행을 일시적으로 중단하고,
특정 이벤트를 처리하기 위해 사용됩니다.
예외와 인터럽트는 CPU가 외부 또는 내부에서 발생하는 예외적인 상황에 반응하여 적절한 처리를 수행할 수 있도록 하는 중요한 메커니즘입니다.
이번 섹션에서는 예외와 인터럽트의 개념, 차이점, 처리 과정 및 현대 CPU에서의 최적화 방법을 자세히 살펴보겠습니다.
🔹 1. 예외(Exception)와 인터럽트(Interrupt)란?
✅ 1.1 예외(Exception)란?
예외(Exception) 는 CPU 내부에서 실행 중인 프로그램에서 오류 또는 특수한 상황이 발생했을 때, 이를 처리하기 위해 발생하는 이벤트입니다.
즉, 프로그램 실행 중 예상치 못한 오류가 발생했을 때 CPU가 개입하여 적절한 처리를 수행하는 과정입니다.
💡 예외(Exception) 발생 예시
- 0으로 나누기(Division by Zero)
- 페이지 폴트(Page Fault)
- 잘못된 명령어 실행(Illegal Instruction)
- 부동소수점 연산 오류(Floating Point Exception)
✅ 예외는 CPU 내부에서 발생하며, 프로그램 실행을 방해할 수 있음
✅ 1.2 인터럽트(Interrupt)란?
인터럽트(Interrupt) 는 CPU 외부에서 발생하는 이벤트가 CPU의 현재 작업을 일시적으로 중단하고 처리 루틴을 실행하도록 요청하는 신호입니다.
즉, 입출력 장치나 외부 하드웨어가 CPU의 주의를 끌어 특정 작업을 처리하도록 요구하는 메커니즘입니다.
💡 인터럽트 발생 예시
- 키보드 입력(Keyboard Interrupt)
- 마우스 클릭(Mouse Interrupt)
- 네트워크 패킷 수신(Network Interrupt)
- 하드디스크 입출력 완료(Disk I/O Completion)
- 타이머 인터럽트(Timer Interrupt)
✅ 인터럽트는 CPU 외부에서 발생하며, 운영 체제가 이를 처리함
✅ 1.3 예외(Exception) vs. 인터럽트(Interrupt) 비교
구분 | 예외(Exception) | 인터럽트(Interrupt) |
발생 원인 | CPU 내부 오류 | CPU 외부 이벤트 |
발생 시점 | 실행 중 즉시 발생 | 주어진 시점에 발생 |
예제 | 0으로 나누기, 메모리 오류 | 키보드 입력, 네트워크 이벤트 |
처리 방식 | 예외 핸들러(Exception Handler) 실행 | 인터럽트 핸들러(Interrupt Handler) 실행 |
✅ 예외는 CPU 내부에서 발생하고, 인터럽트는 CPU 외부에서 발생
🔹 2. 예외(Exception) 처리 과정
CPU에서 예외가 발생하면, 이를 처리하기 위해 예외 처리 루틴(Exception Handler) 이 실행됩니다.
✅ 2.1 예외 처리 단계
1️⃣ 예외 발생 (Fault/Trap/Abort)
- CPU 내부에서 오류 감지 (예: 0으로 나누기, 메모리 접근 오류) 2️⃣ 현재 명령어 중단 및 상태 저장
- 프로그램 카운터(PC), 레지스터 값 저장 3️⃣ 예외 핸들러(Exception Handler) 호출
- 운영 체제(OS)가 예외를 감지하고 핸들러 실행 4️⃣ 예외 처리 후 복귀 또는 프로그램 종료
- 예외 복구 가능하면 원래 프로그램으로 복귀, 복구 불가능하면 프로그램 강제 종료
💡 예제: 0으로 나누기 예외 발생
DIV R1, R2, R3 # R3 = 0인 경우 예외 발생
Exception Handler 실행 → 오류 메시지 출력 → 프로그램 종료
✅ CPU는 예외 발생 시, 해당 예외에 맞는 핸들러를 호출하여 문제를 해결
🔹 3. 인터럽트(Interrupt) 처리 과정
인터럽트가 발생하면 CPU는 현재 실행 중인 명령어를 잠시 중단하고 인터럽트 핸들러(Interrupt Handler)를 실행합니다.
✅ 3.1 인터럽트 처리 단계
1️⃣ 인터럽트 발생 (Interrupt Request, IRQ)
- 키보드 입력, 네트워크 패킷 수신 등 외부 장치에서 인터럽트 요청 2️⃣ 현재 상태 저장
- 실행 중이던 프로그램의 레지스터 값과 프로그램 카운터(PC) 저장 3️⃣ 인터럽트 벡터 테이블(IVT) 조회
- 인터럽트 유형에 맞는 핸들러를 찾음 4️⃣ 인터럽트 핸들러 실행
- 해당 인터럽트를 처리하는 코드를 실행 (예: 키보드 입력 처리) 5️⃣ 이전 작업으로 복귀 (Resume Execution)
- 처리 완료 후, 중단된 프로그램을 다시 실행
💡 예제: 키보드 인터럽트 처리
사용자가 키보드 'A' 입력 → 키보드 컨트롤러에서 인터럽트 발생 → CPU가 인터럽트 핸들러 실행 → 화면에 'A' 출력
✅ 인터럽트는 CPU가 외부 이벤트를 효과적으로 처리할 수 있도록 함
🔹 4. 인터럽트 유형과 우선순위
인터럽트는 중요도에 따라 하드웨어 인터럽트(Hardware Interrupt), 소프트웨어 인터럽트(Software Interrupt), 타이머 인터럽트 등으로 나뉩니다.
인터럽트 유형 | 설명 | 예제 |
하드웨어 인터럽트 (Hardware Interrupt) | 외부 장치에서 발생 | 키보드, 마우스, 네트워크 |
소프트웨어 인터럽트 (Software Interrupt) | 프로그램에서 직접 요청 | 시스템 콜(System Call) |
타이머 인터럽트 (Timer Interrupt) | 일정 시간이 지나면 발생 | OS에서 프로세스 스케줄링 |
✅ 인터럽트는 우선순위가 있으며, 중요한 인터럽트가 먼저 처리됨
🔹 5. 현대 CPU의 예외 및 인터럽트 최적화 기법
현대 CPU는 예외와 인터럽트를 효과적으로 처리하기 위해 다양한 최적화 기술을 적용합니다.
✅ 인터럽트 컨트롤러(Interrupt Controller) → 인터럽트 요청을 관리하고 우선순위를 조정
✅ 인터럽트 마스킹(Interrupt Masking) → 중요한 연산 중 특정 인터럽트를 비활성화
✅ 중첩 인터럽트(Nested Interrupts) → 낮은 우선순위 인터럽트 실행 중에도 높은 우선순위 인터럽트를 처리
✅ 비동기 인터럽트(Asynchronous Interrupts) → 입출력 장치가 독립적으로 작동하며 CPU를 효율적으로 사용
💡 예제: 멀티코어 CPU에서 인터럽트 최적화
- 최신 CPU는 다중 인터럽트 라인(Multiple Interrupt Lines) 을 사용하여 빠르게 인터럽트를 처리
✅ 최신 CPU는 인터럽트 우선순위 관리와 비동기 실행을 통해 성능을 극대화
✅ 마무리: 예외 & 인터럽트 처리 핵심 정리
✅ 예외(Exception)는 CPU 내부에서 발생하는 오류이며, 인터럽트(Interrupt)는 외부 이벤트 처리 요청
✅ CPU는 예외 및 인터럽트 발생 시, 핸들러(Handler)를 호출하여 문제를 해결
✅ 인터럽트는 키보드 입력, 네트워크 패킷 수신, 하드웨어 요청 등 다양한 이벤트를 처리하는 데 사용
✅ 현대 CPU는 인터럽트 컨트롤러, 인터럽트 마스킹, 비동기 인터럽트 등의 기법을 적용하여 최적화
'IT > 컴퓨터구조' 카테고리의 다른 글
🖥️ [컴퓨터구조] 캐시 메모리(Cache Memory)의 개념과 원리 (0) | 2025.04.03 |
---|---|
🖥️ [컴퓨터구조] 메모리 계층 구조 개요 (캐시, RAM, HDD/SSD) (0) | 2025.04.02 |
🖥️ [컴퓨터구조] 데이터 해저드와 제어 해저드 해결 방법 (0) | 2025.03.12 |
🖥️ [컴퓨터구조] 파이프라이닝(Pipelining)의 개념 (0) | 2025.03.11 |
🖥️ [컴퓨터구조] CPU의 명령어 실행 과정 (IF, ID, EX, MEM, WB) (0) | 2025.03.10 |