CS - Interrupt


1. 인터럽트 ??

  • CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다.
  • CPU는 한 순간에는 하나의 일 밖에 처리할 수 없고, 그 처리 순서에는 우선 순위가 존재한다.
    • 물론 CPU에는 코어라는게 있어서 여러가지 일을 한 번에 할 수 있지만, 코어도 보통 CPU라고 한다.
    • 코어는 하나당 한가지의 일만 한 순간에 할 수 있다.
  • 인터럽트는 A라는 작업 도중 더 중요한 B라는 작업이 들어온다면, A를 잠깐 끊고 B를 동작 시킨 뒤, 다시 A라는 작업을 진행하게 해주는 것을 말한다.


  • 스케쥴링을 예로 들 수 있다.
    • 스케쥴링은 프로세스 처리 순서를 관리하는 것을 말하며, 스케쥴링에는 선점형 스케쥴링이라는 것이 있다.
    • SRT나 RR 알고리즘이 대표적인 선점형 스케쥴러인데,
    • 이 중 RR을 예시로 들면 RR은 프로세스에 처리 시간을 할당하고, 그 시간 내에 처리 하지 못할 경우 다시 큐의 맨 뒤에 배치시킨 뒤 다음 프로세스 작업을 진행하는 알고리즘이다.
    • 이 때 이렇게 프로세스를 중단하고 교체하는 것 자체를 인터럽트의 한 종류라 할 수 있다.



2. 인터럽트의 종류

2.1. 외부 인터럽트 ( == 하드웨어 인터럽트 )

  • 전원 이상 인터럽트: 정전이나 전원이 이상이 있는 경우
  • 기계 고장 인터럽트: CPU등의 기능적인 동작 오류가 발생한 경우
  • 입출력 인터럽트(I/O Interrupt): 입출력의 종료 등의 이유로 CPU의 수행을 요청하는 인터럽트.
  • 타이머 인터럽트: 선점형 스케줄러를 위해 필요 ( 위에서 설명 한 RR, SRT 등의 알고리즘을 진행할 때 )


2.2. 내부 인터럽트 ( == 소프트웨어 인터럽트 )

  • 잘못된 명령이나 데이터를 사용할 때 발생하는 인터럽트이며, 0으로 나누는 경우가 대표적인 발생 예시이다.
  • 그리고 언더플로우나 오버플로우가 발생한 경우, 프로그램 상 오류가 발생한 경우 등
  • 이렇게 소프트웨어에서 문제가 발생할 경우 내부 인터럽트가 동작한다.






results matching ""

    No results matching ""