Examen de SISTEMAS DE TIEMPO REAL 9 de septiembre de 2004 Primera parte (30 minutos, sin libros ni apuntes.) Pregunta 1. En un sistema de tiempo real se representa el tiempo absoluto mediante un tipo de datos entero sin signo, cuyos valores denotan el número de nanosegundos transcurrido desde un instante original (época). Si se quiere representar valores de tiempo hasta 100 años después de la época con una resolución de 50 ns, ¿cuántos bits tendrá que tener, como mínimo, la representación del tipo tiempo? Solución. En el intervalo de tiempo especificado (100 años) hay 100·365+25 = 36525 días (teniendo en cuenta los años bisiestos, y por tanto 36525·86400·109 = 3,156·1018 ns. Como el tipo de datos representa un número entero de nanosegundos, sin signo, el número de bits necesario es el menor entero mayor que log2 3,156·1018 = 61,45. Por tanto, hacen falta 62 bits para representar el tiempo en este sistema. Si se hubiera optado por representar el número de tics de 50 ns transcurridos, el número de bits necesario sería mayor o igual que log2 (3,156·1018/50·109) = 25,9, es decir 26 bits.s Pregunta 2. Explicar brevemente qué es una tarea periódica, y cuáles son sus requisitos temporales. Solución. Una tarea periódica es una tarea que se ejecuta a intervalos regulares de tiempo, activándose con un período fijo. Sus requisitos temporales son: período, fase, y plazo de respuesta máximo, relativo al comienzo de cada período. También se puede especificar una variación (jitter) máxima en la terminación de la acción. Pregunta 3. Dado el siguiente fragmento de un programa en Ada, indicar en qué instantes se ejecutará la operación Activity. Event : Ada.Synchronous_Task_Control.Suspension_Object; ... task body T is use Ada.Real_Time; begin loop Ada.Synchronous_Task_Control.Suspend_Until_True (Event); T1 := Clock; Activity; delay until T1 + Milliseconds (120); end loop; end T; Solución. La actividad se ejecutará esporádicamente, cuando otra tarea haga Set_True(Event), con una separación mínima de 120 ms entre una activación y la siguiente. Pregunta 4. Explicar brevemente cuál es el efecto de la ejecución de un manejador de interrupciones en los tiempos de respuesta de un sistema de tareas de tiempo real planificadas con prioridades fijas. Solución. El manejador de interrupciones se puede representar como una tarea esporádica, que se ejecuta con una prioridad igual a la de la interrupción y una separación igual a la separación mínima entre interrupciones. El manejador produce una interferencia en todas las tareas de aplicación, alargando por tanto su tiempo de respuesta. La interferencia que produce un manejador H en una tarea τi es: IH = R ------i- ⋅ C H TH 1 Examen de SISTEMAS DE TIEMPO REAL 9 de septiembre de 2004 Segunda parte (60 minutos, con libros y apuntes.) Pregunta 5. La figura representa un diagrama de diseño en notación HRT-HOOD de un sistema de tiempo real, en el cual los objetos Sensor y Switch se suponen ya implementados por los paquetes cuya especificación se muestra. package Sensor is type Variable is delta 0.01 range 0.0 .. 100.0; procedure Input (X : out Variable); end Sensor; C Controller package Switch is type Setting is (Off,On); procedure Output (S : Setting); end Switch; Pr Sensor Input Pa Switch Output Escriba un paquete Ada que realice el objeto Controller, de forma que el sistema se comporte de la siguiente manera: cada 150 ms se invoca Sensor.Input. Si el valor obtenido es mayor que 50.0, se pone Switch en Off, y si es menor que 45.0 se pone en On. Resuelva las ambigüedades que pudiera haber en la especificación de la forma que considere más oportuna, explicando las decisiones tomadas. Solución. Una posible implementación es: package Controller is pragma Elaborate_Body(Controller); end Controller; with Sensor, Switch, Ada.Real_Time; package body Controller is task Controller_Task is pragma Priority(10); -- por ejemplo end Controller_Task; task body Controller_Task is use Ada.Real_Time; T : constant Time_Span := Milliseconds(150); Upper_Limit : constant Sensor.Measurement := 50.0; Lower_Limite : constant Sensor.Measurement := 45.0; Next_Time Value : Time := Clock; : Sensor.Measurement; begin loop delay until Next_Time; Sensor.Input(Value); if Value > Upper_Limit then Switch.Output(Off); elsif Value < Lower_Limit then Switch.Output(On); end if; Next_Time := Next_Time + T; end loop; end Controller_Task; end Controller; Se ha supuesto que hay un tipo de coma flotante Measurement definido en Sensor, y un tipo enumerable (On,Off), definido en Switch. 2 Pregunta 6. (3 puntos) Un sistema de tiempo real tiene 4 tareas, T1-T4, y 2 objetos protegidos, P1, y P2. La siguiente tabla contiene los atributos temporales de las tareas, incluidos los tiempos de ejecución de las operaciones protegidas que ejecutan. Tarea Tipo T1 T2 T3 T4 Atributos P S P P Acceso a OP T C D P1 P2 120 500 25 80 10 12 8 20 50 20 25 80 — 2 — 5 6 4 — — Suponiendo que el método de planificación es el de prioridades fijas con desalojo, y el acceso a los objetos protegidos se realiza mediante el protocolo del techo de prioridad inmediato, se pide: 1. Asignar prioridades a las tareas y calcular los techos de prioridad de los objetos protegidos. 2. Calcular los tiempos de bloqueo máximos de las tareas. 3. Calcular el tiempo de respuesta en el peor caso de la tarea T1. Solución. 1. Las prioridades de las tareas se asignan de forma monótona en plazos, quedando en resumen como se indica en la tabla, en la que se indican también los techos de prioridad de los objetos protegidos: Tarea Tipo T1 T2 T3 T4 P1 P2 Atributos P S P P P T C D 2 4 3 1 4 4 120 500 25 80 10 12 8 20 50 20 25 80 2. Los tiempos de bloqueo máximos se calcula de las siguiente forma: T1 se puede bloquear como máximo una vez por las acciones de T4 en P1. Por tanto, B1 = 5. T2 se puede bloquear como máximo una vez por acciones de T1 y T4 en P2 y P1, respectivamente. Por tanto, B2 = max(6,5) = 6. T3 se puede bloquear por acciones de T1 en P2 y T4 en P1. Por tanto, B3 = max(6,5) = 6. T4 no se bloquea por ser la tarea de menor prioridad. La tabla de atributos temporales queda así: Tarea Tipo T1 T2 T3 T4 P S P P Atributos P T C B D 2 4 3 1 120 500 25 80 10 12 8 20 5 6 6 0 50 20 25 80 3 3. El tiempo de respuesta de T1 viene dado por: R R R 1 = C 1 + B 1 + -----1- ⋅ C 2 + -----1- ⋅ C 3 T2 T3 R R1 = 10 + 5 + -------- ⋅ 12 + -----1- ⋅ 8 500 25 Iterando, con w10 = 15: 1 15 ⋅ 12 + 15 ⋅ 8 = 35 w 1 = 10 + 5 + ------------500 25 2 35 ⋅ 12 + 35 ⋅ 8 = 43 w 1 = 10 + 5 + ------------500 25 3 43 ⋅ 12 + 43 w 1 = 10 + 5 + ------------- ⋅ 8 = 43 25 500 Por tanto, R1 = 43. 4