Está en la página 1de 6

EVALUACIÓN: Capítulo 1

1. ¿Qué es un sistema en tiempo real? ¿Cuál es la diferencia entre uno estricto y uno no
estricto?

Es un tipo de sistema cuyo comportamiento será correcto si los resultados son conformes a las
especificaciones y si el momento en que se generan estos resultados es el adecuado (la
especificación debe tener en cuenta el tiempo máximo permitido para realizar una determinada
tarea). Un sistema en tiempo real debe integrar hardware, software y elementos de una base de
datos para conseguir este objetivo.

Sistemas en tiempo real estrictos – Son aquellos en los que es absolutamente imperativo que la
respuesta se produzca dentro del periodo de tiempo especificado. Por ejemplo, el control de
alarma de una central nuclear, o el control de vuelo de una aeronave.

Sistemas en tiempo real no estricto o flexible – Son aquellos en los que, siendo importantes las
limitaciones temporales, si éstas ocasionalmente no se cumplen el sistema aun funciona
correctamente. Un sistema de adquisición de datos podría caer dentro de esta clasificación.

2. Mencione y describa las principales características de los sistemas en tiempo real.

Tamaño y complejidad: Muchos de los problemas asociados al desarrollo del software están
relacionados con su tamaño y complejidad. Los sistemas en tiempo real se caracterizan por
responder a sucesos del mundo real, por lo que el software de tiempo real se encuentra
sometido a continuos cambios, lo que implica un constante mantenimiento.

Manipulación de números reales: Los lenguajes de programación de tiempo real deben permitir
operar con números reales y números de coma flotante (en control de procesos por ejemplo es
preciso poder calcular el valor del error a partir y poder realizar los cálculos que requiera el
algoritmo de control)

Confianza y seguridad: Los sistemas en tiempo real deben ser seguros. Para ello, los lenguajes
de programación de tiempo real tienen que permitir introducir instrucciones que impidan que se
produzcan errores inesperados.
Control concurrente de distintos componentes del sistema: En un sistema en tiempo real, el
computador se comunica con distintos componentes a los que debe atender de forma
simultánea. El mayor problema asociado a la producción del software para sistemas en los que
se produce concurrencia es cómo expresar esa concurrencia en la estructura del programa.

Facilidades de tiempo real. El tiempo de respuesta es crucial en un sistema en tiempo real. La


implementación es complicada y para facilitar la construcción de los sistemas en tiempo real, se
utilizan procesadores que tienen la capacidad de no producir retardos en períodos críticos de
operación del sistema.

Interacción con el hardware. El computador debe ser capaz de comunicarse con sensores,
actuadores y otros dispositivos. Estos dispositivos pueden generar interrupciones con el fin de
que la operación a realizar se produzca de forma adecuada.

Implementación eficiente. Al ser el tiempo crítico, la eficiencia de la implementación es más


importante que en otros tipos de sistemas. Así, si la respuesta a una determinada entrada se
requiere en microsegundos, se debe utilizar un lenguaje que permita realizar tareas en
microsegundos, por lo que los lenguajes compilados son los más utilizados.

3. ¿Qué es una interrupción y qué pasos se siguen para manejarla cuando se

produce una?

Una interrupción es un evento externo al que debe responder el sistema en un tiempo


especificado. Con frecuencia e deben establecer prioridades e interrupciones prioritarias ya que
suelen darse interrupciones múltiples.

El manejo de interrupciones implica almacenar información de tal forma que el computador


pueda restablecer correctamente la tarea interrumpida, así como evitar interbloqueos y bucles sin
fin.
Los pasos a seguir en el manejo de una interrupción son:

• Guardar el estado del programa interrumpido.

• Determinar la naturaleza de la interrupción.

• Servir a la interrupción.

• Restaurar el estado del programa interrumpido.

• Volver al programa interrumpido.

4. Diga qué criterios se suelen considerar cuando se programa un sistema en

tiempo real.

Seguridad. El análisis de seguridad se debe ir realizando a lo largo de cada una de las etapas
del ciclo de vida software.

Flexibilidad. El programador deber poder expresar todas las operaciones que se requieran de
una forma sencilla y coherente.

Legibilidad. Debe ser sencillo poder entender el funcionamiento de un programa leyendo el


código del mismo en dicho lenguaje de programación.

Simplicidad. Escribir el programa debe ser sencillo, con un número suficiente y no contradictorio
de componentes y criterios de combinación para las estructuras de control y manejo y definición
de los datos.

