Опрос , или допрос , относится к активной выборке состояния внешнего устройства клиентской программой как синхронной активности. Опрос чаще всего используется в терминах ввода/вывода ( I/O ) и также называется опрашиваемым вводом/выводом или программно-управляемым вводом/выводом . Хорошим примером аппаратной реализации является сторожевой таймер .
Опрос — это процесс, при котором компьютер или управляющее устройство ожидает, пока внешнее устройство проверит свою готовность или состояние, часто с помощью низкоуровневого оборудования. Например, когда принтер подключен через параллельный порт, компьютер ждет, пока принтер не получит следующий символ. Эти процессы могут быть такими минутными, как только чтение одного бита . Иногда это используется как синоним опроса « ожидание занятости ». В этой ситуации, когда требуется операция ввода-вывода , компьютер не делает ничего, кроме проверки состояния устройства ввода-вывода , пока оно не будет готово, после чего к устройству осуществляется доступ. Другими словами, компьютер ждет, пока устройство не будет готово. Опрос также относится к ситуации, когда устройство многократно проверяется на готовность, и если это не так, компьютер возвращается к другой задаче. Хотя это не так расточительно для циклов ЦП , как ожидание занятости, это, как правило, не так эффективно, как альтернатива опросу, ввод-вывод , управляемый прерываниями .
В простой одноцелевой системе даже активное ожидание вполне уместно, если никакие действия невозможны до получения доступа к вводу-выводу , но чаще всего это традиционно было следствием простого оборудования или операционных систем, не поддерживающих многозадачность .
Опрос часто тесно связан с очень низкоуровневым оборудованием . Например, опрос параллельного порта принтера для проверки его готовности к приему другого символа включает проверку всего лишь одного бита байта . Этот бит представляет, во время считывания, находится ли один провод в кабеле принтера под низким или высоким напряжением. Инструкция ввода-вывода , которая считывает этот байт, напрямую передает состояние напряжения восьми реальных проводов в восемь схем ( триггеров ), которые составляют один байт регистра ЦП.
Недостатком опроса является то, что если необходимо проверить слишком много устройств, то время, необходимое для их опроса, может превысить время, доступное для обслуживания устройства ввода-вывода.
Опрос можно описать следующими шагами:
Действия хоста:
Действия контроллера:
Цикл опроса — это время, в течение которого каждый элемент контролируется один раз. Оптимальный цикл опроса будет зависеть от нескольких факторов, включая желаемую скорость ответа и накладные расходы (например, процессорное время и пропускная способность ) опроса.
При опросе методом переклички устройство или процесс опроса запрашивает каждый элемент списка в фиксированной последовательности. Поскольку он ожидает ответа от каждого элемента, необходим механизм синхронизации для предотвращения зависаний, вызванных неотвечающими элементами. Опрос методом переклички может быть неэффективным, если накладные расходы на сообщения опроса высоки, в каждом цикле опроса необходимо опрашивать множество элементов, а активны только несколько элементов.
В опросе концентратора , также называемом опросом маркера, каждый элемент опрашивает следующий элемент в некоторой фиксированной последовательности. Это продолжается до тех пор, пока не будет достигнут первый элемент, после чего цикл опроса начинается снова.
Опрос может использоваться в различных вычислительных контекстах для управления последовательностью выполнения или передачи задействованных элементов. Например, в многозадачных операционных системах опрос может использоваться для выделения процессорного времени и других ресурсов различным конкурирующим процессам.
В сетях опрос используется для определения того, какие узлы хотят получить доступ к сети. Он также используется протоколами маршрутизации для получения информации о маршрутизации, как в случае с EGP ( протокол внешнего шлюза ).
Альтернативой опросу является использование прерываний , которые представляют собой сигналы, генерируемые устройствами или процессами, чтобы указать, что им требуется внимание, они хотят связаться и т. д. Хотя опрос может быть очень простым, во многих ситуациях (например, многозадачные операционные системы) более эффективно использовать прерывания, поскольку это может снизить использование процессора и/или потребление полосы пропускания.
Сообщение опроса представляет собой сообщение подтверждения контроля.
В многоточечной линейной схеме (центральный компьютер и различные терминалы, в которой терминалы совместно используют одну линию связи к компьютеру и от него) система использует схему опроса ведущий/ведомый , при которой центральный компьютер отправляет сообщение (называемое сообщением опроса) на определенный терминал на исходящей линии. Все терминалы слушают исходящую линию, но только опрашиваемый терминал отвечает, отправляя любую информацию, которая у него готова к передаче на входящей линии. [1]
В сетях типа «звезда» , которые в своей простейшей форме состоят из одного центрального коммутатора , концентратора или компьютера, который действует как канал для передачи сообщений, опрос не требуется для предотвращения хаоса на линиях, но он часто используется, чтобы позволить мастеру получать входные данные упорядоченным образом. Эти сообщения опроса отличаются от сообщений в случае многоточечных линий, поскольку не требуются адреса сайтов, и каждый терминал получает только те опросы, которые направлены на него. [1]