인터럽트, 폴링의 차이

Today Jeeho Learned·2022년 11월 8일
0

임베디드

목록 보기
3/3
post-thumbnail

INTRO

송신한것을 그대로 수신하는 시리얼통신을 c#을 통해서 어찌어찌 구현했는데, 자꾸 전송한 메세지가 제대로 수신이 되지 않아서 고민하고 여러가지 방법들을 사용해보았다. 그러던중에 과장님이 어떻게 동작하는지를 알려주셨고, 이벤트처리가 아니라 폴링에 의해서 응답값이 나올수있는 것을 한번 생각해보라고 하셔서 개념공부하면서 구현해보려고 한다.

인터럽트(Interrupt) 방식

  • 인터럽트는 새치기, 중단이라는 뜻으로, CPU가 프로그램을 실행하고 있을때, 입출력 어떠한 주변장치들의 입출력이나 하드웨어 문제가 발생하여 처리가 필요한 경우, 프로그램에서 예외 등이 발생했을때 CPU에게 이를 알려주는 방식이다.
  • 인터럽트 핀에 신호가 들어오면, 스택 공간에 실행중이던 주소번지를 저장하고, 인터럽트 서비스 루틴을 실행한다. 루틴을 마치면, 저장 되어 있던 스택에 작업중이였던 주소번지를 읽어 들여 다시 작업하는 곳으로 복귀해서 하던 일을 계속 이어 나가는 것이다.

폴링(Polling) 방식

  • 폴링은 대상을 주기적으로 감시하여 상황을 발생하면 해당 처리 루틴을 실행해 처리한다면, 인터럽트는 상대가 CPU에게 일을 처리해달라고 요청하는 수단이다. 폴링은 주기적으로 마이크로프로세서가 상태를 파악하기 위해 장치의 레지스터를 읽어야 하고, 이 작업이 진행되는 동안은 다른 장치의 체크는 힘들다.
  • 보통 While문과 같은 loop문으로 이어지는데, 계속해서 상태를 체크하면서,확인해야하기 때문에 소스를 군데 군데 상태를 체크할 수 있도록 코딩해야 한다.

정리

  • 둘다 어떤 작업을 수행시 외부에서 들어오는 이벤트에 의해서 어떤 작업을 수행하는 것이다.
  • 둘다 CPU와 입출력 장치의 통신 방식이다.
profile
기록해야 (살아)남는다 !

0개의 댓글