폴링과 인터럽트는 CPU와 I/O 장치 사이의 통신이다.
Polling 방식
- 이벤트를 수행하라는 신호를 받았는지 안 받았는지를 주기적으로 검사하면서 그 신호를 받았을 때 이벤트를 실행하는 방식
- 특정 주기마다 스레드를 돌면서 시그널이 들어왔는지 확인하는 방식
- 소프트웨어적으로 시그널을 확인하는 것
장점
- 구현이 쉽다
- 우선순위 변경이 용이하다.
단점
- 특정 주기마다 계속 확인해야 하기 때문에 시스템의 리소스를 많이 먹는다.
- 정확한 타이밍에 시그널이 들어왔는지 확인하는 것이 불가하고 주기에 따른 오차가 있다.
Interrupt 방식
- 이벤트를 수행하라는 신호를 받으면 핸들러를 통해서 바로 이벤트를 수행하는 방식
- 외부의 인터럽트 핀에 신호가 들어오면 즉시 인터럽트 소스를 실행하고 다시 원래 코드로 돌아오는 방식
- 하드웨어적으로 시그널을 확인하는 것
- 커널의 Interrupt Handler가 Interrupt를 확인하고 Interrupt가 발생했다면 Interrupt Thread로 발생을 알려준다.
장점
- 시그널이 들어온 정확한 타이밍을 알 수 있으므로 반응 시간이 빠르다.
- Interrupt 발생시에만 처리를 하기 때문에 시스템 부하가 적다.
단점
- Polling 보다 구현이 복잡하다.