입출력의 상호작용을 할 때는 크게 3가지 방식이 존재한다. 오늘은 폴링을 먼저 알아보겠다.
폴링은 프로그램에 의한 입출력 방식이다. 데이터의 입출력이 CPU가 수행하는 프로그램의 입출력 명령에 의해 실행되고 입출력을 수행할 준비가 되었는지 알기 위해 CPU가 주변장치의 상태를 계속 감시한다.
폴링(Polling) 방식
CPU가 주변 입출력 장치들(키보드, 센서, LCD 등)에서의 변화를 지속적으로 계속 확인하고 그에 따라 프로그램을 처리하는 방식을 말한다. 프로그램은 쉽게 구현할 수 있지만 예를 들어 컴퓨터의 키보드를 폴링방식으로 구현한다고 생각해보자. 컴퓨터로 영화를 보고 있는데도 키보드를 치고 있는지 아닌지 계속 확인하는 작업을 한다면 CPU의 성능을 제대로 활용할 수 없다. 하지만 아두이노, AVR 등에서 간단한 프로젝트를 구현할 때는 코드를 작성하기 간편하다는 장점 때문에 폴링 방식을 사용하기도 한다. 폴링 방식이 꼭 나쁜 건 아니다. 나는 드론을 만들 때 자세 센서에서 계속 값을 읽어와야하는데, 폴링 방식으로 자세 센서와 상호작용했다.
장점
1. 정해진 순서에 의해 명령을 반복적으로 처리하므로 프로그램을 작성하고 이해하기 쉽다(소규모 프로그램을 작성할 때만).
단점
1. 입출력 장치들과의 상호작용을 폴링 방식으로 많이 할 수록 CPU를 점유하는 시간이 증가하기 때문에 성능이 크게 떨어진다.
2. 한 루프를 다 돌아야지만 상태 변화를 확인 할 수 있다. 즉, 정확한 타이밍에 인터럽트가 발생했는지 알 수 없고 폴링 루프가 길어질 수록 반응 속도가 늦어지거나 실행되지 않을 가능성이 높아진다.
실행시간이 아주 짧다면 괜찮지만 실행시간이 길고 복잡할 수록 폴링 방식은 비효율적이다.
'MCU 제어 > 개념' 카테고리의 다른 글
DMA 방식 (0) | 2020.02.15 |
---|---|
인터럽트(Interrupt) 방식 (0) | 2020.02.10 |
UART 통신 이론 (0) | 2020.02.02 |