'POLLING'에 해당되는 글 1건

  1. 2008.12.14 INTERRUPT PROCESSING VS. POLLING PROCESSING
2008. 12. 14. 00:07

INTERRUPT PROCESSING VS. POLLING PROCESSING

오늘은 인터럽트 처리 방식과 폴링 방식에 대해서 알아 봅시다.

폴링 처리 방식은 지속적으로 이벤트가 발생하는 것을 감시하고 발생한 이벤트에 따른 명령을 처리하는

것을 의미합니다. 그에 반해서 인터럽트 처리 방식은 비동기적인 이벤트가 발생하는 그 순간에서만

프로세서가 관심을 가지고 해당 인터럽트를 처리합니다. 위의 두 개념만 보아도 폴링 처리 방식이 이벤

트를 지속적으로 감시하기 때문에 인터럽트 처리 방식에 비해 비효율적이라는 것을 알 수 있습니다. 뿐

만 아니라 감시하고자하는 대상이 많아질수록 그에 대한 이벤트 처리는 응답성이 떨어지는 점도 단점이

라고 할 수 있습니다.

그럼에도 불구하고 폴링 처리 방식이 사용되는 이유는 인터럽트 처리 방식에 비해 경제적이기 때문입니

다. 인터럽트 방식은 내부 혹은 소프트웨어 인터럽트 뿐만 아니라 하드웨어 외부에서 발생하는 하드웨어

인터럽트를 처리하기 위한 디지털 회로 설계 및 인터럽트 제어 레지스터와 같은 부품들이 추가적으로 필

요합니다. 결국 처리해야 할 디바이스 장치가 많을 수록 그에 따른 인터럽트 처리를 위와 같은 이유로 하

드웨적으로 구현해야 하기 때문에 하드웨어 자체의 단가가 올라갈 수 밖에 없겠지요. 폴링 방식 자체는

하드웨어 뿐만 아니라 소프트웨어적으로도 그 구현이 가능합니다.


                                             <그림1> 폴링 방식과 인터럽트 방식의 비교
                              <폴링 처리 방식>                            <인터럽트 처리 방식>



                                      <폴링 처리 방식의 소프트웨어적인 구현>

while( TRUE )
{
      
RXD = RX_char_scan();

       if( RXD != 0x00 )
      
{

            
switch( RXD )
            
{
                   
case LED1_ON_OFF: Command; break;
                   
case LED2_ON_OFF: Command; break;
            
}

       }
}


이것은 마치 윈도우 프로그래밍에서 메시지 루프의 메시지 인출 방식을 GetMessage()와

PeekMessage()로 처리하는 것과 비슷한 메커니즘이라고 할 수 있습니다. GetMessage()와

PeekMessage()의 차이를 안다면 쉽게 이해가 될 수 있는 내용이겠지요.

Written by Sim-hyeon, Choe