ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Operating System - 인터럽트(Interrupt)
    Computer Science/Operating System 2022. 1. 5. 17:50

    인터럽트(Interrupt)

    인터럽트란?

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

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

     

    인터럽트의 종류

    ㆍ 인터럽트의 종류로는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트가 존재한다.

     

    외부 인터럽트

    전원 이상 인터럽트(Power Fail Interrupt) : 정전, 파워 이상으로부터 발생한 인터럽트

    ㆍ 기계 착오 인터럽트(Machine Check Interrupt) : CPU의 기능적인 오류로 인해 발생한 인터럽트

    ㆍ 외부 신호 인터럽트(External Interrupt) : 외부 장치로부터 인터럽트 요청이 있는 경우

    ㆍ 입출력 인터럽트(I/O Interrupt) : 입출력 장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야 할 경우

     

    내부 인터럽트

    ㆍ 잘못된 명령이나 잘못된 데이터를 사용할 때 발생하며 Trap이라 부른다.

    ㆍ 0으로 나누기 발생, 오버플로우 등이 있다.

     

    소프트웨어 인터럽트

    ㆍ 사용자가 프로그램을 실행시키거나 감시 프로그램을 호출하는 동작을 수행하는 경우 발생한다.

    ㆍ 소프트웨어 이용 중 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 등의 동작이 수행된다.


    인터럽트 발생 처리 과정

    요청 → 중단 → 보관 → 인터럽트 처리 → 재개

    ㆍ 인터럽트 처리는 위와 같이 크게 5단계로 나눌 수 있다. 좀 더 구체적인 처리 과정은 아래와 같다.

     

    1. 인터럽트 요청

    2. 프로그램 실행 중단

              현재 실행 중이던 Micro Operation까지 수행

    3. 현재 실행 중인 프로그램 상태 보관

              PCB(Process Control Block), PC(Program Counter)에 대한 정보를 저장

    4. 인터럽트 원인 판별

              인터럽트를 요청한 장치를 식별 인터럽트의 원인을 파악

              Interrupt Vector Table을 참조하여 호출할 Interrupt Service Routine 주소 값을 얻음

    5. Interrupt Service Routine 처리

              실질적인 인터럽트 처리 작업을 수행

              서비스 루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 재귀적으로 1~5번 과정 수행

              인터럽트 서비스 루틴을 실행할 때 인터럽트 플래그(IF)를 0으로 하면 인터럽트 발생을 방지할 수 있음

    6. 상태 복구

              상태 복구 명령어가 실행되면, PC를 다시 복원하여 이전 실행 위치로 복원

    7. 중단된 프로그램 실행 재개

              PCB의 값을 이용하여 이전에 수행 중이던 프로그램을 재개

     

    Interrupt Vector Table이란?

    인터럽트 벡터 테이블이란 여러 가지 인터럽트에 대해 해당 인터럽트 발생 시 처리해야 할 루틴의 주소를 보관하고 있는 테이블을 의미한다.

     

    Interrupt Service Routine

    인터럽트 서비스 루틴은 인터럽트 핸들러라고도 하며 실제 인터럽트를 처리하는 루틴으로, 실행 중이던 레지스터와 PC를 저장하여 실행 중이던 CPU의 상태를 보존하고 인터럽트 처리가 끝나면 원래 상태로 복귀하는 역할을 수행한다.


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

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

    ㆍ 특정 주기마다 스레드를 돌면서 시그널이 들어왔는지 확인하는 방식이다.

    ㆍ 작업 변환 시 소요되는 시간이 없다는 장점이 있다.

    ㆍ 특정 주기마다 계속해서 확인해야 하기 때문에 시스템의 리소스를 많이 먹는다는 단점이 있다.

    ㆍ 또한, 특정 주기마다 확인을 해야 하기 때문에 정확한 타이밍에 시그널이 들어왔는지 확인하는 것은 불가능하다.

     

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

    ㆍ 외부의 인터럽트 핀에 신호가 들어오면 즉시 인터럽트 소스를  실행하고 다시 원래의 코드로 돌아오는 방식이다.

    ㆍ 시그널이 들어온 정확한 타이밍을 알 수 있고, 인터럽트 발생 시에만 처리를 하기 때문에 시스템 부하가 적다.

    ㆍ 하지만, Polling 방식보다 구현이 어렵다는 단점이 있다.

     

    728x90

    댓글

Designed by Tistory.