ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 질문 정리 ( Interrupt / Interrupt vs Polling / Edge Trigger vs Level Trigger )
    면접 준비/컴퓨터구조 2018. 11. 21. 00:18

    1. 인터럽트(Interrupt)란?


    인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다.

    CPU에 인터럽트가 걸리면 CPU는 현재 수행하던 작업에 대한 정보를 저장한 후 인터럽트 서비스 루틴(ISR)을 수행한다.

    인터럽트 처리를 마치면 이전에 수행하던 작업을 진행한다.


    인터럽트는 크게 두개로 나뉜다.

    1) 외부 인터럽트 : 입출력 장치, 타이밍 장치, 전원 등의 외부적인 요인에 의해서 발생

    2) 내부 인터럽트 : 잘못된 명령이나 데이터를 사용할 때 발생하는 인터럽트


    2. 인터럽트 우선 순위


    동시에 여러 인터럽트가 발생하면 우선 순위를 정해서 하나씩 처리해야한다.

    -> 생각하던 것과 마찬가지로 중요한 인터럽트가 우선적으로 처리 되어야한다.


    우선 순위를 결정하는 방법은 소프트웨어적인 방법과 하드웨어적인 방법이 있다.


    1) 소프트웨어적인 방법 : Polling(폴링) 


    + 인터럽트 요청 플래그를 차례로 검사하여 가장 높은 우선순위의 자원부터 서비스 루틴을 수행

    + 반응 시간이 느리다. -> 모든 인터럽트를 조사

    + 회로가 간단 -> 융통성

    + 별도의 하드웨어가 없기 때문에 경제적이다.


    2) 하드웨어적인 방법 : Vectored Interrupt(벡터 인터럽트)


    + 인터럽트를 요청할 수 있는 장치에 버스를 직렬 또는 병렬로 연결하여, 인터럽트 요청 장치의 번호를 CPU에게 알리는 방식


    - 병렬 연결 방식 : 각 장치를 개별적인 회선으로 연결, Mask Register의 비트 위치에 의해 우선순위 결정

     높은 우선순위 서비스시 낮은 우선순위 비활성화 기능


    - 직렬 연결 방식(데이지 체인/Daisy Chain) : 모든 장치를 하나의 회선에 직렬 연결, 우선순위가 높은 장치 순으로 선두에 위치시켜 연결



    3. Interrupt vs Polling 


    Interrupt와 Polling 모두 어떤 Event에 대한 프로세스의 반응 방식이다.


    Interrupt :

    HW 적으로 구성되어 있어서 원하는 값이 들어오면 등록된 함수를 호출하게 된다. -> CPU가 Sleep에 들어가 있을 때만 사용할 수 있다.

    CPU가 어떤 다른 연산을 수행하고 있던 중이라도 특정 Event가 발생할 경우 그 즉시 연산을 멈추고 발생한 Event를 처리하기 위한 연산을 수행한다. 그리고나서 Event 수행이 끝나면 다시 이전의 프로세스로 돌아가 연산을 수행한다.


    Polling :

    SW 적으로 주기적으로 값을 읽어가는 방식이다. -> CPU가 항상 깨어 있을 때만 사용할 수 있다.

    CPU가 특정 Event를 처리하기 위해 그 Event가 발생 할 때 까지 모든 연산을 해당 Event가 발생하는지 감시하는데 쓰인다.


    4. Edge Trigger vs Level Trigger


    특정 타이밍에서 특정한 일을 처리하기 위해 트리거를 활용한다. 

    트리거는 일반적으로 2개로 나누어 사용할 수 있다.


    Edge Trigger

    인터럽트가 발생해서 레벨이 상승(Rising)하거나 하강(Falling)할 때 발생

    상승 엣지와 하강 엣지 두 경우가 있다.

    즉, 어떤 특정한 일이 발생하는 '순간','찰나'에만 발생한다.


    Level Trigger :

    인터럽트가 발생해서 그 레벨이 인가될 때 발생

    하이 레벨과 로우 레벨 두 경우가 있다.

    즉, 어떤 특정한 일이 발생하고 있는 '동안'에 발생한다.







Designed by Tistory.