일부 데이터 레지스터를 주기적으로 확인하는 프로세서의 질문에서 설명한 방법이 사용되고 이라는 메시지가이라고합니다. 폴링은 구현이 간단하기 때문에 더 간단한 시스템에서 종종 사용되지만, 거기에 있거나 없을 수도있는 데이터를 확인하는 CPU 사이클을 낭비하는 단점이 있습니다.
실제로 최신 운영 체제에서는 이라는 CPU 하드웨어 기능을 사용하지만 OS의 스케줄러와 함께을 인터럽트합니다. 네트워크에서 데이터를 가져 오는 예제에서 프로그램은 네트워크에서 데이터가 수신 될 때까지 대기하는 일부 차단 읽기 호출을 사용합니다. 읽기 호출이 이루어지면 호출 프로그램은 완전히 실행을 멈추고 OS 스케줄러는 데이터가 수신 될 때까지 프로그램을 일시 중단 된 상태로 유지합니다.
(패킷이 수신 될 때까지) 실행을 멈추고 싶어하는 프로그램 신호는 종종 세마포 (semaphore) (또는 유사한 상호 배타 메커니즘)라고하는 소프트웨어 구조를 사용합니다. 그러나, 네트워킹 코드의 경우, 세마포어는 프로그래머에 의해 직접 액세스되지 않는다.
네트워크 카드가 패킷을 수신하면 네트워크 카드는 패킷을 어딘가에 RAM에 저장합니다. 이 작업이 완료되면 네트워크 카드가 CPU에 인터럽트를 트리거합니다. 인터럽트 (일반적으로)는 현재 실행중인 프로그램이 무엇이든간에 CPU가 실행을 멈추게하고 CPU는 네트워크 활동 처리와 관련된 커널 코드를 실행합니다. 이 경우 수신 된 패킷을 데이터 수신을 대기중인 프로그램으로 보냅니다.
마지막으로, 커널은 세마포어를 사용하여 패킷이 수신되었다는 신호를 보냅니다. 그런 다음 커널은 네트워크에서 데이터를 기다리는 프로그램을 "깨우기"위해 스케줄러를 갖습니다. 프로그램은 데이터를 처리 한 다음 네트워크에서 다음 데이터 세트를 기다릴 수 있습니다.
자세한 내용을 보려면 인터럽트, 일정 및 세마포를 읽는 것이 좋습니다. 이러한 기술은 단순한 네트워킹 그 이상의 의미로 사용됩니다. 비슷한 접근 방식으로 많은 다른 입출력 장치가 액세스됩니다.
인터럽트 또는 폴링 특히 쉽게 나열 할 수있는 문서가 너무 많습니다. 주제가 너무 광범위하고 정보를 쉽게 이용할 수 있습니다. –
참고 사항 [Wikipedia : Polling] (https://en.wikipedia.org/wiki/Polling_ (computer_science)) 및 [Wikipedia : Interrupt] (https://en.wikipedia.org/wiki/Interrupt) – xmojmr