인터럽트

김하영·2023년 5월 22일
0

운영체제

목록 보기
7/13

정의

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

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

외부 / 내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생
소프트웨어 인터럽트는 명령어의 수행에 의해 발생

  • 외부 인터럽트 : 입출력 장치, 전원 등 외부적인 요인으로 발생.
    • 전원이상, 기계 착오, 외부신호, 입출력
  • 내부 인터럽트 : trap이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생
    • 0으로 나누기할 때, 오버플로우, 명령어 잘못 사용한 경우(Exception)
  • 소프트웨어 인터럽트 : 프로그램 처리 중 명령의 요청에 의해 발생 (SVC 인터럽트)
    • 사용자가 프로그램을 실행시키거나 감시프로그램(Supervisor)을 호출하는 동작을 수행하는 경우
    • 소프트웨어 이용 중 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 등의 동작이 수행된다

인터럽트 발생 처리 과정


주 프로그램이 실행되다가 인터럽트가 발생했다.

  1. 현재 수행중인 프로그램을 멈추고,
  2. 상태 레지스터와 PC 등을 스택에 잠시 저장한 뒤에
  3. 인터럽트 서비스 루틴으로 간다. (잠시 저장하는 이유는 인터럽트 서비스 루틴이 끝나고 나서 원래 작업으로 돌아와야 하기 때문이다.)
  4. 인터럽트 서비스 루틴을 수행하고 원래작업으로 돌아와 저장해두었던 곳부터 마저 작업을 진행한다.

만약 인터럽트 기능이 없다면, 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크를 해야한다(Polling).
폴링을 하는 시간에는 원래 하던 일에 집중할 수가 없게 되어 많은 기능을 제대로 수행하지 못하는 단점이 있다.

컨트롤러의 우선순위 판별법(입력을 받아들이는 방법)

  • 폴링 방식 (소프트웨어적 방식)
    사용자가 명령어를 사용해 입력 핀의 값을 계속 읽어 변화를 알아내는 방식

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

장점: 우선순위 변경이 쉽고, 회로가 간단하며 융통성이 있으며, 별도의 하드웨어가 필요 없다.
단점: 많은 인터럽트가 있을 경우 하드웨어적인 방법에 비해서 우선순위 판단 속도가 느리다.

  • 인터럽트 방식(하드웨어적 방식)
    MCU 자체가 하드웨적으로 변화를 체크하여 변화 시에만 일정한 동작을 하는 방식

    • Daisy Chain : 인터럽트가 발생하는 모든 장치를 하나의 직렬 회선으로 연결한다. 우선순위가 높은 장치를 상위에 두고 우선순위 차례대로 배치한다.
    • 병렬 우선순위 부여 : 각 장치마다 별개의 회선으로 연결한다. 각 장치별 우선순위를 판별하기 위한 Mask register에 bit를 설정한다. Mask register상 우선순위가 높은 서비스 루틴 수행중 우선순위가 낮은 bit들을 비활성화 시킬 수 있다. 반대로 우선순위가 높은 인터럽트는 낮은 인터럽트 수행 중에도 우선 처리된다.

장점 : 별도의 소프트웨어가 필요없이 하드웨어로 처리되므로 속도가 빠르다.소프트웨어적인 방법에 비해 비경제적이다.
단점 : 소프트웨어적인 방법에 비해 비경제적, 회로가 복잡하고 융통성이 없음.

인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능하다. 따라서 실시간 대응이 필요할 때는 필수적인 기능이다.
즉, 인터럽트는 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법이다.

참고 자료

https://raisonde.tistory.com/entry/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8Interrupt%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%A2%85%EB%A5%98

https://gyoogle.dev/blog/computer-science/operating-system/Interrupt.html

profile
백엔드 개발자로 일하고 싶어요 제발

0개의 댓글

관련 채용 정보