sima Descripción del sistema

sima es un entorno de ejecución que proporciona la interfaz API (Application Programming Interface) conforme a ARINC 653 y una robusta partición para sistemas operativos que no ofrezcan por sí mismos estas características.

La especificación ARINC 653 establece el soporte para posibilitar una robusta partición en sistemas embarcados de forma que una sola unidad de procesamiento, normalmente denominada módulo, pueda alojar una o varias aplicaciones aviónicas y ejecutar esas aplicaciones de manera independiente. Todo ello se puede llevar a cabo si el sistema subyacente, a menudo denominado el Module Operating System (MOS), permite la separación de las aplicaciones aviónicas a fin de que:

  • Cada función particionada tenga acceso garantizado al procesador. Las garantías reflejarán la frecuencia y el tiempo de ejecución de cada aplicación.
  • Un fallo en una función particionada no pueda causar un fallo en otra función particionada.

En consecuencia, el sistema de partición permite reducir el hardware embarcado y, al mismo tiempo, facilita los procesos de verificación, validación y certificación.

sima: Arquitectura

 Los servicios de ARINC 653 a la aplicación alojada se prestan con la biblioteca del Partition Operating System (POS) que implementa:

  • Servicios ARINC 653 de los "Servicios Requeridos" de ARINC 653 Parte 1: Administración de Particiones, Gestión de Procesos, Gestión del Tiempo, Comunicaciones Inter e Intra Particiones y Servicios de Supervisión de Buen Estado. 
  • Un subconjunto de "Servicios Ampliados" de ARINC 653 Parte 2: Sistema Logbook.

 

sima: Proceso de construcción

En sima, las particiones ARINC 653 son asignadas a procesos POSIX y los procesos ARINC 653 son asignados a hilos POSIX. Así pues, cada aplicación sima queda vinculada a un único programa POSIX, que contiene el código y datos del usuario, el código y los datos de la APEX y, finalmente, el entorno de ejecución de la plataforma, es decir, la NPTL para Linux.

sima está diseñada para dar soporte a aplicaciones en tiempo real. Utilizan interfaces de programación en tiempo real en la biblioteca de hilos POSIX, como prioridades de programación e hilo FIFO. Asimismo, toda la memoria utilizada durante la ejecución se crea durante la inicialización y queda almacenada en RAM, evitando penalizaciones por paging y latencia.