My Boundary As Much As I Experienced

인터럽트(Interrupt)란? 본문

Computer Basics

인터럽트(Interrupt)란?

Bumang 2023. 8. 22. 08:09

인터럽트(Interrupt)란?


인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 발생한다.

지금 수행 중인 일보다 더 중요한 일(ex. 입출력, 우선 순위 연산 등)이 발생하면 그 일을 먼저 처리하고 나서 하던 일을 계속해야한다.

 

인터럽트의 종류


외부 인터럽트

  • 전원 이상 인터럽트: 정전이나 전원이 이상이 있는 경우
  • 기계 고장 인터럽트: CPU등의 기능적인 동작 오류가 발생한 경우
  • 외부 신호 인터럽트(External interrupt)
    • 타이머가 끝난 경우
    • 키보드로 인터럽트 키를 누른 경우 : 대표적으로 Control + Alt + Delete
    • 외부장치에서 인터럽트 요청이 있는 경우
  • 입출력 인터럽트(I/O Interrupt): 입출력의 종료 등의 이유로 CPU의 수행을 요청하는 인터럽트.
    • 입출력장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야 할 경우
    • 입출력 데이터에 이상이 있는 경우

내부 인터럽트

  • Trap이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생
  • 0으로 나누기, 참조 오류
  • 오버플로우가 발생했을 때
  • 등등 프로그램 상의 에러가 났을 때

 

  • 문제적 프로세스가 시스템 콜 system call을 통해 인터럽트를 발생시킨다.
  • CPU는 현재 진행 중인 기계어 코드를 완료한다. (지금 하던 것만 저장)
  • 현재까지 수행중이었던 상태를 해당 process의 PCB(Process Control Block)에 저장한다. (수행중이던 MEMORY주소, 레지스터 값, 하드웨어 상태 등...), PC(Program Counter, IP)에 다음에 실행할 명령의 주소를 저장한다.
  • 인터럽트 벡터를 읽고 ISR 주소값을 얻어 ISR(Interrupt Service Routine)로 점프하여 루틴을 실행한다.
  • 해당 코드를 실행한다.
  • 해당 일을 다 처리하면, 대피시킨 레지스터를 복원한다. (PC, PCB에 있는거 복구)

 

 

인터럽트 우선순위

여러 장치에서 인터럽트가 동시에 발생하거나 인터럽트 서비스 루틴 수행 중 인터럽트가 발생했을 경우 우선순위를 따져서 처리한다.

 

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

 

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

 

 

 

인터럽트 우선순위 판별 방법

소프트웨어적인 방법(Polling)

  • 인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾고, 이에 해당하는 인터럽트 서비스 루틴을 수행한다.
  • 속도가 따른 장치에 높은 등급을 부여한다.
  • 우선순위 변경이 쉽다.
  • 많은 인터럽트가 있을 경우 하드웨어 적인 방법에 비해서 우선순위 판단 속도가 느리다.
  • 회로가 간단하고 융통성이 있으며, 별도의 하드웨어가 필요 없다.

 

하드웨어적인 방법(Vectored Interrupt)

인터럽트를 요청할 수 있는 장치와 CPU사이에 장치번호를 식별할 수 있는 버스를 직렬/병렬로 연결한다.

인터럽트 벡터는 인터럽트를 발생한 장치가 분기할 곳에 대한 정보이다.

소프트웨어적인 방법에 비해 비경제적이다.

  • Daisy chain
    • 인터럽트가 발생하는 모든 장치를 하나의 직렬 회선으로 연결한다.
      우선순위가 높은 장치를 상위에 두고 우선순위 차례대로 배치한다.
      => 즉, 인터럽트 발생하는거를 queue에 넣듯이 일직선으로 넣고 처리하라는거 아닌가?
    • 각 장치별 우선순위를 판별하기 위한 Mask register에 bit를 설정한다.

 

 

'Computer Basics' 카테고리의 다른 글

PCB 와 Context Switching  (0) 2023.08.29
시스템 콜(System Call)  (0) 2023.08.22
운영체제(Operating System)란?  (0) 2023.08.07
ARM 프로세서란?  (0) 2023.08.07
패리티 비트(Parity Bit)와 해밍코드(Hamming Code)  (0) 2023.08.01