[CS - 운영체제] 인터럽트란?

Jo HangJoon·2022년 9월 22일
0

CS 공부

목록 보기
2/17

질문의 핵심

  • 인터럽트란?
  • 인터럽트 처리과정은?
  • 내부/외부 인터럽트는 어떤 상황인지?

1. 인터럽트

인터럽트(Interrupt)란

  • CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치 또는 예외상황이 발생하여 처리가 필요한 경우 CPU에게 알려 처리할 수 있도록 하는 것.

CPU가 어떤 프로그램을 순차적으로 수행하는 중에 외부로부터 인터럽트 요구가 들어오면, CPU는 원래 프로그램의 수행을 중단하고 인터럽트를 먼저 처리한다. 인터럽트 처리가 끝나면 원래의 프로그램으로 복귀하여 수행을 계속 한다. 인터럽트를 발생시키기 위해서는 CPU 내에 있는 인터럽트 라인을 세팅한다.

하드웨어 인터럽트

  • 하드웨어가 발생시키는 인터럽트.
  • CPU가 아닌 다른 하드웨어 장치가 CPU에 어떤 사실을 알려주거나 CPU 서비스를 요청해야할 경우 발생.

소프트웨어 인터럽트

  • 소프트웨어가 발생시키는 인터럽트.
  • 소프트웨어가 스스로 인터럽트 라인을 세팅함.

인터럽트 종류

외부 인터럽트

보통 외부 입출력장치에 의해 발생.

  • 전원 이상 인터럽트(Power fail Interrupt): 정전, 파워 이상 등의 경우.
  • 기계 착오 인터럽트(Machine Check Interrupt): CPU의 기능적인 오류의 경우.
  • 외부 신호 인터럽트(External Interrupt): 타이머 인터럽트(자원이 할당된 시간이 다 끝난 경우), 키보드 인터럽트(Control + Alt + Delete), 외부장치 인터럽트
  • 입출력 인터럽트(I/O Interrupt): 입출력 장치가 데이터 전송을 요구하거나 다음 동작이 수행되어야 할 경우, 입출력 데이터에 이상이 있는 경우.

내부 인터럽트

잘못된 명령이나 잘못된 데이터를 사용할 때 발생, Trap이라고도 함.

  • 프로그램 검사 인터럽트(Program Check Interrupt): 0으로 나눈 경우, Overflow/Underflow, 기타 예외 경우.

소프트웨어 인터럽트

프로그램 처리 중 명령 요청에 의해서 발생.

  • SVC(SuperVisor Call): 사용자가 프로그램을 실행시키거나 감시프로그램을 호출하는 동작을 수행한 경우, 복잡한 입출력 처리를 한 경우.

인터럽트 처리 과정

  1. 인터럽트 발생
  2. 프로그램 중단 및 상태보관 - 현재 실행하던 프로세스를 중단하고 PC(Prgoram Counter), PCB를 자동 저장한다.
  3. 인터럽트 처리 루틴 실행 - 인터럽트를 요청한 장치를 식별한다.
  4. 인터럽트 서비스 루틴 실행 - 인터럽트 원인을 파악하고 실질적인 작업을 수행한다.
  5. 프로그램 상태 복구 및 재실행 - 저장해둔 PC를 복구하여 이전에 수행중이던 프로그램을 재개한다.

인터럽트 우선순위

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

  1. 전원 이상
  2. 기계 착오
  3. 외부 신호
  4. 입출력 신호
  5. 명령어 잘못
  6. 프로그램 검사
  7. SVC

참조

0개의 댓글