Sondeo o interrogación se refiere al muestreo activo del estado de un dispositivo externo mediante un programa cliente como una actividad sincrónica. El sondeo se utiliza con mayor frecuencia en términos de entrada/salida ( E/S ) y también se conoce como E/S sondeada o E/S controlada por software . Un buen ejemplo de implementación de hardware es un temporizador de vigilancia .
El sondeo es el proceso en el que la computadora o el dispositivo de control espera a que un dispositivo externo verifique su preparación o estado, a menudo con hardware de bajo nivel. Por ejemplo, cuando una impresora se conecta a través de un puerto paralelo, la computadora espera hasta que la impresora haya recibido el siguiente carácter. Estos procesos pueden ser tan minuciosos como leer sólo un bit . A veces esto se utiliza como sinónimo de sondeo de " espera ocupada ". En esta situación, cuando se requiere una operación de E/S , la computadora no hace nada más que verificar el estado del dispositivo de E/S hasta que esté listo, momento en el que se accede al dispositivo. En otras palabras, la computadora espera hasta que el dispositivo esté listo. El sondeo también se refiere a la situación en la que se comprueba repetidamente que un dispositivo esté listo y, si no lo está, la computadora vuelve a realizar una tarea diferente. Aunque no desperdicia tanto ciclos de CPU como la espera ocupada, generalmente no es tan eficiente como la alternativa al sondeo y la E/S impulsada por interrupciones .
En un sistema simple de propósito único, incluso la espera ocupada es perfectamente apropiada si no es posible realizar ninguna acción hasta el acceso de E/S , pero la mayoría de las veces esto era tradicionalmente una consecuencia de hardware simple o sistemas operativos que no son multitarea .
El sondeo suele estar íntimamente relacionado con hardware de muy bajo nivel . Por ejemplo, sondear un puerto de impresora paralelo para comprobar si está listo para otro carácter implica examinar tan solo un bit de un byte . Ese bit representa, en el momento de la lectura, si un solo cable del cable de la impresora tiene un voltaje alto o bajo. La instrucción de E/S que lee este byte transfiere directamente el estado de voltaje de ocho cables del mundo real a los ocho circuitos ( flip flops ) que forman un byte de un registro de la CPU.
El sondeo tiene la desventaja de que si hay demasiados dispositivos para verificar, el tiempo necesario para sondearlos puede exceder el tiempo disponible para dar servicio al dispositivo de E/S.
El sondeo se puede describir en los siguientes pasos:
Acciones del anfitrión:
Acciones del controlador:
Un ciclo de sondeo es el tiempo en el que cada elemento se monitorea una vez. El ciclo de sondeo óptimo variará según varios factores, incluida la velocidad de respuesta deseada y la sobrecarga (por ejemplo, tiempo de procesador y ancho de banda ) del sondeo.
En el sondeo nominal , el dispositivo o proceso de sondeo consulta cada elemento de una lista en una secuencia fija. Debido a que espera una respuesta de cada elemento, es necesario un mecanismo de sincronización para evitar bloqueos causados por elementos que no responden. El sondeo nominal puede ser ineficiente si la sobrecarga de los mensajes de sondeo es alta, hay numerosos elementos para sondear en cada ciclo de sondeo y sólo unos pocos elementos están activos.
En el sondeo central , también conocido como sondeo de tokens, cada elemento sondea al siguiente elemento en una secuencia fija. Esto continúa hasta que se alcanza el primer elemento, momento en el cual el ciclo de sondeo comienza de nuevo.
El sondeo se puede emplear en diversos contextos informáticos para controlar la secuencia de ejecución o transmisión de los elementos involucrados. Por ejemplo, en sistemas operativos multitarea, el sondeo se puede utilizar para asignar tiempo de procesador y otros recursos a los distintos procesos en competencia.
En las redes, el sondeo se utiliza para determinar qué nodos quieren acceder a la red. También lo utilizan los protocolos de enrutamiento para recuperar información de enrutamiento, como es el caso de EGP ( protocolo de puerta de enlace exterior ).
Una alternativa al sondeo es el uso de interrupciones , que son señales generadas por dispositivos o procesos para indicar que necesitan atención, quieren comunicarse, etc. Aunque el sondeo puede ser muy simple, en muchas situaciones (por ejemplo, sistemas operativos multitarea) es Es más eficiente utilizar interrupciones porque pueden reducir el uso del procesador y/o el consumo de ancho de banda.
Un mensaje de sondeo es un mensaje de reconocimiento de control.
En una disposición de línea multipunto (una computadora central y diferentes terminales en las que las terminales comparten una única línea de comunicación hacia y desde la computadora), el sistema utiliza una disposición de sondeo maestro/esclavo mediante la cual la computadora central envía un mensaje (llamado mensaje de sondeo) a un terminal específico en la línea de salida. Todos los terminales escuchan la línea saliente, pero sólo el terminal encuestado responde enviando cualquier información que tenga lista para transmitir en la línea entrante. [1]
En las redes en estrella , que, en su forma más simple, consisten en un conmutador , concentrador o computadora central que actúa como un conducto para transmitir mensajes, el sondeo no es necesario para evitar el caos en las líneas, pero a menudo se usa para permitir que el maestro adquirir información de forma ordenada. Estos mensajes de encuesta difieren de los del caso de líneas multipunto porque no se necesitan direcciones de sitio y cada terminal solo recibe aquellas encuestas que están dirigidas a él. [1]