폴링 (컴퓨터 과학)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
폴링(Polling)은 컴퓨터나 제어 장치가 외부 장치의 상태를 확인하기 위해 대기하는 프로세스이다. 주로 하위 수준 하드웨어에서 사용되며, 장치가 준비될 때까지 반복적으로 상태를 확인한다. 폴링 방식은 단순한 시스템에서 사용되지만, 확인해야 할 장치가 많을 경우 I/O 장치 서비스 시간을 초과할 수 있다는 단점이 있다. 폴링에는 롤콜 폴링과 허브 폴링이 있으며, 인터럽트 방식에 비해 프로세서 사용량 및 대역폭 소비가 많을 수 있다. 폴링은 운영체제, 네트워킹, 통신 시스템 등 다양한 분야에서 활용된다.
더 읽어볼만한 페이지
- 이벤트 (컴퓨팅) - 메시지 큐
메시지 큐는 프로세스나 스레드 간 비동기 통신을 제공하여 송신자와 수신자가 동시에 상호 작용할 필요 없이 메시지를 교환하도록 하며, 메시지는 수신자가 검색할 때까지 저장되고 시스템 장애 시 복원력을 제공하지만 보안 취약점, 특정 기업 종속성 등의 논란도 존재한다. - 이벤트 (컴퓨팅) - 비동기 입출력
비동기 입출력은 입출력 완료를 기다리지 않고 다른 작업을 처리하는 방식으로, 완료 시 콜백이나 시그널을 통해 결과를 알려주어 효율적인 자원 활용과 성능 향상을 가져다준다. - 입출력 - 터치 타이핑
터치 타이핑은 키보드를 보지 않고 손가락 위치를 기억해 타이핑하는 기술로, 효율적인 방법으로 알려져 있으며 꾸준한 연습으로 속도와 정확성을 향상시킬 수 있다. - 입출력 - 입력
입력은 컴퓨터에 정보나 명령을 전달하는 방식으로, 키보드, 마우스, 스캐너, 음성 입력 장치, 게임 컨트롤러 등 다양한 장치를 통해 이루어지며 '가져오다' 또는 '읽어 들이다'와 같은 의미로도 사용된다. - 컴퓨터 주변기기 - 모뎀
모뎀은 디지털 신호를 아날로그 신호로 변환하여 데이터를 전송하고 수신하는 장치이며, 전화선, 케이블, 무선 통신 회선을 통해 통신하며 다양한 종류로 발전해 왔다. - 컴퓨터 주변기기 - 팩시밀리
팩시밀리는 문서나 그림을 전기 신호로 원격 전송하고 복제하는 기술 및 장치이며, 유선, 무선, 전화선을 이용한 전송 방식으로 발전해왔고, 기술적 분류를 거쳐 소형화, 고속화되었으며, 21세기에는 사용량이 감소했으나 특정 분야에서 활용된다.
폴링 (컴퓨터 과학) |
---|
2. 폴링의 동작 방식
폴링은 바쁜 대기와 같은 의미로 사용되기도 한다. 이 방식에서는 I/O 작업이 필요할 때, 컴퓨터는 I/O 장치가 준비될 때까지 장치의 상태를 계속 확인한다. 즉, 컴퓨터는 장치가 준비될 때까지 기다린다. 다른 방식으로는, 장치의 준비 상태를 반복적으로 확인하다가 준비되지 않은 경우 컴퓨터가 다른 작업으로 돌아가는 경우가 있다. 이 경우 CPU 사이클을 바쁜 대기만큼 낭비하지는 않지만, 인터럽트 기반 I/O만큼 효율적이지는 않다.
단순한 단일 목적 시스템에서는 I/O 접근 전에 다른 작업을 할 수 없다면 바쁜 대기 방식도 적합하다. 하지만, 이는 단순한 하드웨어나 멀티태스킹을 지원하지 않는 운영 체제에서 주로 나타난다.
2. 1. 기본 원리
폴링(Polling)은 컴퓨터 또는 제어 장치가 외부 장치의 준비 상태나 상황을 확인하기 위해 대기하는 프로세스로, 주로 하위 수준 하드웨어에서 사용된다. 예를 들어, 프린터가 병렬 포트를 통해 연결되어 있을 때, 컴퓨터는 프린터가 다음 문자를 받을 준비가 될 때까지 기다린다. 이러한 프로세스는 한 비트를 읽는 것만큼 간단할 수 있다. 이는 '바쁜 대기' 폴링과 같은 의미로 사용되기도 한다. I/O 작업이 필요한 상황에서, 컴퓨터는 I/O 장치가 준비될 때까지 장치의 상태를 확인하는 것 외에 다른 작업을 하지 않고, 준비되면 장치에 접근한다. 즉, 컴퓨터는 장치가 준비될 때까지 기다린다. 폴링은 장치의 준비 상태를 반복적으로 확인하고, 준비되지 않으면 컴퓨터가 다른 작업으로 돌아가는 상황을 의미하기도 한다. CPU 사이클을 바쁜 대기만큼 낭비하지는 않지만, 일반적으로 폴링의 대안인 인터럽트 기반 I/O만큼 효율적이지는 않다.단순한 단일 목적 시스템에서는 I/O 접근 전에 다른 작업을 할 수 없다면 바쁜 대기조차도 완벽하게 적합할 수 있지만, 이는 보통 단순한 하드웨어나 멀티태스킹이 아닌 운영 체제의 결과인 경우가 많다.
폴링은 종종 매우 하위 수준 하드웨어와 밀접하게 관련되어 있다. 예를 들어, 병렬 프린터 포트를 폴링하여 다른 문자를 받을 준비가 되었는지 확인하려면 바이트의 비트 하나만 검사하면 된다. 해당 비트는 읽는 시점에 프린터 케이블의 단일 와이어가 낮은 전압인지 높은 전압인지를 나타낸다. 이 바이트를 읽는 I/O 명령어는 8개의 실제 와이어의 전압 상태를 CPU 레지스터의 한 바이트를 구성하는 8개의 회로(플립플롭)로 직접 전송한다.
폴링은 확인해야 할 장치가 너무 많으면, 장치를 폴링하는 데 필요한 시간이 I/O 장치를 서비스하는 데 사용할 수 있는 시간을 초과할 수 있다는 단점이 있다.
2. 2. 알고리즘
호스트 동작:# 호스트는 컨트롤러의 사용 중 비트가 0이 될 때까지 반복적으로 읽는다.
# 사용 가능하면, 호스트는 명령을 명령 레지스터에 쓴다. 호스트가 출력을 전송하는 경우, 쓰기 비트를 설정하고 데이터 출력 레지스터에 바이트를 쓴다. 호스트가 입력을 수신하는 경우, 컨트롤러가 쓴 데이터를 데이터 입력 레지스터에서 읽고, 다음 명령으로 읽기 비트를 0으로 설정한다.
# 호스트는 명령 준비 비트를 1로 설정한다.
컨트롤러 동작:
# 컨트롤러는 명령 준비 비트가 설정된 것을 감지하면, 사용 중 비트를 1로 설정한다.
# 컨트롤러는 명령 레지스터를 읽는다. 내부 쓰기 비트가 설정되면, 데이터 출력 레지스터에서 읽고 장치에 필요한 입출력 작업을 수행한다. 읽기 비트가 설정되면, 장치에서 온 데이터가 호스트가 읽을 수 있도록 데이터 입력 레지스터에 로드된다.
# 작업이 끝나면, 컨트롤러는 명령 준비 비트를 지우고, 작업이 성공했음을 나타내기 위해 오류 비트를 지우고, 사용 중 비트를 지운다.[1]
2. 3. 하드웨어 수준의 폴링
폴링은 주로 하위 수준 하드웨어와 밀접하게 관련된다. 예를 들어, 병렬 포트로 연결된 프린터가 다른 문자를 받을 준비가 되었는지 확인하기 위해 폴링을 사용한다면, 바이트의 비트 하나만 검사하면 된다. 이 비트는 읽는 시점에 프린터 케이블의 단일 와이어가 낮은 전압인지 높은 전압인지를 나타낸다. 해당 바이트를 읽는 명령어는 8개의 실제 와이어 전압 상태를 CPU 레지스터의 한 바이트를 구성하는 8개의 회로(플립플롭)로 직접 전송한다.폴링은 확인해야 할 장치가 너무 많으면, 장치를 폴링하는 데 필요한 시간이 I/O 장치를 서비스하는 데 가용할 수 있는 시간을 초과할 수 있다는 단점이 있다.
3. 폴링의 종류
'''폴링 주기'''는 각 요소가 한 번씩 모니터링되는 시간이다. 최적의 폴링 주기는 응답 속도, 오버헤드(예: 프로세서 시간 및 대역폭) 등 여러 요인에 따라 달라진다.[1]
폴링에는 롤콜 폴링과 허브 폴링(토큰 폴링)등이 있다. 롤콜 폴링은 폴링 장치 또는 프로세스가 정해진 순서대로 각 요소를 질의하는 방식이고, 허브 폴링은 각 요소가 순서대로 다음 요소를 폴링하는 방식이다.[1]
폴링은 관련된 요소의 실행 또는 전송 순서를 제어하는 데 사용될 수 있다. 예를 들어, 멀티태스킹 운영 체제에서 폴링은 프로세서 시간 및 기타 리소스를 할당하는 데 사용될 수 있다. 네트워크에서 폴링은 어떤 노드가 네트워크에 접근하려는지를 결정하는 데 사용된다. 또한, 라우팅 프로토콜에서 라우팅 정보를 검색하는 데 사용되는데, 이는 EGP의 경우와 같다.
폴링의 대안은 인터럽트를 사용하는 것이다. 인터럽트는 장치나 프로세스에서 생성된 신호로, 주의가 필요하거나 통신을 원한다는 것을 나타낸다. 폴링은 매우 간단하지만, 많은 상황(예: 멀티태스킹 운영 체제)에서 인터럽트를 사용하는 것이 프로세서 사용량 및/또는 대역폭 소비를 줄일 수 있어 더 효율적이다.[1]
3. 1. 롤콜 폴링 (Roll-call Polling)
롤콜 폴링에서 폴링 장치 또는 프로세스는 고정된 순서로 목록의 각 요소를 질의한다. 각 요소로부터 응답을 기다리기 때문에, 응답하지 않는 요소로 인한 잠금(lock-up)을 방지하기 위해 타이밍 메커니즘이 필요하다.[1] 폴링 메시지에 대한 오버헤드가 높고, 각 폴링 주기에 폴링할 요소가 많으며, 활성 요소가 소수일 경우 롤콜 폴링은 비효율적일 수 있다.[1]3. 2. 허브 폴링 (Hub Polling)
허브 폴링은 토큰 폴링이라고도 하며, 각 요소가 고정된 순서로 다음 요소를 폴링한다. 이 과정은 첫 번째 요소에 도달할 때까지 계속되며, 이때 폴링 주기가 다시 시작된다.[1]4. 폴링과 인터럽트
폴링은 다양한 컴퓨팅 환경에서 요소들의 실행 또는 전송 순서를 제어하는 데 사용된다. 예를 들어, 멀티태스킹 운영 체제에서는 여러 프로세스에 프로세서 시간과 기타 자원을 할당할 때 폴링을 사용할 수 있다.
네트워크에서 폴링은 어떤 노드가 네트워크에 접근하려는지 결정하는 데 사용된다. 또한, EGP와 같은 라우팅 프로토콜에서 라우팅 정보를 얻는 데에도 사용된다.[1]
인터럽트는 폴링의 대안이다. 인터럽트는 장치나 프로세스가 보내는 신호로, 주의가 필요하거나 통신을 원한다는 것을 알린다. 폴링은 매우 간단하지만, 많은 경우(예: 멀티태스킹 운영 체제) 인터럽트를 사용하는 것이 프로세서 사용량이나 대역폭 소비를 줄일 수 있어 더 효율적이다.[1]
4. 1. 폴링 vs 인터럽트
폴링은 컴퓨터나 제어 장치가 외부 장치의 준비 상태나 상태 변화를 확인하기 위해 대기하는 방식이며, 주로 하위 수준 하드웨어에서 사용된다. 예를 들어, 프린터가 병렬 포트로 연결된 경우, 컴퓨터는 프린터가 다음 문자를 받을 준비가 될 때까지 기다린다. 이러한 과정은 한 비트를 읽는 것처럼 간단할 수 있으며, 이를 '바쁜 대기' 폴링이라고도 한다. 이 방식에서는 I/O 작업이 필요할 때 컴퓨터는 장치가 준비될 때까지 계속 상태를 확인하며, 준비되면 접근한다. 다른 방식으로는, 장치가 준비되지 않으면 다른 작업을 수행하다가 주기적으로 다시 확인하는 방식도 있다. 이는 바쁜 대기보다는 CPU 사이클을 덜 낭비하지만, 인터럽트 기반 I/O 보다는 효율성이 떨어진다.단순한 단일 목적 시스템에서는 I/O 접근 전까지 아무 작업도 할 수 없다면 바쁜 대기 방식도 적합하다. 하지만 이는 보통 단순한 하드웨어나 비멀티태스킹 운영 체제에서나 볼 수 있다.
폴링은 하위 수준 하드웨어와 밀접하게 연관되는 경우가 많다. 예를 들어, 병렬 프린터 포트의 경우, 바이트의 비트 하나만 확인하면 프린터가 다음 문자를 받을 준비가 되었는지 알 수 있다. 이 비트는 프린터 케이블의 특정 와이어가 낮은 전압인지 높은 전압인지를 나타낸다. I/O 명령은 이 바이트를 읽어, 8개 와이어의 전압 상태를 CPU 레지스터의 한 바이트를 구성하는 8개의 회로(플립플롭)로 직접 전달한다.
하지만 폴링에는 단점이 있다. 확인해야 할 장치가 많으면, 각 장치를 폴링하는 데 걸리는 시간이 I/O 장치에 서비스를 제공하는 데 필요한 시간을 초과할 수 있다.
폴링 주기는 각 요소가 한 번씩 모니터링되는 시간을 의미한다. 최적의 폴링 주기는 응답 속도, 프로세서 시간 및 대역폭 등 여러 요인을 고려하여 결정된다.
롤콜 폴링은 폴링 장치나 프로세스가 정해진 순서대로 목록의 각 요소를 쿼리하는 방식이다. 각 요소의 응답을 기다리기 때문에, 응답 없는 요소로 인한 멈춤(lock-up)을 방지하기 위한 시간 제한 장치가 필요하다. 롤콜 폴링은 폴링 메시지로 인한 오버헤드가 크고, 폴링할 요소가 많지만 활성 요소가 적을 때 비효율적이다.
허브 폴링(토큰 폴링)은 각 요소가 정해진 순서대로 다음 요소를 폴링하는 방식이다. 이 과정은 첫 번째 요소에 도달할 때까지 계속되며, 폴링 주기가 다시 시작된다.
폴링은 다양한 컴퓨팅 환경에서 요소들의 실행 또는 전송 순서를 제어하는 데 사용된다. 예를 들어, 멀티태스킹 운영 체제에서는 폴링을 통해 여러 프로세스에 프로세서 시간과 기타 자원을 할당할 수 있다.
네트워크에서는 폴링을 사용하여 어떤 노드가 네트워크에 접근하려는지 결정한다. 또한, EGP (외부 게이트웨이 프로토콜)와 같이 라우팅 프로토콜에서 라우팅 정보를 얻는 데에도 사용된다.
폴링의 대안은 인터럽트를 사용하는 것이다. 인터럽트는 장치나 프로세스가 보내는 신호로, 주의가 필요하거나 통신을 원한다는 것을 알린다. 폴링은 매우 간단하지만, 많은 경우(예: 멀티태스킹 운영 체제) 인터럽트를 사용하는 것이 프로세서 사용량이나 대역폭 소비를 줄일 수 있어 더 효율적이다.
5. 폴링의 활용
폴링은 관련된 요소의 실행 또는 전송 순서를 제어하기 위해 다양한 컴퓨팅 환경에서 사용될 수 있다.
'''롤콜 폴링'''은 폴링 장치 또는 프로세스가 고정된 순서로 목록의 각 요소를 질의하는 방식이다. 각 요소로부터 응답을 기다리기 때문에, 응답하지 않는 요소로 인해 잠김(lock-up)을 방지하기 위한 타이밍 메커니즘이 필요하다. 롤콜 폴링은 폴링 메시지에 대한 오버헤드가 높고, 각 폴링 주기에 폴링할 요소가 많으며, 활성 요소가 소수일 경우 비효율적일 수 있다.[1]
'''허브 폴링'''은 토큰 폴링이라고도 하며, 각 요소가 고정된 순서로 다음 요소를 폴링한다. 이 과정은 첫 번째 요소에 도달할 때까지 계속되며, 이때 폴링 주기가 다시 시작된다.[1]
5. 1. 운영체제
멀티태스킹 운영 체제에서 폴링은 다양한 경쟁 프로세스에 프로세서 시간 및 기타 리소스를 할당하는 데 사용될 수 있다.[1]인터럽트는 폴링의 대안이며, 장치 또는 프로세스에서 생성된 신호로 주의가 필요하거나 통신을 원한다는 것을 나타낸다. 폴링은 매우 간단하지만, 많은 상황(예: 멀티태스킹 운영 체제)에서 프로세서 사용량 및/또는 대역폭 소비를 줄일 수 있기 때문에 인터럽트를 사용하는 것이 더 효율적이다.[1]
5. 2. 네트워킹
네트워크에서 폴링은 어떤 노드가 네트워크에 접근하려는지를 결정하는 데 사용된다. 또한, 라우팅 프로토콜에서 라우팅 정보를 검색하는 데 사용되는데, 이는 EGP (외부 게이트웨이 프로토콜)의 경우와 같다.폴링의 대안은 인터럽트를 사용하는 것이다. 인터럽트는 장치 또는 프로세스에서 생성된 신호로, 주의가 필요하거나 통신을 원한다는 것을 나타낸다. 폴링은 매우 간단하지만, 많은 상황(예: 멀티태스킹 운영 체제)에서 프로세서 사용량 및/또는 대역폭 소비를 줄일 수 있기 때문에 인터럽트를 사용하는 것이 더 효율적이다.
5. 3. 통신 시스템
멀티 드롭 회선 구성(중앙 컴퓨터와 여러 터미널이 단일 통신 회선을 공유하는 방식)에서, 시스템은 마스터/슬레이브 폴링 방식을 사용한다. 중앙 컴퓨터는 발신 회선으로 특정 터미널에 메시지(폴 메시지)를 보내고, 모든 터미널은 발신 회선을 듣는다. 하지만 폴링된 터미널만이 수신 회선으로 전송할 준비가 된 정보를 보내 응답한다.[1]가장 단순한 형태인 네트워크 스위치, 이더넷 허브 또는 컴퓨터 한 대로 구성된 스타형 네트워크에서는 메시지를 전송하는 통로 역할을 한다. 이때 폴링은 회선상의 혼란을 방지하기 위해 필요하지 않지만, 마스터가 정돈된 방식으로 입력을 얻을 수 있도록 하는 데 종종 사용된다. 이러한 폴 메시지는 멀티 드롭 회선의 경우와 다르게 사이트 주소가 필요하지 않으며, 각 터미널은 자신에게 전송된 폴만 받는다.[1]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com