1

인터럽트 대 순환 폴링을 연구하고 폴링을 기다릴 필요가없는 인터럽트의 장점을 배웠습니다. 폴링은 이벤트 주도 프로그래밍 또는 적어도 청취자와 비슷한 것처럼 보였습니다. 폴링은 입력 또는 출력을 청취하는 것과 같습니다. 폴링 (주기적 청취)과 이벤트 중심 프로그래밍 (소위 청취자와의 청취)간에 결정적인 차이점에 동의합니까?동일한 기술에 대해 폴링 및 이벤트 구동 프로그래밍이 다른 단어입니까?

답변

6

아니, 상당히 반대의 인터럽트 구동 프로그래밍은 이벤트 구동 프로그래밍이 하드웨어 수준에서 이루어지는 것과 거의 같습니다. 인터럽트 구동 코드와 이벤트 구동 코드는 코드를 실행하기 전에 이벤트를 기다리는 반면 폴링은 이벤트가 실제로 존재하는지 여부를 쿼리하려고 시도합니다.

그러나 인터럽트 및 이벤트 기반 프로그램은 일반적으로 폴링 양식을 사용하여 하위 수준에서 구현된다는 점에 유의해야합니다. 일반적으로 하드웨어에 있지만 일종의 폴링을 포함하지 않는 진정한 인터럽트 또는 이벤트 구동 시스템은 없습니다. 인터럽트의 경우, CPU는 실제로 클록주기마다 인터럽트 라인을 폴링하고, 일시 중지 된 스레드를 다시 시작하면 이벤트 소스 (일반적으로 드라이버)에 의해 인터럽트가 발생하므로 이벤트 구동 프로그래밍과 마찬가지로 실제로 인터럽트 라인을 폴링합니다.

인터럽트 및 이벤트 중심 프로그래밍은 실제로 폴링을 수행하는 것과 비교할 때 많은 장점이있는 폴링 방식입니다.

+0

하위 구현에서 폴링을 사용하는 것은 허위 진술이라고 말합니다. 그것은 정말로 달려 있습니다. 대부분의 하드웨어는 실제 인터럽트를 가지고있어 인터럽트가 활성화되면 문자 그대로 인터럽트를 발생시킵니다. CPU는 인터럽트 벡터 테이블에 지정된 루틴을 실행합니다. 폴링 필요 없음. – josaphatv

+2

@josaphatv : 하드웨어 수준에서 실제 인터럽트는 CPU가 클럭 사이클의 특정 지점에서 인터럽트 라인이 활성 상태인지 여부를 샘플링하는 회로를 포함합니다. 이것은 하드웨어 수준에서 구현 된 폴링의 한 형태입니다. CPU는 명령을 처리하는 중 자체를 인터럽트 할 수 없으며 인터럽트 할 수 없습니다. 이는 CPU가 일관성없는 상태로 남을 수 있기 때문입니다. –

+0

@LieRyan 나는 당신이 의미하는 것을 이해합니다. 그러나 신호가 우리가 Line 'L1'에서 말하려는 곳에서 CPU가 인터럽트 서비스 루틴으로 점프하게하는 회로를 가질 수 있습니까? CPU가이를 폴링하지 않아도됩니다. L1이 트리거되면 CPU 포인터가 사전 정의 된 위치로 점프합니다. 지능적인 회로 일뿐입니다. 이것은 가능하지 않습니까? CPU가 매 타임 슬라이스 후에 폴링 중이면 인터럽트 플래그가 설정되어 있는지 확인하기 위해 CPU 사이클을 낭비합니다. 하나의 인터럽트 라인 L1이 트리거되는 회로를 가짐으로써 명령 자체가 변경되어 CPU가 ISR로 점프합니다. – GandalfDGrey

1

폴링 및 인터럽트 처리는 이벤트를 찾는 두 가지 방법입니다. 또한 들어오는 이벤트를 처리하는 프로그램을 작성하는 이벤트 중심 프로그래밍과 모순되지도 않습니다.

관련 문제