gksrudtlr
|2023. 9. 17. 23:18
인터럽트
인터럽트란?
- 컴퓨터 시스템에서 현재 실행중인 작업을 중단하고 특정 작업을 처리하도록 신호를 보내는 메커니즘
- 주로 하드웨어나 소프트웨어에서 발생하며, 시스템 효율성과 응답성을 높이기 위해 사용
주요 개념
- 발생원인
- 하드웨어 인터럽트 : 하드웨어 장치에서 발생
- 키보드 키 입력
- 타이머 만료
- 네트워크 데이터 수신
- 소프트웨어 인터럽트 : 소프트웨어에서 명시적으로 발생, 일반적으로 시스템 호출 또는 예외 처리로 구현
- 인터럽트의 흐름
- 인터럽트가 발생하면 현재 실행 중인 작업이 중단됨
- 인터럽트 컨트롤러는 인터럽트 신호를 확인하고 우선 순위에 따라 처리할 인터럽트를 결정
- CPU나 인터럽트 벡터(해당 인터럽트를 처리하는 코드의 주소)를 참조하여 인터럽트 서비스 루틴(ISR, Interrupt Service Routine)으로 이동
- ISR 실행이 안되면 이전 작업으로 복귀
- 인터럽트 종류
- 마스크 가능 인터럽트(Maskable Interrupt) : 소프트웨어 또는 하드웨어 설정을 통해 무시할 수 있는 인터럽트
- 마스크 불가능 인터럽트(Non-Maskable Interrupt) : 반드시 처리해야 하는 중요한 인터럽트로, 시스템 오류와 같은 중대한 상황에서 발생
- 소프트웨어 인터럽트 : 프로그램에 의해 명시적으로 호출되는 인터럽트
- 외부 인터럽트 : 외부 하드웨어 장치에서 발생하는 인터럽트
- 내부 인터럽트 : 프로세서 내부에서 발생하는 인터럽트로, 예외(Exception)와 유사함
- 예시
- 0으로 나누기 연산
- 잘못된 메모리 접근
인터럽트의 장점
- 인터럽트 요청(Interrupt Request, IRQ)
- 인터럽트 신호 수신 및 확인
- 인터럽트 컨트롤러가 인터럽트를 감지하고, CPU에 신호를 보냄
- CPU는 현재 인터럽트 플래그(Interrupt Flag)를 확인함
- 인터럽트 플래그 설정 및 컨텍스트 저장
- COU는현재 실행중인 프로그램 상태(레지스터, 프로그램 카운터 등)를 스택에 저장함
- 인터럽트 백터 테이블 참조
- CPU는 인터럽트 백터 테이블을 참조하여 해당 인터럽트에 연결된 ISR의 주소를 확인함
- ISR 실행
- 컨텍스트 복원 및 복귀
- ISR 실행이 끝나면 저장된 컨텍스트를 복원하고, 중단된 작업을 이어서 수행함
인터럽트와 폴링의 비교
특징 |
인터럽트 |
폴링 |
작동 방식 |
요청시 처리 |
주기적으로 상태를 확인 |
CPU 사용 효율성 |
CPU가 필요할 때만 개입 |
CPU가 계속 장치 상태를 확인, 비효율적 |
응답 속도 |
즉각적 응답 가능 |
장치 상태를 확인하는 주기에 따라 다름 |
복잡성 |
구현 복잡도가 높음 |
구현이 단순함 |