운영체제 - 인터럽트

고태희·2022년 2월 16일
0

CS

목록 보기
7/20

인터럽트

개념

프로그램을 실행하는 도중에 예기치 않은 상황 발생 시, 실행중인 작업을 즉시 중단하고,
발생된 상황에 대해 우선처리가 필요함을 CPU에게 알리는 것.

폴링

인터럽트에 대해 알아보기 전, 인터럽트와 대비되는 개념인 폴링에 대해 간단히 알아보자.

폴링은 대상을 주기적으로 감시하여 상황이 발생한다면 해당처리 루틴을 실핼해 처리하는 방식이다.
폴링의 주기가 짧으면 성능에 부담이 생기며, 길면 실시간성이 떨어진다.

  • 폴링은 직접 감시하여 일을 처리하고, 인터럽트는 상대가 일을 처리해달라고 요청하는 것이므로, 대비되는 개념이다.
    -> 여기서 인터럽트는 필요할 때 신속하게 처리한다는 점에서 폴링보다 유리하다.

  • 폴링방식은 인터럽트 요청플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾아
    이에 맞는 인터럽트 서비스 루틴(ISR)을 수행한다.

  • 폴링은 특정 주기마다 계속 확인해야 하기 때문에 리소스를 많이 먹는다는 단점이 존재하고 주기에 따른 오차가 있다.
    하지만, 구현이 쉽다는 장점도 존재한다

종류

인터럽트는 크게, 외부/내부 인터럽트, SW인터럽트로 나뉜다..

  • 외부 인터럽트

    • 주로 입출력장치, 그리고 타이밍장치, 전원 등 외부적인 요인으로 발생하는 인터럽트
    • ex)
      서버가 갑자기 전원이 끊기면, 아찔하다. 파워공급이 떨어지는 것을 감지하여 CPU에게 전원이상인터럽트를 건다.
      그러면 여분의 배터리를 서버에게 줘서 바로 죽지 않고 문제를 해결하거나 복구될때까지 서버가 돌아갈 수 있도록 한다.
  • 내부 인터럽트(Trap)

    • 잘못된 명령이나 데이터의 사용으로 인하여 발생
    • 자기자신한테 거는 인터럽트, Exception
    • ex) DivisionByZero, Overflow 등..
  • SW 인터럽트

    • 프로그램 처리 중 명령의 요청에 의해 발생
    • 대표적인 형태는 SVC(Supervisor Call)
      - 사용자가 프로그램을 실행시킬 때 발생
      - SW 이용중에 다른 프로세스를 실행시키면 시분할 처리를 위해 자원하당 동작이 수행된다.


인터럽트 처리 과정

출처

인터럽트 처리 순서는 다음과 같다.

  1. 인터럽트 처리 요청 발생
  2. 프로그램 실행 중단
  3. 현재 프로그램 상태 보존 (Stack에 저장)
  4. 인터럽트 처리 루틴 실행 (문제파악)
  5. 인터럽트 서비스 루틴(ISR) 실행
  6. 중단된 프로그램 재실행

결론

인터럽트가 없다면 특정한 어떤 일을 할 시기를 알기 위해 계속 체크해야한다.(폴링방식) 이는 오버헤드의 증가를 일으키므로 성능저하의 원인이 된다.

0개의 댓글

관련 채용 정보