인터럽트(Interrupt)란?
CPU가 프로그램을 실행하는 도중에 입출력(I/O) 요청, 예외상황, 하드웨어 인터럽트 등의 이벤트가 발생하면 해당 이벤트에 대한 처리를 위해 CPU의 실행 흐름을 중단하고, 우선순위가 높은 이벤트에 대한 처리를 수행하는 메커니즘입니다.
인터럽트의 구분
하드웨어 인터럽트 : 하드웨어 디바이스가 CPU에게 신호를 보내는 것
소프트웨어 인터럽트 : 프로그램에서 명령어를 실행하는 도중에 소프트웨어적으로 인터럽트를 발생시키는 것
인터럽트 동작 순서
1. 인터럽트 요청
2. 프로그램 실행 중단: 현재 실행중이던 Micro operation 까지 수행한다.
3. 현재의 프로그램 상태 보존: PCB(Process Control Block), PC(Program Counter) 등
4. 인터럽트 처리루틴 실행: 인터럽트를 요청한 장치를 식별한다.
5. 인터럽트 서비스 루틴 실행
- 인터럽트 원인을 파악하고 실질적인 작업을 수행한다. 처리기 레지스터 상태를 보존한다.
- 서비스루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 또 재귀적으로 1~5를 수행한다.
- 인터럽트 서비스 루틴을 실행할 때 인터럽트 플래그(IF)를 0으로 하면 인터럽트 발생을 방지할 수 있다.
6. 상태복구 : 인터럽트 발생 시 저장해둔 PC(Program counter)를 다시 복구한다.
7. 중단된 프로그램 실행 재개: PCB의 값을 이용하여 이전에 수행중이던 프로그램을 재개한다.
인터럽트 우선순위
여러 장치에서 인터럽트가 동시에 발생하거나 인터럽트 서비스 루틴 수행 중 인터럽트가 발생한 경우 우선순위 판별 필요
1. 전원 이상(Power fail)
2. 기계 착오(Machine Check)
3. 외부 신호(External)
4. 입출력(I/O)
5. 명령어 잘못
6. 프로그램 검사(Program Check)
7. SVC(SuperVisor Call)
* 일반적으로 하드웨어 인터럽트가 소프트웨어 인터럽트보다 우선 순위가 높다.
* 일반적으로 내부 인터럽트 보다 외부 인터럽트가 우선 순위가 높다.
References
'CS' 카테고리의 다른 글
클린코드 & 리팩토링 & 시큐어코딩 (0) | 2023.04.07 |
---|---|
시스템 콜(System Call) (0) | 2023.04.06 |
프로세스 주소 공간 (0) | 2023.04.06 |
프로세스(process)와 스레드(thread) (0) | 2023.04.06 |
마이크로서비스 아키텍처(MSA) (0) | 2023.04.05 |