본문 바로가기
Embedded SW/Embedded SW Introduction

03. 인터럽트(Interrupt)와 폴링(Polling) 이란 무엇일까?

by 방구석 임베디드 2021. 7. 14.
반응형

Embedded SW를 배우게 되면서, 가장 중요한 개념이 바로 폴링(Polling)과 인터럽트(Interrupt) 였습니다.

 

Polling 이란 무엇이고 Interrupt는 무슨 의미고, 이둘의 차이는 무엇이고

 

왜 Embedded SW에 인터럽트라는 동작이 필요하게 되었을까요?

 

Polling과 Interrupt에 대한 정의는 역시 위키백과만한 것이 없습니다.

마이크로프로세서에서 인터럽트(interrupt, 문화어: 중단, 새치기)란 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.[1][2][3]
폴링이 대상을 주기적으로 감시하여 상황이 발생하면 해당처리 루틴을 실행해 처리한다면, 인터럽트는 상대가 마이크로프로세서에게 일을 처리해 달라고 요청하는 수단이다. 따라서 폴링과 대비되는 개념이다.[4][5] 폴링은 주기적으로 마이크로프로세서가 상태를 파악하기 위해 장치의 레지스터를 읽어야 한다. 이 작업이 진행되는 동안은 다른 장치는 체크가 힘들다. 그리고 이런 작업은 장치의 상태를 읽는데 마이크로프로세서의 자원이 낭비된다.[6]

폴링과 인터럽트는 결국 CPU와 입출력 장치의 통신 방식입니다.

 

예를 들어서, CPU는 저 다리에 연결돤 전압을 계속 확인해야 하는 상황이라고 가정해 봐요!

저 신호가 다리중 빨강색으로 칠한 부분에 5V 전입이 들어오면!

에어백이 터져야 한다고한다면

계속 아중 신중하게 CPU는 저 다리의 전압을 확인해야 합니다.

그렇다면 아래와 같이 코드가 구현될 것입니다.

계속 신경을 써서 저 상태를 채크해야 합니다.

그리고 5V전압이 들어와서 pin_state가 1이 되면

airbag이 동작해야 합니다.

 

CPU는 저렇게 계속 확인을 할것입니다.

왜냐하면 언제 에어백이 터질지 모르느까!

그러고 보니 쓸데없는 로드가 계속 있습니다.

 

그런데 아래와 같은 시스템으로 동작을 하면 어떨까?

CPU는 계속확인하지 않고 다른일을 합니다.

그런데 저 핀에 5V 전압이 들어옵니다.

그것을 Interrupt Router라는 모듈로 전압이 들어옵니다.

이크 큰일 났구나 

CPU에게 알려주어야 겠네요.

인터럽트 라우터는 CPU에게 위험상황을 전기신호로 알려줍니다.

 

그러면 CPU는 main 함수에서 하던 동작을 멈추고

아래와 같이 약속된 ISR_Temp 함수를 동작시킵니다.

ISR_Temp에서는 바로 에어백을 터뜨립니다.

그리고 그것을 끝내고 다시 main함수로 돌아와서 계속 동작을 합니다.

이것이 인터럽트 방식입니다.

CPU는 계속 특정 입력신호를 계속 확인할 필요가 없습니다.

 

임베디드 시스템에서 인터럽트는 아주 중요합니다.

위와 같은 용도와 같이 입출력도 중요하고

 

내부적으로 Timer를 동작시켜, 기준 시간을 만드는 점에 있어서도 아주 중요합니다.

 

오늘 포스팅은 이렇게 마무리 할께요.

반응형

댓글