티스토리 뷰

인터럽트

프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 것을 말한다.

인터럽트의 종류

인터럽트의 정류는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나눌 수 있다.

  • 외부 인터럽트

    • 전원 이상 인터럽트(Power fail interrupt): 정전, 파워 이상 등
    • 기계 착오 인터럽트(Machine check interrupt): CPU의 기능적인 오류
    • 외부 신호 인터럽트(External interrupt)
      • 타이머에 의한 인터럽트: Preemptive 개념을 생각하면 된다. 자원이 할당된 시간이 다 끝난 경우이다.
      • 키보드로 인터럽트 키를 누른 경우: 대표적으로 Control + Alt + Delete
      • 외부장치로부터 인터럽트 요청이 있는 경우: I/O 인터럽트가 아닌 다른 개념이다!
    • 입출력 인터럽트 (I/O interrupt)
      • 입출력장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야 할 경우
      • 입출력 데이터에 이상이 있는 경우
  • 내부 인터럽트

    • 잘못된 명령이나 잘못된 데이터를 사용할 때 발생하여 Trap이라 부른다.
    • 프로그램 검사 인터럽트(Program check interrupt)
      • Division by zero
      • Overflow/Underflow
      • 기타 Exception
  • 소프트웨어 인터럽트 (SVC: SuperVisor Call)

    • 사용자가 프로그램을 실행시키거나 감시프로그램(Supervisor)을 호출하는 동작을 수행하는 경우
    • 소프트웨어 이용 중 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 등의 동작이 수행된다.

인터럽트 동작 순서

  1. 인터럽트 요청
  2. 프로그램 실행 중단 - 현재 실행중이던 Micro operation까지 수행한다. (CPU의 연산을 일시중지한다.)
  3. 현재의 프로그램 상태 보존 - PCB(Process Control Block), PC(Program Counter) 등
  4. 인터럽트 처리루틴 실행 - 인터럽트를 요청한 장치를 식별한다.
  5. 인터럽트 서비스 루틴 실행 - 인터럽트 원인을 파악하고 실질적인 작업을 수행한다. 처리기 레지스터 상태를 보존한다. 서비스 루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 또 재귀적으로 1~5를 수행한다.
  6. 상태 복구 - 인터럽트 발생 시 저장해둔 PC를 다시 복구한다.
  7. 중단된 프로그램 실행 재개 - PC의 값을 이용하여 이전에 수행중이던 프로그램을 재개한다

즉, INT(INTERRUPT)가 발생함과 동시에 INT 처리 코드가 실행된다. 이 처리 코드를 통상적으로 ISR(Interrupt Service Routine)이 작동하면서 코드가 완료될 때 까지 일시정지 하게 되는 것이다.

인터럽트 우선 순위

전원 이상(Power fail) > 기계 착오(Machine Check) > 외부 신호(External) > 입출력(I/O) > 명령어 잘못 > 프로그램 검사(Program check) > SVC(SuperVisor Call)

일반적으로 하드웨어 인터럽트가 소프트웨어 인터럽트보다 우선 순위가 높고 내부 인터럽트보다 외부 인터럽트가 우선 순위가 높다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함