ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터럽트(Interrupt)
    컴퓨터 2021. 4. 14. 20:12
    반응형

    인터럽트란?

     인터럽트(Interrupt)란 "방해하다"라는 뜻으로 마이크로 컨트롤러는 여러 가지 일을 처리해야만 하고 동시에 처리할 수 없는 일들을 순서대로 하나씩 처리해야 한다. 그러나 지금 하고 있는 일보다 긴급한 일(또는 중요한 일)이 발생하면 그 일을 먼저 처리해주고 나서 하던 일을 계속하게 되는 것이다. 이러한 긴급한 일을 인터럽트라 한다.

     일의 경중에 따라 인터럽트 중요도(Priority)가 결정되고, 현재하고 있는 일과 비교해서 우선순위 처리를 판단하게 된다. 요기서의 인터럽트 때의 할 일이 인터럽트 서비스 루틴(ISR:Interrupt Service Routine)이다.

     인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉘는데 일반적으로 하드웨어 인터럽트를 가리키는 경우가 많고 후자를 SWI(Software Interrupt)라고 한다.

    인터럽트가 필요한 이유

     입출력 연산은 CPU 명령수행 속도보다 현저히 느리기 때문이다. 상대적으로 속도가 너무 느린 입출력 연산을 CPU가 기다리게 된다면 효율이 너무 떨어지게 된다. 그래서 운영체제는 연산 결과가 나올 때까지 CPU에 다른 일을 수행하도록 하고, 연산 작업이 끝나면 작업 완료를 알려 CPU가 다시 해당 작업을 이어서 할 수 있도록 한다. CPU의 수행능력을 극대화하는데 꼭 필요한 기능이다.

    하드웨어 인터럽트

     하드웨어 인터럽트는 CPU 외부의 디스크 컨트롤러나 주변장치로부터 요구되는 것으로, 운영체제의 처리를 요하는 상황을 알리기 위해 전기적인 신호를 사용해 구현된다.

     

    하드웨어 인터럽트가 방생하는 예

     1. 기계검사 인터럽트 : 프로그램을 실행하는 도중 갑작스런 정전이나 컴퓨터 자체 내에서 기계적인 문제가 발생하는 경우

     2. 외부 인터럽트 : 오퍼레이터나 타이머에 의해 의도적으로 프로그램이 중단되는 경우

     3. 입출력 인터럽트 : 입출역의 종료나 입출력의 오류에 의해 CPU의 기능이 요청되는 경우

     4. 프로그램 검사 인터럽트 : 프로그램 실행 중 보호된 기억공간 내에 접근하거나 불법적인 명령 수행과 같은 프로그램의 문제가 발생한 경우

    소프트웨어 인터럽트

     소프트웨어 인터럽트는 외부가 아닌 CPU 내부에서 자신이 실행하는 명령이나 CPU의 명령 실행에 관련된 모듈이 변화하는 경우 발생한다.

     프로그램 실행 중 프로그램 상의 처리 불가능한 오류나 이벤트를 알리기 위한 경우 발생하는데, 이를 트랩(trap) 또는 예외(exception)라 부른다. 또한 프로그램 내에서 특별한 서비스를 요구하거나 감시(Supervisor)를 목적으로 의도적으로 프로그램이 발생시킨 특별한 명령에 의해 발생되기도 한다.

     

    소프트웨어 인터럽트가 발생하는 예

     1. 존재하지 않는 메모리 주소에 접근하는 경우

     2. 0으로 나눗셈을 하려고 하는 경우

     

    728x90

    댓글

Designed by Tistory.