관리 메뉴

개발자비행일지

폴링(polling) 본문

▶Theory

폴링(polling)

Cyber0946 2021. 3. 24. 19:15

폴링(polling)이란 하나의 장치(또는 프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다. 이 방식은 버스, 멀티포인트 형태와 같이 여러 개의 장치가 동일 회선을 사용하는 상황에서 주로 사용된다. 서버의 제어 장치(또는 프로그램)는 순차적으로 각 단말 장치(또는 프로그램)에 회선을 사용하기 원하는지를 물어본다.

 

또한 이와 함께 아두이노 처럼 while loop() 안에서 thread() 형태로 동작하는 프로그램에서도 사용되는데 그 개념은 아래와 같다.

폴링(Polling)이란?

  • Loop() 내에서 반복적으로 외부 입력을 감시하는 문법 (절차지향적). 소프트웨어 구현이 간편하다는 장점이 있다.

인터럽트(Interrupt)?

  • 하드웨어에서 인터럽트는 GPIO 상태에 변화가 있을  사용된다. 프로그램 코드가 실행되고 있는 도중에 폴링처럼 루프가  때마다 매번 특정 버튼 상태를 감시하지 않으면서, 버튼 이벤트가 발생 했을  값을 변경하려고 하는 경우에 매우 유용하다.
  • Loop()문이 돌다가 어떤 event 생기면 원래 하던 loop문을 낮은 우선순위로 두고 원하는 프로세스를 실행한다는 개념이라고 보면 된다.
  • 인터럽트를 사용하면 프로그램 실행  어느 곳에서나 끼어들어 원하는 작업을 수행할  있다.

 

 

 

 

  • 인터럽트는 초인종에 비유할  있다. 집에서 여러가지 일을 수행하고 있는데, 누군가가 오기로 했다고 가정하자. 초인종이 없다면 다른 일을 하는 중간중간에 계속해서  밖을 확인해야만 한다. 그러나 초인종이 있다면 다른 일을 계속 하다가 초인종이 울리는 순간만을 기다리면 된다. 인터럽트도 일종의 그런 개념이다. 우선적으로 처리해야 Event 발생하면 그것을 프로그램 내부에서 인식해야 하는데,매번 loop문이  때마다 event 발생여부를 확인하지 않도록 인터럽트 기능을 사용하는 것이다.

 

  • 기본적으로 폴링과 인터럽트의 하드웨어 구성은 동일하다. (다만, 엣지트리거를 사용하려면 하드웨어 디바운싱 구현이 선행되어야 한다.)

 

  • 폴링과 하드웨어 인터럽트는 각각 장단점이 있기 때문에, 사용 목적에 따라 적합한 방법을 취하면 된다.

 

  • 컴퓨터의 입장에서 보았을 , 폴링 방식으로 매번 event 발생여부를 확인하는 것은 core 부담을 주는 것이 된다.

 

  • 그러나 모든 상황을 인터럽트 만으로 설계할  있을까? 다양한 event 인터럽트 개념을 도입하면 동시다발적으로 인터럽트가 발생했을 , 문제가   있다.