Eficiencia. Se debe garantizar que los tiempos de respuesta cumplen las especificaciones, de
forma que el programa sea eficiente y predecible.

Portabilidad. Independencia del hardware en el que se ejecutara. Es complicado en STRs pero ha


de tenerse en cuenta en la medida de lo posible.
5. ¿Qué es un sistema en tiempo real de tipo específico? ¿Y de tipo general?

Tipo 1 o general: El tiempo de ejecución medio debe ser inferior a un tiempo máximo
especificado.

Tipo 2 o específico: El resultado de cada cálculo individual debe ser completado dentro de un
tiempo máximo especificado.

6. Atendiendo a la forma en que se realizan las distintas acciones requeridas a un programa (es
decir, el orden en el que se realizan sus operaciones), ¿qué tres tipos de programación
existen?

Programación secuencial. Las acciones a realizar se ordenan de forma consecutiva. El


comportamiento del programa depende sólo de los efectos de las acciones individuales y de su
orden, no teniendo ninguna importancia el tiempo que lleve realizar una determinada acción.

Programación multitarea o concurrente. Las acciones que se deben realizar no son


necesariamente disjuntas en el tiempo; puede ser necesario que algunas tareas se realicen en
paralelo. No obstante, tales programas pueden estar formados por varias partes, que se
denominan tareas o procesos, que pueden ser parcialmente secuenciales, pero que se ejecutan
de forma a la vez.

Programación de tiempo real. Además de que sus acciones no necesitan ser disjuntas en el
tiempo, la secuencia de algunas de las acciones se determina por los sucesos que ocurran en el
entorno que influye sobre el programa. Un programa de tiempo real también puede ser dividido
en un número de tareas, pero la comunicación entre las tareas no tiene porque esperar una
señal de sincronización.

7. ¿Qué es el polling?

La forma más sencilla de sincronización es ver si ha ocurrido un suceso externo. Este método se
conoce como polling (sondeo) y se puede realizar de dos formas:
1.- Si el suceso no ha ocurrido el programa continúa con otras acciones antes de volver
a comprobar otra vez si se ha producido éste.

2.- El programa de forma continua repite la comprobación hasta que ocurre el suceso.

Se suele utilizar solo en sistemas pequeños.

8. ¿Qué tareas se realizan en la fase de diseño de un sistema en tiempo real?

En la fase de diseño preliminar se realizan las siguientes tareas:

• Se definen las distintas funciones del sistema.

• Se especifican las necesidades de comportamiento temporal.

• Se especifica el comportamiento en caso de fallo de algún componente.

• Se definen los test de aceptación que se deben pasar al software y al hardware.

• Se construye un modelo del entorno de la aplicación.

9. ¿Qué son la cohesión y el acoplamiento entendidos en el contexto de la descomposición de


un sistema en módulos?

Para descomponer un sistema grande en módulos, se debe tener en cuenta que una buena
descomposición es aquella que tiene fuerte cohesión y un acoplamiento débil. El acoplamiento
se dice que es fuerte si se produce intercambio de información de control entre los módulos. El
acoplamiento es débil si sólo se produce intercambio de datos entre los módulos.

Por otra parte, las siguientes medidas dan una indicación de la cohesión desde muy débil a muy
fuerte.

Casual: Los elementos del módulo están ligados de una forma muy superficial; por ejemplo,
escritos el mismo mes.

Lógico: Los elementos del módulo están relacionados en términos del sistema global, pero no
en términos del software utilizado. Un ejemplo es los drivers de los dispositivos de salida.
Temporal: Los elementos del módulo se ejecutan en tiempos similares; por ejemplo, rutinas de
arranque.

Procedural: Los elementos del módulo se usan juntos en la misma sección del programa. Un
ejemplo es los componentes de la interfaz gráfica de usuario de un programa.

Comunicacional: Los elementos del módulo trabajan sobre la misma estructura de datos; por
ejemplo, los algoritmos usados para analizar una señal de entrada.

Funcional: Los elementos del módulo trabajan juntos para contribuir a la realización de una única
función del sistema. Un ejemplo es procesamiento de datos de un sistema de ficheros
distribuidos.

10. ¿Qué se entiende por foreground y background y para qué se usan?

Los módulos o tareas con fuertes restricciones temporales son aquellos que están más ligados a
los procesos externos y se ejecutan en el denominado foreground, mientras que los módulos
con menores restricciones temporales, o sin ninguna restricción, son ejecutados en el llamado
background. A los módulos foreground se les dota de mayor prioridad y de un mecanismo que
les permite interrumpir las tareas que se ejecutan en el background.

También podría gustarte