728x90
728x90
인터럽트(Interrupt)
CPU가 프로그램을 실행하고 있을 때, 예기치 않은 상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것이다.
- 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.
하드웨어 인터럽트(=외부 인터럽트)
- 하드웨어가 발생시키는 인터럽트이다.
- CPU 외부의 디스크 컨트롤러나 주변장치가 운영체제의 처리를 요청하는 것을 말한다.
소프트웨어 인터럽트(=내부 인터럽트)
- 소프트웨어가 발생시키는 인터럽트이다.
- Trap이라고도 불린다.
인터럽트 종류와 우선순위
- 파란색은 하드웨어 인터럽트, 녹색은 소프트웨어 인터럽트에 해당한다.
- 위에서 아래로 갈수록 우선순위가 낮아진다.
- 하드웨어 인터럽트가 소프트웨어 인터럽트보다 우선 순위가 높다.
인터럽트 동작 방식
간단한 설명
더보기
- 인터럽트 요청
- 프로그램 실행 중단: 현재 실행중이던 Micro operation 까지 수행한다.
- 현재의 프로그램 상태 보존: PCB(Process Control Block), PC(Program Counter) 등
- 인터럽트 처리루틴 실행 : 인터럽트를 요청한 장치를 식별한다.
- 인터럽트 서비스 루틴 실행
- 인터럽트 원인을 파악하고 실질적인 작업을 수행한다. 처리기 레지스터 상태를 보존한다.
- 서비스루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 또 재귀적으로 1~5를 수행한다.
- 인터럽트 서비스 루틴을 실행할 때 인터럽트 플래그(IF)를 0으로 하면 인터럽트 발생을 방지할 수 있다.
- 상태복구 : 인터럽트 발생 시 저장해둔 PC(Program counter)를 다시 복구한다.
- 중단된 프로그램 실행 재개: PCB의 값을 이용하여 이전에 수행중이던 프로그램을 재개한다.
자세한 설명
더보기
- 현재 진행 중인 기계어 코드를 완료한다.
- 인터럽트 가능 플래그(IE)와 인터럽트 요청 신호(INTR)을 비교하여 실행 가능한 지 확인한다.
- 실행이 가능하지 않다면 인터럽트를 무시하고, 가능하다면 인터럽트 요청을 제어 장치에 전달한다.
- 제어 장치는 현재 실행 중인 프로그램의 위치(PC), 레지스터 상태 등을 스택에 저장한다.
- 프로그램이 동작을 멈추면 커널 모드로 진입한다.
- 인터럽트 벡터(IV)에서 인터럽트 서비스 루틴(ISR)의 주소를 찾는다.
- ISR을 실행시켜 인터럽트를 처리한다.
- 처리가 끝나면, ISR의 반환 값과 함께 스택에 저장 했던 프로그램 상태를 복구하고 프로그램을 다시 실행한다.
관련 용어
인터럽트 서비스 루틴(ISR, Interrupt Service Routine)
- 인터럽트 핸들러(Interrupt Handler)라고도 불린다.
- 실제 인터럽트를 처리하는 기계어 코드 루틴이다.
- 운영체제의 코드 영역에는 인터럽트별로 처리해야할 내용이 이미 프로그래밍 되어 있다.
인터럽트 벡터(IV, Interrupt Vector)
- 운영체제에 따라 인터럽트가 발생했을 때 ISR의 주소를 모아둔 테이블
Polling(폴링) vs Interrupt(인터럽트)
참고
728x90
728x90
'Computer Science > Operating System' 카테고리의 다른 글
Context Switching(컨텍스트 스위칭) (0) | 2023.03.07 |
---|---|
단기 스케줄러, 중기 스케줄러, 단기 스케줄러 (0) | 2023.03.07 |
Process Address Space(프로세스 주소 공간) (0) | 2023.03.07 |
Process(프로세스) (0) | 2023.03.07 |
System Call(시스템 콜) (0) | 2023.03.03 |