Portabilidad y tiempo real

El mercado del Tiempo Real se incorpora a la tendencia hacia los sistemas abiertos con los estándares POSIX emergentes. Hoy se puede ya afirmar que gracias a POSIX.1, POSIX.4 y POSIX.4a, es posible escribir verdaderas aplicaciones de Tiempo Real portables.

El mundo de las aplicaciones de Tiempo Real está actualmente muy fragmentado: existen múltiples sistemas operativos propietarios y núcleos de capacidades limitadas. Ningún entorno de software se ha impuesto de forma significativa en el mercado. En consecuencia, el desarrollo de este tipo de aplicaciones resulta complicado y caro.

Los equipos de desarrollo acaban estando ligados a un núcleo propietario, lo que equivale a un suministrador único. A menudo, esto incluye también una determinada plataforma hardware. el intentar liberarse de esta situación conduce a tener que reiniciar el desarrollo a partir de cero. La falta de una plataforma estándar ha frenado a su vez el desarrollo de herramientas por terceros.

Los sistemas propietarios que han estado dominando el mercado, proporcionan mínimas facilidades comparado con las que ofrecen los sistemas operativos completos como Unix. Como consecuencia, los equipos de desarrollo de aplicaciones de Tiempo Real, han ido manifestando un interés creciente en adaptar Unix para dichas aplicaciones.

En 1986, el IEEE decide crear el grupo POSIX con el objetivo de proponer las normas para un amplio conjunto de servicios de los sistemas operativos abiertos. El primer estándar POSIX, el 1003.1, define el interfaz entre los programas de aplicación y el sistema operativo. Dicho estándar, que se basa en el modelo Unix, ha sido adoptado como norma ISO 9945-1:1990.

El modelo UNIX fue adoptado por POSIX.1 debido a que se trata del único sistema abierto completamente multitarea que existe para la mayoría de plataformas y suministradores diversos. El entorno de desarrollo UNIX es muy popular entre los equipos de desarrollo de software. Ahora bien; el requerimiento básico que debe cumplir un sistema de Tiempo Real es su capacidad de responder a sucesos externos en un tiempo muy corto. En aplicaciones críticas, dicho tiempo de respuesta debe ser acotado, o, en otras palabras, el comportamiento del sistema debe ser determinista. En cambio, el UNIX estándar basado en el código de AT&T fue diseñado como un sistema de tiempo compartido para que diera un buen servicio a los equipos de desarrollo y no como un sistema sobre el que construir aplicaciones con requerimientos de tiempo real.

Por ejemplo, las implementaciones UNIX de AT&T y Berkeley no son preemtibles. Esto significa que una tarea de baja prioridad que está ejecutando una llamada a sistema, no cede el control de la CPU a una tarea crítica para la que se ha producido un suceso externo al que debe responder. Este comportamiento no es aceptable para un sistema de tiempo real. Así, muchos de los requerimientos impuestos por el Tiempo Real exigen modificaciones profundas del núcleo UNIX. A pesar de que el interfaz de programación UNIX sea en general satisfactorio, es necesario definir numerosas extensiones para soportar aplicaciones de Tiempo Real. Para poder garantizar un tiempo de respuesta determinista, es indispensable un sistema operativo que permita al usuario asignar prioridades fijas a las tareas y un gestor de las mismas (scheduler) basado en dichas prioridades.

Las extensiones para el Tiempo Real dentro del grupo POSIX empiezan a estudiarse desde 1987. Este grupo, que se denomina POSIX.4, define un interfaz estándar para una serie de facilidades propias de aplicaciones de tiempo real. Se trata de facilidades que se requieren frecuentemente para una implementación eficiente de dichas aplicaciones.

Las extensiones para Tiempo Real definidas por POSIX.4 incluyen el scheduling basado en prioridad, memoria compartida, temporizadores de alta resolución, I/O síncrono y asíncrono, etc. Un aspecto novedoso que ha sido abordado por POSIX es el de las llamadas threads. También se las denomina tareas light, ya que poseen un flujo de ejecución, un juego de registros, un stack y un contador de programa. POSIX.4a define las llamadas que proporcionan el control de las threads, su sincronización y el manejo de señales. La versión final de POSIX.4a ha sido aprobada recientemente por el comité correspondiente del IEEE.

La noción de thread es muy interesante en el contexto de una aplicación de Tiempo Real, ya que permite manipular objetos que ofrecen prestaciones elevadas para la ejecución concurrente de actividades diversas. Las threads de un proceso comparten el mismo espacio de direcciones, los mismos recursos y en general manipulan menos información de contexto que el proceso. La creación y eliminación, así como el paso de una thread a otra del mismo proceso, son operaciones menos costosas que las correspondientes de procesos. Las threads permiten, además, soportar el modelo de tareas propio de Ada. Existe también dentro de POSIX.4 el subgrupo 4.b, que define nuevas funciones para el tiempo real que incluyen acceso a vectores de interrupción y scheduling de servidor esporádico.

POSIX define un interfaz, no una implementación. Así, los usuarios de sistemas POSIX pueden portar sus aplicaciones de un sistema operativo a otro siempre que éste respete el interfaz. ¿Cuál es pues la diferencia competitiva entre unos sistemas operativos y otros?

Puesto que nos estamos refiriendo al mundo del Tiempo Real, la diferencia competitiva incluye prestaciones, tamaño (romabilidad), configurabilidad, etc. En efecto, una aplicación de Tiempo Real no solamente debe producir resultados correctos, sino que debe hacerlo dentro de un intervalo de tiempo limitado. El computador que controla la trayectoria de un misil, debe producir señales de corrección de la misma en intervalos bien precisos; en caso contrario, el misil acabará en algún punto bien distinto del objetivo.

Hoy en día, los organismos que gestionan los grandes proyectos imponen cada vez más en sus pliegos de condiciones la conformidad a los estándares emergentes. En consecuencia, la compatibilidad POSIX, junto con unas buenas prestaciones, son los factores básicos a considerar para las aplicaciones de Tiempo Real.

Viñeta publicada el 20 de febrero de 1870 en La Flaca n.º 35 Tendencias

ny2 ACTUALIDAD

ny2 Sociedad de la información

Día de la Movilidad y el BYOD Coffee Break