기록이 힘이다.

폴링과 인터럽트 본문

컴퓨터 공학/마이크로프로세서

폴링과 인터럽트

dev22 2022. 5. 28. 14:58
728x90

1. 폴링(Polling)

-정해진 시간 또는 순번에 상태 변화가 있는지를 Check

-프로그램 소스에 상태 체크를 위한 로직을 반복적으로 추가

-상태 변화가 있을 때 정해진 순서대로 처리: 타이밍을 놓치는 경우 발생

-비상사태(전원 차잔) 또는 급하게 처리해야 할 일에 대한 신속한 대응이 어려움

 

단점

폴링은 정해진 이벤트의 발생 여부를 계속 감시

감시 중 다른 일을 수행하지 못하므로 비효율적

Polling의 결과로 일을 수행할 때 또 다른 이벤트가 발생하면 처리가 어려움

 

 

2. 인터럽트(Interrupt)

-수행 도중 외부에서 정해져 있는 인터럽트 핀에 신호가 들어옴 ->MCU는 동작을 멈추고 해당 인터럽트 서비스 루틴을 실행

-사건이 발생할 때만 기능을 수행 -> 매우 효율적으로 비정규적인 이벤트에 대응할 수 있음

 

>> 인터럽트 처리 절차

1. 현재 실행 중인 명령어 실행 중지

2. 다음 실행 명령 주소를 Stack에 저장

3. 현재 레지스터 등의 상태 저장

4. 다른 인터럽트를 블럭시킴

5. ISR(Interrupt Service Routine)의 벡터 주소 적재

6. ISR 수행

7. 인터럽트로부터 프로그램 루틴으로 복귀 및 레지스터 복구

8. 명령 수행

 

>>인터럽트의 종류

하드웨어 인터럽트

내부 인터럽트

-MCU에 정의되지 않는 명령 실행

-Zero divide, access protected memory area: Atmega 128과 2560에는 없음(pin change interrupt는 2560에만 있음)

외부 인터럽트

-타이머의 지정 시간 경과, 입력 장치 서비스 요구, 출력장치 작업 종료, ADC 변환의 완료, DMA동작 종료 시 멀티프로세서 간의 통신 요구 등 마이크로프로세서와 독립되어 있는 외부 장치에 의해 발생되는 순수한 의미의 인터럽트

 

소프트웨어 인터럽트: 소프트웨어적으로 발생시키는 인터럽트