Podcast
Questions and Answers
¿Por qué la eficiencia y la proximidad al sistema operativo han hecho popular al lenguaje C en sistemas de tiempo real, a pesar de carecer de características deseables como concurrencia y un modelo de objetos?
¿Por qué la eficiencia y la proximidad al sistema operativo han hecho popular al lenguaje C en sistemas de tiempo real, a pesar de carecer de características deseables como concurrencia y un modelo de objetos?
A pesar de sus limitaciones, C permite un control de bajo nivel y una optimización que son cruciales para cumplir con las restricciones de tiempo y recursos en estos sistemas.
Describe cómo la evolución de Ada (desde Ada 83 hasta Ada 2022) ha impactado su idoneidad para el desarrollo de aplicaciones de tiempo real.
Describe cómo la evolución de Ada (desde Ada 83 hasta Ada 2022) ha impactado su idoneidad para el desarrollo de aplicaciones de tiempo real.
Cada nueva versión ha introducido mejoras y abstracciones diseñadas específicamente para facilitar el desarrollo, la verificación y el mantenimiento de aplicaciones de tiempo real, abordando necesidades emergentes y corrigiendo deficiencias previas.
¿Cuál es la principal limitación de los lenguajes secuenciales en el contexto de los sistemas de tiempo real y cómo impacta esta limitación en la capacidad de modelar el entorno?
¿Cuál es la principal limitación de los lenguajes secuenciales en el contexto de los sistemas de tiempo real y cómo impacta esta limitación en la capacidad de modelar el entorno?
Su incapacidad para modelar el paralelismo inherente al entorno de tiempo real, ya que solo pueden ejecutar un único flujo de control a la vez, lo que dificulta la gestión de eventos concurrentes y la respuesta en tiempo oportuno a múltiples estímulos.
Explica la relación entre el modelado del paralelismo del entorno y la necesidad de concurrencia en los lenguajes de programación para sistemas de tiempo real.
Explica la relación entre el modelado del paralelismo del entorno y la necesidad de concurrencia en los lenguajes de programación para sistemas de tiempo real.
Considerando las características deseables en lenguajes para sistemas de tiempo real, ¿cómo contribuye la gestión y el control del tiempo a la robustez y fiabilidad del sistema?
Considerando las características deseables en lenguajes para sistemas de tiempo real, ¿cómo contribuye la gestión y el control del tiempo a la robustez y fiabilidad del sistema?
¿Cuáles son las dos categorías principales de lenguajes de programación relevantes para los sistemas de tiempo real?
¿Cuáles son las dos categorías principales de lenguajes de programación relevantes para los sistemas de tiempo real?
En el contexto de los sistemas de tiempo real (STR), ¿qué implica la 'programación concurrente'?
En el contexto de los sistemas de tiempo real (STR), ¿qué implica la 'programación concurrente'?
¿Por qué es importante considerar los requisitos al elegir un lenguaje de programación para un sistema de tiempo real?
¿Por qué es importante considerar los requisitos al elegir un lenguaje de programación para un sistema de tiempo real?
Describe brevemente qué son los 'objetos protegidos' en el contexto de la programación concurrente en Ada y por qué son importantes.
Describe brevemente qué son los 'objetos protegidos' en el contexto de la programación concurrente en Ada y por qué son importantes.
¿Qué diferencia fundamental existe en la gestión de tareas entre un sistema de tiempo real que utiliza 'tareas periódicas' y uno que utiliza 'tareas aperiódicas'?
¿Qué diferencia fundamental existe en la gestión de tareas entre un sistema de tiempo real que utiliza 'tareas periódicas' y uno que utiliza 'tareas aperiódicas'?
Explica brevemente en qué consiste el problema de la 'inversión de prioridades' en sistemas de tiempo real y por qué es crítico evitarlo.
Explica brevemente en qué consiste el problema de la 'inversión de prioridades' en sistemas de tiempo real y por qué es crítico evitarlo.
¿Qué papel juegan los 'pragmas de programación' en el desarrollo de sistemas de tiempo real con Ada?
¿Qué papel juegan los 'pragmas de programación' en el desarrollo de sistemas de tiempo real con Ada?
¿Cuál es la importancia del 'análisis de planificación' en el contexto de los Sistemas de Tiempo Real (STR)?
¿Cuál es la importancia del 'análisis de planificación' en el contexto de los Sistemas de Tiempo Real (STR)?
¿Cuáles son dos ventajas principales de utilizar lenguajes secuenciales en la programación?
¿Cuáles son dos ventajas principales de utilizar lenguajes secuenciales en la programación?
En el ejemplo de código C proporcionado, ¿cuál es la postcondición esperada para la variable 'contador' después de la ejecución del bucle for
?
En el ejemplo de código C proporcionado, ¿cuál es la postcondición esperada para la variable 'contador' después de la ejecución del bucle for
?
En el ejemplo de código Ada, ¿qué salida se mostrará si el valor de 'contador' es diferente de 100000 después de la ejecución del bucle?
En el ejemplo de código Ada, ¿qué salida se mostrará si el valor de 'contador' es diferente de 100000 después de la ejecución del bucle?
¿Qué característica principal distingue a los lenguajes concurrentes de los lenguajes secuenciales?
¿Qué característica principal distingue a los lenguajes concurrentes de los lenguajes secuenciales?
Menciona dos requerimientos adicionales que necesitan los lenguajes concurrentes, comparados con los secuenciales.
Menciona dos requerimientos adicionales que necesitan los lenguajes concurrentes, comparados con los secuenciales.
¿Cuál es una de las principales dificultades asociadas con la validación y depuración de programas escritos en lenguajes concurrentes?
¿Cuál es una de las principales dificultades asociadas con la validación y depuración de programas escritos en lenguajes concurrentes?
¿Qué es el 'Runtime Support (RTS)' y por qué es necesario en los lenguajes concurrentes?
¿Qué es el 'Runtime Support (RTS)' y por qué es necesario en los lenguajes concurrentes?
En el contexto de los sistemas de tiempo real, ¿de qué depende un lenguaje secuencial?
En el contexto de los sistemas de tiempo real, ¿de qué depende un lenguaje secuencial?
Explica brevemente por qué la planificación (scheduling) es esencial en sistemas que utilizan lenguajes concurrentes.
Explica brevemente por qué la planificación (scheduling) es esencial en sistemas que utilizan lenguajes concurrentes.
Describe un problema común que puede surgir al utilizar variables compartidas entre múltiples hilos en un lenguaje concurrente y cómo se puede mitigar.
Describe un problema común que puede surgir al utilizar variables compartidas entre múltiples hilos en un lenguaje concurrente y cómo se puede mitigar.
¿Cómo la tipificación nominal en Ada ayuda a la detección temprana de errores en comparación con la tipificación estructural?
¿Cómo la tipificación nominal en Ada ayuda a la detección temprana de errores en comparación con la tipificación estructural?
Describe dos abstracciones comunes proporcionadas por las APIs en sistemas operativos y explica cómo simplifican el desarrollo de software.
Describe dos abstracciones comunes proporcionadas por las APIs en sistemas operativos y explica cómo simplifican el desarrollo de software.
¿Cuál es la importancia de que el lenguaje Ada tenga 'nula ambigüedad' y 'ningún comportamiento indefinido' según la norma ISO?
¿Cuál es la importancia de que el lenguaje Ada tenga 'nula ambigüedad' y 'ningún comportamiento indefinido' según la norma ISO?
En el contexto de sistemas de tiempo real, ¿qué implicaciones tiene el uso de un lenguaje secuencial como C comparado con un lenguaje diseñado específicamente para concurrencia?
En el contexto de sistemas de tiempo real, ¿qué implicaciones tiene el uso de un lenguaje secuencial como C comparado con un lenguaje diseñado específicamente para concurrencia?
Explica cómo los 'Anexos' en la norma ISO de Ada (Sist. TR, Sist. Distribuidos, Programación de sistemas) extienden la funcionalidad del núcleo del lenguaje y por qué esto es beneficioso.
Explica cómo los 'Anexos' en la norma ISO de Ada (Sist. TR, Sist. Distribuidos, Programación de sistemas) extienden la funcionalidad del núcleo del lenguaje y por qué esto es beneficioso.
¿Por qué es importante que los nombres de variables y programas sean indicativos de lo que denotan?
¿Por qué es importante que los nombres de variables y programas sean indicativos de lo que denotan?
Explica qué implicaciones tiene el hecho de que un compilador no distinga entre mayúsculas y minúsculas en los nombres de las variables.
Explica qué implicaciones tiene el hecho de que un compilador no distinga entre mayúsculas y minúsculas en los nombres de las variables.
¿Qué son las palabras reservadas y por qué no pueden ser usadas como identificadores?
¿Qué son las palabras reservadas y por qué no pueden ser usadas como identificadores?
Describe dos objetivos principales del perfil Ravenscar en el contexto de sistemas de tiempo real.
Describe dos objetivos principales del perfil Ravenscar en el contexto de sistemas de tiempo real.
¿Cómo ayuda el perfil de Ravenscar a realizar análisis temporales en sistemas de tiempo real?
¿Cómo ayuda el perfil de Ravenscar a realizar análisis temporales en sistemas de tiempo real?
¿En el contexto de la creación de tareas en C usando pthreads, qué significa pthread_create( &Tarea1, NULL, (void*)& control1, &args)
y cuáles son los roles de Tarea1
, control1
y args
?
¿En el contexto de la creación de tareas en C usando pthreads, qué significa pthread_create( &Tarea1, NULL, (void*)& control1, &args)
y cuáles son los roles de Tarea1
, control1
y args
?
En C/ARINC653, ¿cuáles son los parámetros clave que se configuran al crear un proceso mediante PROCESS_ATTRIBUTE_TYPE
y qué representan BASE_PRIORITY
y TIME_CAPACITY
?
En C/ARINC653, ¿cuáles son los parámetros clave que se configuran al crear un proceso mediante PROCESS_ATTRIBUTE_TYPE
y qué representan BASE_PRIORITY
y TIME_CAPACITY
?
Compara la creación de tareas en C usando pthreads y en C/ARINC653. ¿Cuál es una diferencia principal en la forma en que se definen y gestionan las prioridades de las tareas?
Compara la creación de tareas en C usando pthreads y en C/ARINC653. ¿Cuál es una diferencia principal en la forma en que se definen y gestionan las prioridades de las tareas?
En el contexto de sistemas de tiempo real, ¿por qué es importante definir PERIOD
y TIME_CAPACITY
al crear un proceso en C/ARINC653?
En el contexto de sistemas de tiempo real, ¿por qué es importante definir PERIOD
y TIME_CAPACITY
al crear un proceso en C/ARINC653?
Considerando el fragmento de código en C y su equivalente en Ada, ¿qué diferencias sintácticas y conceptuales clave existen al declarar variables integer
y float
en ambos lenguajes?
Considerando el fragmento de código en C y su equivalente en Ada, ¿qué diferencias sintácticas y conceptuales clave existen al declarar variables integer
y float
en ambos lenguajes?
En la conversión de código C a Ada, ¿qué cambios son necesarios para realizar una operación de escritura en la consola (equivalente a printf
en C) y qué paquete se utiliza en Ada para lograrlo?
En la conversión de código C a Ada, ¿qué cambios son necesarios para realizar una operación de escritura en la consola (equivalente a printf
en C) y qué paquete se utiliza en Ada para lograrlo?
¿Cuál es el propósito de la línea SET_PARTITION_MODE(NORMAL, &ret);
en C/ARINC653 y qué implicaciones tiene para la ejecución de las tareas dentro de la partición?
¿Cuál es el propósito de la línea SET_PARTITION_MODE(NORMAL, &ret);
en C/ARINC653 y qué implicaciones tiene para la ejecución de las tareas dentro de la partición?
Explica cómo la directiva #include
en C se relaciona con with
y use
en Ada. ¿Qué similitudes y diferencias existen en su funcionalidad y propósito?
Explica cómo la directiva #include
en C se relaciona con with
y use
en Ada. ¿Qué similitudes y diferencias existen en su funcionalidad y propósito?
Flashcards
¿Qué son los Lenguajes de Tiempo Real?
¿Qué son los Lenguajes de Tiempo Real?
Lenguajes diseñados para controlar y gestionar el tiempo de manera precisa y confiable en entornos donde las respuestas tardías pueden tener consecuencias graves.
¿Requisitos de lenguajes de Tiempo Real?
¿Requisitos de lenguajes de Tiempo Real?
Modelar el paralelismo del entorno, gestionar el tiempo (relojes, temporizadores), acceso a bajo nivel (manejo de interrupciones), robustez (manejo de errores), modelo de objetos y compilación eficiente.
¿Lenguajes más usados en sistemas de tiempo real?
¿Lenguajes más usados en sistemas de tiempo real?
C (eficiencia y proximidad al SO), C++ (modelo de objetos y concurrencia), Ada (características deseadas para tiempo real).
¿Por qué se usa C en tiempo real?
¿Por qué se usa C en tiempo real?
Signup and view all the flashcards
¿Qué son los lenguajes secuenciales?
¿Qué son los lenguajes secuenciales?
Signup and view all the flashcards
¿Qué es programación secuencial?
¿Qué es programación secuencial?
Signup and view all the flashcards
¿Qué es programación concurrente?
¿Qué es programación concurrente?
Signup and view all the flashcards
¿Qué es programación de tiempo real?
¿Qué es programación de tiempo real?
Signup and view all the flashcards
¿Qué son los paquetes en Ada?
¿Qué son los paquetes en Ada?
Signup and view all the flashcards
¿Qué son las tareas en Ada?
¿Qué son las tareas en Ada?
Signup and view all the flashcards
¿Qué son los objetos protegidos?
¿Qué son los objetos protegidos?
Signup and view all the flashcards
¿Qué es la cita en Ada?
¿Qué es la cita en Ada?
Signup and view all the flashcards
¿Qué es la inversión de prioridades?
¿Qué es la inversión de prioridades?
Signup and view all the flashcards
API (Interfaz de Programación)
API (Interfaz de Programación)
Signup and view all the flashcards
Lenguaje Secuencial
Lenguaje Secuencial
Signup and view all the flashcards
Tipificación Nominal vs. Estructural
Tipificación Nominal vs. Estructural
Signup and view all the flashcards
Información Precisa al Compilador
Información Precisa al Compilador
Signup and view all the flashcards
Lenguaje Ada
Lenguaje Ada
Signup and view all the flashcards
Nombres significativos
Nombres significativos
Signup and view all the flashcards
Mayúsculas y minúsculas
Mayúsculas y minúsculas
Signup and view all the flashcards
Palabras reservadas
Palabras reservadas
Signup and view all the flashcards
Perfil de Ravenscar
Perfil de Ravenscar
Signup and view all the flashcards
Sistemas de tiempo real estrictos
Sistemas de tiempo real estrictos
Signup and view all the flashcards
Ventaja de lenguajes secuenciales
Ventaja de lenguajes secuenciales
Signup and view all the flashcards
Ejemplo de lenguaje secuencial
Ejemplo de lenguaje secuencial
Signup and view all the flashcards
Otro lenguaje secuencial
Otro lenguaje secuencial
Signup and view all the flashcards
¿Qué son lenguajes concurrentes?
¿Qué son lenguajes concurrentes?
Signup and view all the flashcards
Unidad de ejecución concurrente
Unidad de ejecución concurrente
Signup and view all the flashcards
¿Qué hace la planificación en sistemas concurrentes?
¿Qué hace la planificación en sistemas concurrentes?
Signup and view all the flashcards
¿Qué se requiere para la sincronización en sistemas concurrentes?
¿Qué se requiere para la sincronización en sistemas concurrentes?
Signup and view all the flashcards
Problemas de lenguajes concurrentes
Problemas de lenguajes concurrentes
Signup and view all the flashcards
¿Qué es un 'Runtime Support (RTS)'?
¿Qué es un 'Runtime Support (RTS)'?
Signup and view all the flashcards
Dependencia de lenguajes secuenciales
Dependencia de lenguajes secuenciales
Signup and view all the flashcards
pthread_create
pthread_create
Signup and view all the flashcards
pthread_t Tarea1[Max]
pthread_t Tarea1[Max]
Signup and view all the flashcards
CREATE_PROCESS (ARINC653)
CREATE_PROCESS (ARINC653)
Signup and view all the flashcards
START (ARINC653)
START (ARINC653)
Signup and view all the flashcards
SET_PARTITION_MODE (ARINC653)
SET_PARTITION_MODE (ARINC653)
Signup and view all the flashcards
with Gnat.IO; use Gnat.IO (Ada)
with Gnat.IO; use Gnat.IO (Ada)
Signup and view all the flashcards
i : integer; (Ada)
i : integer; (Ada)
Signup and view all the flashcards
f : float; (Ada)
f : float; (Ada)
Signup and view all the flashcards
Study Notes
Sistemas de Tiempo Real y Lenguajes de Programación
- El tema central son los sistemas de tiempo real y los lenguajes de programación utilizados en ellos.
Contextualización de los Lenguajes de Programación
- Los lenguajes de programación en sistemas de tiempo real se analizan a partir de una introducción a la programación secuencial y concurrente.
- Se estudia Ada en detalle, incluyendo sus tipos, estructuras de control y paquetes.
- Se incluyen el estudio de tareas, objetos protegidos y comunicación.
- Se incluyen tareas periódicas y a periódicas, inversión prioridades, pragmas de programación y manejadores de dispositivos.
Índice de Contenidos
- Se consideran los requisitos para lenguajes de programación en sistemas de tiempo real.
- Los lenguajes secuenciales y concurrentes son importantes.
- Se compara C vs. Ada.
- El soporte de ejecución es un aspecto clave.
Elección del Lenguaje de Programación
- Una pregunta central es qué lenguaje de programación es el más adecuado para implementar un Sistema de Tiempo Real (STR).
- Se destacan los lenguajes ensambladores, secuenciales y concurrentes.
- En la evolución de lenguajes de programación se citan ALGOL, FORTRAN, COBOL y LISP.
- En los 1970's, Pascal y C.
- En los 1980's Modula-2 y ADA83.
- En los 1990's: Objective C, ADA95, Java y C++.
Requisitos en Sistemas de Tiempo Real
- Es necesario modelar el paralelismo del entorno mediante concurrencia.
- Se requiere gestionar y controlar el tiempo de forma adecuada.
- Se incluyen relojes y temporizadores.
- Los manejadores de errores (excepciones) son importantes para la robustez.
- Se requieren manejadores de interrupciones y definición de tipos con registros de dispositivos.
- Se utilizan modelos de objetos y tipos de datos orientados a objetos.
- Importante la compilación separada, transportable y eficiente.
Lenguajes para Sistemas Críticos y de Tiempo Real
- Los lenguajes más utilizados son C, C++ y Ada.
- C es popular por su eficiencia y proximidad al sistema operativo, aunque no ofrece muchas características deseables como concurrencia.
- C++ añade un modelo de objetos y concurrencia a C, pero carece de abstracciones propias de tiempo real.
- Ada está diseñado para sistemas empotrados de tiempo real y proporciona las características deseables.
- Method-Based Design permite la generación de código a partir de herramientas de modelado (Matlab Simulink).
Lenguajes Secuenciales
- Tienen un único flujo de control (thread o tarea).
- Poseen una estructura clara y son fáciles de analizar y depurar.
- En C el código realiza un incremento de una cantidad determinada de una variable global, mostrando pre y post condiciones.
- En ADA el código realiza un incremento de una cantidad determinada de una variable global, mostrando pre y post condiciones.
Lenguajes Concurrentes
- Permiten definir varios flujos de control que se ejecutan de forma concurrente.
- Se requiere planificación y mecanismos de comunicación/sincronización.
- Presentan problemas para la validación y depuración.
- Necesitan un soporte de ejecución (Runtime Support RTS).
Lenguaje Secuencial y su Dependencia del S.O. (API)
- Dependencia del Sistema Operativo a través de su API (Interfaz de Programación de Aplicaciones).
- Se utilizan abstracciones como procesos y threads.
- Se hace uso de la comunicación y sincronización que proporciona el API.
- El uso de ficheros y el manejo de excepciones también son aspectos importantes.
Tareas en C
- El ejemplo muestra cómo se crean tareas en C utilizando pthreads.
- Se define el número de tareas (NumeroTareas = 5).
- Se crea una función Sumador que incrementa un contador.
- Las tareas se crean y se espera a que terminen mediante pthread_join.
- Se verifica el resultado final.
Lenguaje Concurrente y su Dependencia del S.O. (API)
- Al igual que con los lenguajes secuenciales, existe una dependencia del Sistema Operativo a través de su API.
- El lenguaje concurrente necesita un soporte de ejecución.
- Igual que el secuencial, se utilizan abstracciones como procesos y threads.
- Igual que el secuencial, la comunicación y sincronización que proporciona el API son importantes.
- Igual que el secuencial, el uso de ficheros y el manejo de excepciones también son aspectos importantes.
Tareas en ADA
- Se muestra cómo se crean tareas en Ada utilizando la palabra clave task.
- Se define el número de tareas (NumeroTareas = 2).
- Se crea un tipo de tarea sumador que incrementa un contador.
- Las tareas se lanzan automáticamente al inicio del programa.
- Se espera a que terminen usando un bucle y un retardo.
- Se verifica el resultado final.
Programación Concurrente
- Las "razas" de código son endémicas en proyectos grandes debido a la inadecuación de las primitivas de sincronización tradicionales.
- La dificultad de manejar el acceso concurrente a datos lleva a ingenieros experimentados a evitarlo.
- La popularidad de Node.js y la programación reactiva/async (ej. Python Starlette) son alternativas para evitar problemas de concurrencia.
Lenguaje C
- Es uno de los lenguajes de programación más populares.
- Es un lenguaje sencillo y poco estructurado.
- Permite definir tipos de datos por el usuario, no exige una definición estricta de datos y es de nivel relativamente bajo.
- Permite la compilación separada además de ser barato y eficiente.
Versiones del Lenguaje C
- C común: Apareció en 1978, ligado al sistema operativo UNIX.
- C ANSI o C ISO: Estandarización en 1988 y luego en 1995 y 1999. Versión no ambigua y portable con asignación de estructuras, tipos enumerados, prototipos de funciones y librerías estándar.
Lenguaje C++
- Es un lenguaje derivado del C, pero más complejo.
- Incluye definición de módulos (clases), programación orientada a objetos, tipificación más estricta, tratamiento de excepciones y plantillas.
- C++ fue estandarizado en 1998.
Lenguaje Ada
- Ada es un lenguaje específicamente desarrollado para sistemas de tiempo real y sistemas empotrados.
- Fue promovido por el Departamento de Defensa de EE.UU.
- Se redactó un documento de requisitos en 1975.
- En 1979 se eligió el desarrollo de CII Honeywell Bull como vencedor y se nombró Ada en honor a Augusta Ada Byron.
Lenguaje Ada Características
- Fuertemente tipado (estricto) y muy estructurado.
- Modelo de objetos, tareas y mecanismos de comunicación y sincronización.
- Modelo de manejo de excepciones y gestión del tiempo.
- Modular (packages) con separación entre la especificación y la implementación.
Filosofía de ADA
- La legibilidad del código es más importante que la concisión.
- El código se debe leer muchas más veces de las que se escribe.
- Tipificación estricta para prevenir errores, El compilador no infiere nada sobre tipos (no interpreta las intenciones del programador).
- Detección de errores en tiempo de compilación.
Lenguaje Ada Características
- Diseñado para sistemas grandes y empotrados.
- Tiene distintas versiones: Ada83, Ada95, Ada2005, Ada 2012, Ada 2022.
- La norma ISO define un núcleo común y no permite la ambigüedad.
- Incluye anexos para sistemas de tiempo real (TR), sistemas distribuidos, programación de sistemas, sistemas de información y cálculo numérico.
Programa Ejemplo en ADA
- Los programas ADA incluyen: Cláusulas de Contexto, especificación del programa y comentarios.
- Se incluyen zonas declarativas el inicio de la secuencia y el fin del programa.
Aspectos Sintácticos en ADA Nombres
- Los nombres se conforman de una secuencia de letras y dígitos, empezando por una letra.
- Se usa "_" para separar partes del nombre.
- Los nombres deberían ser indicativos de lo que denotan deben representar.
- No se distinguen mayúsculas de minúsculas.
- Las palabras reservadas quedan excluidas.
Ada Ravenscar
- Es un subconjunto del lenguaje Ada pensado para sistemas de tiempo real.
- Impone restricciones a la parte concurrente del lenguaje para permitir análisis temporales.
- Permite un modelo de ejecución concurrente determinista y una implementación eficiente del núcleo de ejecución.
- Permite una implementación de "implementación pequeña y eficiente" y el código permite que las tareas puedan responder a plazos muy cortos.
Lenguaje Cy ADA Comparación
- Notación segura: asignación
- ADA: el código tiene la siguiente estructura
if (theSignal = Clear) then
OpenGates(....);
StartTrain(...);
end if;
Lenguaje Cy ADA Comparación
- Arrays
- En el caso de ADA la sintaxis segura debe incluir el índice dentro del rango, si no CONSTRAINT_ERROR.
ADA Concurrencia
- ADA incluye: Tareas, comunicación/sincronización, objetos protegidos y manejo de excepciones.
- Los programas incluyen:
task Periodic_Task is
pragma Priority(10);
end Periodic_Task;
task body Periodic_Task is
Periodo : Time_Span; Siguiente: Time;
begin
Siguiente := Clock;
loop
-- Acciones
Siguiente := Siguiente + Periodo;
delay until Siguiente;
end loop;
end Periodic_Task;
Lenguaje Cy ADA Comparación Concurrencia
-C no tiene modelo de concurrencia, se debe usar él ofrecido por el S.O. para generar tareas internas.
- El compilador de Cno tiene la semántica de las llamadas.
Programas C y ADA
- Se muestra un pseudocódigo de código ADA
- Se muestra un código de programa C que hace tareas cada periodo con una espera "delay" antes de volver a lanzarse.
Cy ADA Creación de Tareas
- Código C P/OSIX usando pthread
- Para varias tarea se puede usar un bucle para lanzar una tarea en cada ciclo.
C/ARINC65
- Se puede usar el código para tareas en lenguaje C
- Para varias tarea se puede usar un bucle para lanzar una tarea en cada ciclo.
De C a ADA
- Se presenta un diagrama de flujo del código, para su implementación en C y ADA
- Con sus respectivas sintaxis en ambos lenguajes.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.