2012-06-07 3 views
2

내 응용 프로그램에서 아니오. 장치 (카메라, A/D, D/A 등)가 서버와 통신하고 있습니다. 모든 장치가 항상 작동해야하는 것은 아니므로 장치에 전력 소비를 절약하기위한 두 가지 옵션이 있습니다.Interupts 대 장치 폴링

1- 폴링을 수행합니다. 즉, 각 장치는 깨우기위한 값을 얻는 파일 내용을 주기적으로 계속 유지합니다. 자다. 깨우면 깨어나서 일합니다.

실제로이 장치는 잠자기 상태이지만 드라이버가 활성화되어 폴링됩니다.

2 인터럽트를 사용하여 필요할 때 장치를 깨울 수 있습니다.

나는가는 길과 이유를 결정할 수 없습니다. 이 점에 대해 누군가가 나를 깨우칠 수 있습니까?

플랫폼 : 윈도우 7 32 비트 인텔 Core2Duo

+1

분명히 인터럽트 구동 방식이 폴링보다 낫다. 왜냐하면 (.. 많은 이유로 ..). 이것을위한 플랫폼은 무엇입니까? – valdo

+0

Windows 7, 32 비트, Intel Core2Duo에서 실행 중 – gpuguy

답변

6

폴링에서 실행은 본질적으로 부정확하다. 목표 정확도가 높을수록 폴링이 낭비됩니다. 이상적으로는 인터럽트로 무언가를 할 수없는 경우에만 폴링을 고려해야합니다. 그렇지 않으면 인터럽트를 사용하는 것이 좋습니다.

예를 들어, 초당 여러 이벤트가 발생할 수 있지만 분당 하나의 이벤트에만 반응하려는 경우와 같이 의도적으로 무언가를 "제한"하려는 경우는 예외입니다. 이러한 경우 폴링과 인터럽트를 조합하여 인터럽트가 플래그를 설정하고 폴링이 플래그를 설정 한 경우에만 실제 작업을 수행하는 경우가 많습니다.

2

주기적으로 장비를 깨우려면 적합한 주파수로 폴링을해야합니다 (조금만보고 있기 때문에 항상 설정하기가 더 쉽습니다). 깨우는 이벤트가 비동기식이라면 코드와 전자 오버 헤드에도 불구하고 인터럽트 기반 아키텍처로 전환하려고합니다.

0

그럼 하드웨어 및 소프트웨어 atchitecture 및 소프트웨어의 복잡성에 따라 다릅니다. 폴링보다 인터럽트 메커니즘을 선택하는 것이 좋습니다.

폴링에서와 같이 컨트롤러가 계속 폴링하여 원하는 값을 사용할 수 있는지 확인하기 위해 계속해서 폴링합니다.

인터럽트 메커니즘을 사용하면 컨트롤러에서 다른 작업을 수행 할 수 있으며 인터럽트가 발생하면 ISR이 특정 필요에 따라 작업을 수행 할 수 있습니다.

관련 문제