Los motivos por los que el hardware de tu PC no se cuelga

Cuando hablamos de tiempo real nuestra mente suele asociar dicho término al renderizado de gráficos a vuelo que solemos ver en los videojuegos, pero el concepto de computación a tiempo real va más allá de eso y hace referencia a un área del hardware que utilizamos día a día sin saberlo. Es por ello que hemos decidido explicaros cómo funciona y en que consiste.

Puede que una persona lleve un marcapasos por culpa de una dolencia cardíaca, pues bien, aunque es una pieza de hardware de funcionamiento relativamente simple esta ha de dar una respuesta siempre en un tiempo dado. Si ya nos movemos en el entorno de la conducción nos podemos encontrar un microcontrolador encargado de que todo el sistema funcione en los tiempos ideales para evitar un fallo mecánico o eléctrico en el vehículo.

Si hablamos ya de cosas de estar más por casa el ejemplo más claro está en la comunicación entre dos dispositivos, la cual se ha de realizar en unos tiempos determinados que marca el estándar. Esto ocurre especialmente en las impresoras inalámbricas que van enviando ráfagas de datos a medida que esta va imprimiendo sobre el papel. Tampoco podemos olvidar las consolas de 8 y 16 bits que por limitaciones en la memoria de vídeo tenían que enviar los datos a la salida de vídeo a medida que el haz de electrones cruzaba la pantalla.

¿Qué es la computación a tiempo real?

Computación Tiempo Real

Entendemos como computación a tiempo real a toda aquella en la que la ejecución de las instrucciones o conjuntos de las mismas, procesos o programas, se ha de realizar en el menor tiempo posible, ocasionando resultados fatídicos si no se realiza el proceso dentro del dicho límite temporal establecido. Para ello necesitamos cuantificar dicho periodo haciendo uso de una medida, la cual puede ser un tiempo temporal objetivo estándar como por ejemplo los microsegundos, milisegundos o segundos, o si no podemos hacerlo de esta forma tendremos que utilizar los ciclos de reloj del procesador que está ejecutando dicha instrucción o conjunto de instrucciones.

Por lo que un sistema a tiempo real ha de dar una respuesta en un tiempo determinado a partir de una acción del usuario independientemente de los procesos que hubiera antes. Un ejemplo muy claro de esto es cuando pulsamos un botón de nuestro ratón o mando de control en un videojuego esperamos que la respuesta en pantalla aparezca lo más rápido posible, si está tarda demasiado tiempo entonces entendemos que el sistema no funciona de manera adecuada.

Así pues los sistemas de computación a tiempo real son aquellos sensibles al tiempo de ejecución de los procesos y donde su funcionamiento puede verse total o parcialmente afectado por no solucionar los procesos en un tiempo determinado.

Categorías de Real Time Computing

computación tiempo real

Por lo que la computación a tiempo real tiene requerimientos de tiempo, estos los podemos dividir en dos tipos hard y soft.

  • En un sistema a tiempo real del tipo hard si el proceso no llega a ejecutarse en el tiempo determinado resulta un fallo total del sistema. Por ejemplo puede que el sistema a tiempo real de airbag de un coche no funcione a tiempo y la persona al tener un accidente impacte con el volante falleciendo en el acto.
  • En cambio un sistema tiempo real del tipo soft solo sufre una pérdida en la calidad del servicio, pero no un fallo general del sistema, un ejemplo claro es el Input Lag en un videojuego o el retraso en una retransmisión.

El primer tipo lo solemos ver en dispositivos que funcionan de manera autónoma y en bucle continuo, donde el añadido de cualquier instrucción de más puede tener como resultado un retraso en el proceso que puede ser fatídico, por eso se utilizan microcontroladores para ello que funcionan de manera aislada y con cada una de sus instrucciones medida para un funcionamiento digno de un reloj suizo. ¿Se encuentran en nuestros PC? Pues si, por ejemplo los sistemas que controlan los periodos de Boost de la CPU y la GPU son ejemplos de sistemas de computación a tiempo real

El motivo por el cual se utilizan microcontrolador es por el hecho que su memoria RAM se encuentra dentro del procesador mismo, por lo que su latencia es mínima y no es necesario un sistema de cachés, es más, sería totalmente contraproducente, ya que en estos casos añadiría latencia y sería fatídico para el correcto funcionamiento del sistema. En los microcontroladores el set de instrucciones no solo se da en el sentido de lo que hace cada una de ellas, sino también del tiempo que consumen.

Uso de sistemas operativos especiales a tiempo real

Procesador Render

No obstante el problema de un microcontrolador es que no son capaces de ejecutar más de un proceso al mismo tiempo y es en ese punto donde se hace necesario el uso de hardware y software más complejo, en especial este último y por tanto es aquí donde entran los sistemas operativos a tiempo real que se encargan de gestionar los procesos que se ejecutaran en el procesador, aquí de nuevo tenemos dos tipos:

  • Sistemas guiados por eventos, la ejecución de los programas se hace de manera normal, pero los eventos no tienen preferencia de ejecución por un sistema de privilegios y jerarquía en origen, sino que estos se solucionan al tiempo que van apareciendo.
  • Un sistema de tiempo compartido, en el que a cada instrucción se le da un tiempo para ejecutarse para evitar retrasos, si un proceso no se puede ejecutar en el tiempo esperado entonces se deja en pausa y se salta al siguiente proceso.

Este tipo de sistemas operativos se ejecutan en microcontroladores mucho más avanzados, con núcleos capaces de ejecutar varios procesos al mismo tiempo y que por tanto pueden llevar tareas mucho más complejas o una sucesión de las mismas de manera ordenada que en conjunto requieren más potencia para su funcionamiento. En cuanto a la categorización de los Real Time Operating Systems o RTOS estos se categorizan según el tipo de computación a tiempo real que se quiera utilizar, por lo que los hay del tipo hard y del tipo soft.

¡Sé el primero en comentar!