El sondeo , o interrogación , se refiere al muestreo activo del estado de un dispositivo externo por parte de un programa cliente como una actividad síncrona. 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 (watchdog timer) .
Descripción
El sondeo es el proceso mediante el cual el ordenador o dispositivo de control espera a que un dispositivo externo compruebe su estado o disponibilidad, a menudo con hardware de bajo nivel. Por ejemplo, cuando se conecta una impresora a través de un puerto paralelo , el ordenador espera hasta que la impresora haya recibido el siguiente carácter. Estos procesos pueden ser tan breves como leer un solo bit . A veces se utiliza como sinónimo de sondeo de espera activa . En esta situación, cuando se requiere una operación de E/S , el ordenador no hace nada más que comprobar el estado del dispositivo de E/S hasta que esté listo, momento en el que se accede al dispositivo. En otras palabras, el ordenador espera hasta que el dispositivo esté listo. El sondeo también se refiere a la situación en la que se comprueba repetidamente si un dispositivo está listo y, si no lo está, el ordenador vuelve a otra tarea. Aunque no consume tantos ciclos de CPU como la espera activa, generalmente no es tan eficiente como la alternativa al sondeo, la E/S controlada por interrupciones .
En un sistema simple de un solo propósito, incluso la espera activa es perfectamente apropiada si no es posible realizar ninguna acción hasta que se produzca el acceso de E/S , pero, por lo general, esto era tradicionalmente una consecuencia de un hardware simple o de sistemas operativos que no admitían multitarea .
El sondeo suele estar íntimamente ligado al hardware de muy bajo nivel . Por ejemplo, sondear un puerto de impresora paralelo para comprobar si está listo para recibir otro carácter implica examinar tan solo un bit de un byte . Ese bit representa, en el momento de la lectura, si un único cable del cable de la impresora tiene un voltaje bajo o alto. La instrucción de E/S que lee este byte transfiere directamente el estado de voltaje de ocho cables reales a los ocho circuitos ( flip-flops ) que componen un byte de un registro de la CPU .
El sondeo tiene la desventaja de que, si hay demasiados dispositivos que comprobar, el tiempo necesario para sondearlos puede exceder el tiempo disponible para dar servicio al dispositivo de E/S.
Algoritmo
El sondeo se puede describir en los siguientes pasos:
Acciones del anfitrión:
- El host lee repetidamente el bit de ocupado del controlador hasta que se desactiva (con un valor de 0).
- Cuando está libre, el host escribe el comando en el registro de comandos . Si el host está enviando datos, activa el bit de escritura y escribe un byte en el registro de datos de salida. Si el host está recibiendo datos de entrada, lee los datos escritos por el controlador desde el registro de datos de entrada y activa el bit de lectura (0) como siguiente comando.
- El host establece el bit de comando listo en 1.
Acciones del controlador:
- Cuando el controlador detecta que el bit de comando listo está activado, establece el bit de ocupado en 1.
- El controlador lee el registro de comandos. Si el bit de escritura está activado, lee el registro de datos de salida y realiza las operaciones de entrada/salida necesarias en el dispositivo. Si el bit de lectura está activado, los datos del dispositivo se cargan en el registro de datos de entrada para que el host los lea.
- Una vez finalizadas las operaciones, el controlador borra el bit de comando listo, borra el bit de error para indicar que la operación se realizó correctamente y borra el bit de ocupado.
Tipos
Un ciclo de sondeo es el tiempo durante el cual se supervisa cada elemento una sola vez. El ciclo de sondeo óptimo varía según diversos factores, como la velocidad de respuesta deseada y la sobrecarga (por ejemplo, tiempo de procesador y ancho de banda ) del sondeo.
En el sondeo por lista , el dispositivo o proceso de sondeo consulta cada elemento de una lista en una secuencia fija. Dado que espera una respuesta de cada elemento, es necesario un mecanismo de temporización para evitar bloqueos causados por elementos que no responden. El sondeo por lista puede ser ineficiente si la sobrecarga de los mensajes de sondeo es alta, hay numerosos elementos que consultar en cada ciclo de sondeo y solo unos pocos elementos están activos.
En el sondeo central , también conocido como sondeo de tokens, cada elemento sondea al siguiente en una secuencia fija. Esto continúa hasta que se alcanza el primer elemento, momento en el que el ciclo de sondeo comienza de nuevo.
El sondeo puede emplearse en diversos contextos informáticos para controlar la secuencia de ejecución o transmisión de los elementos implicados. Por ejemplo, en sistemas operativos multitarea, el sondeo puede utilizarse para asignar tiempo de procesador y otros recursos a los distintos procesos que compiten entre sí.
En las redes, el sondeo se utiliza para determinar qué nodos desean acceder a la red. También lo utilizan los protocolos de enrutamiento para recuperar información de enrutamiento, como es el caso del 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, desean comunicarse, etc. Aunque el sondeo puede ser muy sencillo, en muchas situaciones (por ejemplo, en sistemas operativos multitarea) es más eficiente usar interrupciones, ya que puede reducir el tiempo de espera del procesador y/o el consumo de ancho de banda. A veces, una sola interrupción se comparte con varios dispositivos. Cuando se genera dicha interrupción, la rutina de servicio de interrupción sondea los dispositivos que la comparten para determinar cuál necesita atención. Las interrupciones vectorizadas son una alternativa más eficiente que asigna a cada dispositivo directamente a su propia rutina de servicio de interrupción privada.
Mensaje de la encuesta
Un mensaje de sondeo es un mensaje de confirmación de control.
En una configuración de línea multipunto (un ordenador central y diferentes terminales que comparten una única línea de comunicación hacia y desde el ordenador), el sistema utiliza un esquema de sondeo maestro/esclavo en el que el ordenador central envía un mensaje (denominado mensaje de sondeo) a un terminal específico por la línea de salida. Todos los terminales escuchan la línea de salida, pero solo el terminal sondeado responde enviando la información que tiene lista para su transmisión por la línea de entrada. [ 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 conducto para transmitir mensajes, el sondeo no es necesario para evitar el caos en las líneas, pero se usa con frecuencia para permitir que el maestro adquiera la entrada de manera ordenada. Estos mensajes de sondeo difieren de los del caso de las líneas multidrop porque no se necesitan direcciones de sitio, y cada terminal solo recibe los sondeos que se le dirigen. [ 1 ]
Véase también
Referencias
- Eventos (informática)
- Entrada/salida