Parte I: Programación en Ada
|
|
|
- Veronica Ponce Torregrosa
- hace 7 años
- Vistas:
Transcripción
1 Parte I: Programación en Ada 1. Introducción a los computadores y su programación 2. Elementos básicos del lenguaje 3. Modularidad y programación orientada a objetos 4. Estructuras de datos dinámicas 5. Tratamiento de errores 6. Abstracción de tipos mediante unidades genéricas 7. Entrada/salida con ficheros 8. Herencia y polimorfismo 9. Programación concurrente y de tiempo real 4 GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 1 9. Programación concurrente y de tiempo real Concurrencia Sincronización de espera Sincronización de datos Programación de tiempo real Representación del hardware Interrupciones Gestión del tiempo Prioridades GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 2
2 9.1. Concurrencia Muchos problemas se expresan de forma natural mediante varias actividades concurrentes: sistemas de control atendiendo a múltiples subsistemas y eventos sistemas multicomputadores o distribuidos para el uso concurrente de múltiples recursos La concurrencia implica prever la sincronización: para la utilización de recursos y datos compartidos y para el intercambio de eventos e información GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 3 Tradicionalmente, existen tres entornos de aplicación en los que se utilizan programas concurrentes: En aplicaciones que interaccionan con o controlan entornos físicos, en los que múltiples eventos y subsistemas deben ser controlados a la vez. En estos sistemas una solución concurrente lleva a un mayor grado de modularidad y a un diseño más claro. En sistemas multicomputadores o distribuidos, donde el paralelismo físico se puede aprovechar al máximo ejecutando diferentes tareas en diferentes procesadores. En sistemas de cálculo convencional, si se desea utilizar múltiples recursos a la vez. Por ejemplo, en un sistema de ventanas, puede ser útil asociar tareas a determinadas clases de ventanas, de forma que puedan ejecutar diferentes actividades concurrentemente. Los programas concurrentes representan el modelo más natural para resolver muchos problemas del mundo real que son de naturaleza concurrente. También se pueden usar (a veces) aproximaciones no concurrentes para la programación de problemas de naturaleza concurrente, pero el problema es más difícil de abordar y, sobre todo, más difícil de modificar y extender, tal como se muestra en el ejemplo de control del automóvil que aparece a continuación. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 4
3 Ejemplo: Control de un Automóvil Actividades a controlar: Medida de Velocidad C=4 ms. Control de C=10 ms. T=20 ms. Frenos ABS T=40 ms. D=5 ms. D=40 ms. Control de Inyección C=40 ms. T=80 ms. D=80 ms. C = Tiempo de ejecución T = Periodo D = Plazo máximo de finalización GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 5 Programación no Concurrente procedure Control_del_Automóvil is Tiempo : Integer:=0; loop Acciones de Medida_de_Velocidad; if Tiempo=0 or Tiempo=40 then Acciones de Control de Frenos ABS; end if; if Tiempo=0 then Primera parte de control de inyección; --(<6 ms) elsif Tiempo=20 then Segunda parte de control de inyección; --(<16 ms) elsif Tiempo=40 then Tercera parte de control de inyección; --(<6 ms) else Cuarta parte de control de inyección; --(<16 ms) end if; Espera hasta el próximo periodo; --mediante el reloj GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 6
4 Programación no Concurrente (cont.) Tiempo:=Tiempo+20; if Tiempo=80 then Tiempo=0; end if; end loop; end Control_del_Automovil; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 7 Concurrencia en Ada El Ada soporta la programación de procesos concurrentes mediante las tareas ( tasks ). Las tareas constan de especificación y cuerpo: la especificación de una tarea declara sus puntos de entrada (si los hay) el cuerpo define una actividad que se ejecuta independientemente; tiene declaraciones e instrucciones Las tareas van en la parte de declaraciones de un módulo se arrancan nada más ser visibles el módulo que las declara no termina si no han terminado todas sus tareas GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 8
5 Programación concurrente procedure Control_del_Automóvil is task Medida_Velocidad; task Control_ABS; task Control_Inyeccion; task body Medida_Velocidad is loop Acciones de Medida_de_Velocidad; Esperar al próximo periodo (20 ms); end loop; end Medida_Velocidad; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 9 Programación concurrente (cont.) task body Control_ABS is is loop Acciones de Medida_de_Velocidad; Esperar al próximo periodo (40 ms); end loop; end Control_ABS; task body Control_Inyección is loop Acciones de Control de Inyección; Esperar al próximo periodo (80 ms); end loop; end Control_Inyección; null; -- el programa principal es otra tarea end Control_del_Automovil; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 10
6 9.2. Sincronización de espera La sincronización de espera entre tareas en Ada se realiza mediante el mecanismo del rendezvous, o punto de entrada, o punto de encuentro entre dos tareas Hay una tarea que llama, y otra que acepta el encuentro En la llamada se pueden pasar parámetros, como en un procedimiento La tarea que llama se queda esperando hasta que la tarea que acepta la llamada termine de ejecutarla Los puntos de entrada se declaran en la especificación En el ejemplo que se muestra a continuación una tarea (consumidora) debe esperar a un dato que le suministra la otra tarea (productora) GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 11 Ejemplo de sincronización de espera task Consumidor; task Productor is entry Espera_Dato(El_dato : out Dato); end Productor; task body Consumidor is Copia_del_dato : Dato; -- hace cosas Productor.Espera_Dato(Copia_Del_Dato); -- hace más cosas end Consumidor; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 12
7 Ejemplo de sincronización de espera task body Productor is Dato_Producido : Dato; -- calcula valor de Dato_Producido accept Espera_Dato (El_Dato : out Dato) do El_Dato:=Dato_Producido; end Espera_Dato; -- hace más cosas end Productor; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González Sincronización de datos La sincronización de datos, para compartir información de manera mutuamente exclusiva, se realiza mediante objetos protegidos El objeto protegido tiene una especificación con: parte visible: tiene funciones, procedimientos y puntos de entrada parte privada: contiene los datos protegidos Con las funciones y procedimientos se garantiza un acceso mutuamente exclusivo a la información protegida. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 14
8 Ejemplo de sincronización de datos type Coordenadas is record X,Y,Z : Float; end record; protected Datos_Avion is function Posicion return Coordenadas; procedure Cambia_Posicion (La_Posicion : Coordenadas); private Posicion_Avion : Coordenadas; end Datos_Avion; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 15 Ejemplo de sincronización de datos protected body Datos_Avion is function Posicion return Coordenadas is return Posicion_Avion; end Posicion; procedure Cambia_Posicion (La_Posicion : Coordenadas) is Posicion_Avion:=La_Posicion; end Cambia_Posicion; end Datos_Avion; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 16
9 Puntos de entrada en objetos protegidos Los puntos de entrada proporcionan la misma protección que los procedimientos protegidos, pero además: permiten a una tarea esperar, hasta que se cumpla una determinada condición la evaluación de esta condición también está protegida El ejemplo que se muestra a continuación implementa una cola con datos: utiliza el tipo abstracto de datos Cola las operaciones de la cola (Insertar, Extraer, etc.) están protegidas la operación de Extraer hace que la tarea espere hasta que haya datos disponibles GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 17 La sincronización de datos es necesaria para garantizar que la modificación o lectura de datos compuestos es consistente. Si por ejemplo una tarea está modificando un dato compuesto, y cuando sólo ha modificado una parte es interrumpida por otra tarea, esta segunda puede leer un dato inconsistente. La solución es la sincronización para acceso mutuamente exclusivo. En Ada esto se logra con los objetos protegidos. Los objetos protegidos proporcionan acceso mutuamente exclusivo mediante funciones, procedimientos o puntos de entrada protegidos. Los procedimientos protegidos funcionan de modo que no pueden ser interrumpidos por otro procedimiento o función protegido del mismo objeto. Los puntos de entrada, además de la protección equivalente a la de un procedimiento protegido, permiten que la tarea que los llama espere a que se cumpla una determinada condición. Esta condición se evalúa de forma protegida, es decir mutuamente exclusiva. Mientras la tarea espera, otras tareas pueden ejecutarse. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 18
10 Ejemplo con punto de entrada with Colas, Elementos; package Cola_Protegida is subtype Dato is Elementos.Elemento; protected Cola is procedure Inserta (El_Dato : Dato); entry Extrae (El_Dato : out Dato); -- si no hay datos, espera procedure Haz_Nula; private La_Cola : Colas.Cola; end Cola; end Cola_Protegida; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 19 Ejemplo con punto de entrada (cont.) package body Cola_Protegida is protected body Cola is procedure Inserta (El_Dato : Dato) is Colas.Inserta(El_Dato,La_Cola); end Inserta; entry Extrae (El_Dato:out Dato) when not Colas.Esta_Vacia(La_Cola) is Colas.Extrae(El_Dato,La_Cola); end Extrae; procedure Haz_Nula is Colas.Haz_Nula(La_Cola); end Haz_Nula; end Cola; end Cola_Protegida; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 20
11 9.4. Programación de Tiempo Real El Ada soporta la programación de sistemas empotrados y de sistemas de tiempo real, mediante los siguientes mecanismos: Representación del hardware Interrupciones Gestión del tiempo Prioridades Sincronización libre de inversión de prioridad Estos mecanismos están descritos en anexos opcionales: Anexo de programación de sistemas Anexo de sistemas de tiempo real GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 21 Un computador empotrado es aquel que forma parte de un sistema más grande. Por ejemplo, el computador que controla un robot o un avión. Generalmente son computadores con un hardware restringido en algunos aspectos (por ejemplo sin disco duro) y ampliado en otros aspectos de relación con el entorno (convertidores A/D y D/A, entrada/salida digital, etc.). Las necesidades especiales de programación se derivan precisamente de la necesidad de acceder directamente al hardware y de responder a interrupciones externas. Los sistemas de tiempo real son aquellos en los que no sólo importa la realización de unos determinados cálculos, sino el instante en el que se produce la salida de los resultados de estos cálculos. Ello se debe a que el sistema de tiempo real interacciona con un entorno cambiante con el tiempo. Normalmente, un sistema de tiempo real debe realizar diversas actividades de forma concurrente, y cada una de estas actividades presenta unos requerimientos de tiempo de respuesta que es preciso cumplir. Ello implica la necesidad de disponer de facilidades de programación tales como gestión del tiempo, poder dar más prioridad a aquellas tareas más urgentes, etc. Muchas de las facilidades que presenta el lenguaje Ada para sistemas empotrados y de tiempo real son opcionales, ya que se hallan contenidas en Anexos del lenguaje. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 22
12 9.5. Representación del Hardware En muchos sistemas los programas deben interaccionar directamente con el hardware Muchas veces se utiliza para ello lenguaje ensamblador El Ada proporciona mecanismos para establecer la correspondencia entre estructuras lógicas y representaciones físicas del hardware. Por ejemplo: asociación entre campos de registros y posiciones de bits posicionamiento de datos en direcciones de memoria concretas control de optimización GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 23 En general, si se programa en Ada no es necesario el uso del lenguaje ensamblador para acceder al hardware. El Ada permite: Expresar la correspondencia entre los campos de un registro y las posiciones de determinados bits en una palabra de la memoria. Está especialmente indicado para acceder a los registros de control y estado de dispositivos hardware. Es posible expresar la posición de memoria concreta en la que se pueden colocar una o más variables del programa. Esto permite acceder directamente a dispositivos hardware que están mapeados en memoria. Cuando los dispositivos hardware no están mapeados en memoria, el Ada permite expresar operaciones de entrada/salida de bajo nivel, para poder acceder a estos dispositivos a través del bus de entrada/salida. En Ada 95 se permite indicar al computador que determinadas variables corresponden a memoria física, bien porque son dispositivos hardware o bien porque son posiciones de memoria que van a ser compartidas en un multiprocesador. Esto permite al optimizador del programa saber que estas variables no se pueden optimizar. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 24
13 9.6 Interrupciones En los sistemas empotrados es preciso atender a las interrupciones provocadas por el hardware externo. En Ada 95 se permite especificar un procedimiento protegido como elemento de manejo de interrupciones. en este modelo, el hardware invoca directamente la ejecución del procedimiento protegido sólo funciona si el sistema operativo lo permite GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 25 Un requisito imprescindible de la programación de sistemas empotrados es el poder atender a las interrupciones que llegan a un sistema, generadas por el hardware externo. El Ada 95 define como mecanismo para manejo de interrupciones un procedimiento protegido. En este caso, cuando el hardware provoca una interrupción, el sistema se encarga de llamar de forma automática al procedimiento protegido que se ha asignado a esa interrupción. Esto sólo funciona si el sistema operativo lo permite. En los sistemas operativos protegidos, como Linux o Windows, no se permite a la aplicación gestionar interrupciones. En los sistemas operativos específicos para sistemas empotrados, habitualmente sí. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 26
14 Ejemplo: Tarea que espera a una interrupción Interrupción hardware Objeto protegido Tarea de usuario rutina servicio interrupción entry Espera when barrera is... barrera : boolean; otros datos compartidos GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 27 En el ejemplo de arriba hay un objeto protegido que tiene un procedimiento y un punto de entrada (entry): El procedimiento que hace las veces de rutina de servicio de interrupción se ha declarado para que atienda a una interrupción hardware, usando el pragma Attach_Handler. Cada vez que llega la interrupción se ejecuta este procedimiento. Lo que hace es poner la barrera a True; además puede hacer más cosas, como interaccionar con el hardware de interrupción y preparar datos para la tarea. La entry sólo se puede ejecutar cuando la barrera es True, es decir, cuando la interrupción ha llegado y ha sido procesada. Debe poner la barrera a False. Además, puede compartir datos del objeto protegido con la rutina de servicio de interrupción, y pasárselos a la tarea que llame a esta entry. Las tareas de usuario pueden llamar a la entry para esperar a que llegue la interrupción. Cuando llega, la entry se ejecuta (porque la barrera se pone a True). Por medio de los parámetros de la entry la tarea puede pasar datos al objeto protegido, y obtener datos de él. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 28
15 9.7 Gestión del Tiempo El Ada permite diversas formas de manejo del tiempo: Package Ada.Calendar, con funciones para saber la hora, fecha, etc. Package Ada.Real_Time para acceder a un reloj monótono, que se incrementa siempre Instrucciones delay until y delay, que permiten dormir a una tarea hasta que transcurra el instante o intervalo indicado - mientras una tarea está dormida, otras pueden ejecutar GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 29 El package Ada.Calendar permite acceder a procedimientos y funciones para consultar o cambiar la fecha y hora. Presenta el inconveniente de que la fecha y la hora normalmente dependen de factores sociales tales como el horario invierno/verano, etc. Con objeto de que las aplicaciones de tiempo real puedan disponer de un reloj que se incrementa siempre, se define el package Ada.Real_Time que permite saber la hora (desde un instante arbitrario). De esta forma se dispone de un reloj fiable para las aplicaciones de tiempo real. Las instrucciones delay y delay until permiten a una tarea suspenderse hasta que transcurra un determinado intervalo de tiempo, o se alcance un determinado instante de tiempo, respectivamente. Esta facilidad es de gran importancia en programas de tiempo real. Mientras la tarea se halla suspendida, otras tareas que estén activas (es decir no suspendidas) pueden ejecutar. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 30
16 Paquete Ada.Calendar package Ada.Calendar is type Time is private; subtype Year_Number is Integer range ; subtype Month_Number is Integer range ; subtype Day_Number is Integer range ; subtype Day_Duration is Duration range _400.0; function Clock return Time; function Year (Date : Time) return Year_Number; function Month (Date : Time) return Month_Number; function Day (Date : Time) return Day_Number; function Seconds (Date : Time) return Day_Duration; function Time_Of (Year : Year_Number; Month : Month_Number; Day : Day_Number; Seconds : Day_Duration := 0.0) return Time; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 31 Paquete Ada.Calendar function "+" (Left : Time; Right : Duration) return Time; function "+" (Left : Duration; Right : Time) return Time; function "-" (Left : Time; Right : Duration) return Time; function "-" (Left : Time; Right : Time) return Duration;... end Ada.Calendar; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 32
17 Ejemplo -- Imprimir en pantalla el día, mes y año actuales, -- y luego las horas y minutos with Ada.Calendar, Ada.Text_Io; use Ada.Calendar; use Ada.Text_Io; procedure Muestra_Dia_Y_Hora is Instante : Time:=Clock; Hora : Integer := Integer(Seconds(Instante))/3600; Minuto : Integer := (Integer(Seconds(Instante))-Hora*3600)/60; Put_Line("Hoy es "&Integer'Image(Day(Instante))&" del "& Integer'Image(Month(Instante))&" de "& Integer'Image(Year(Instante))); Put_Line("La hora es : "&Integer'Image(Hora)& ":"&Integer'Image(Minuto)); end Muestra_Dia_Y_Hora; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 33 El paquete Ada.Calendar contiene el tipo Time, que representa un instante de tiempo. Se puede combinar en operaciones con el tipo predefinido Duration, que representa un intervalo relativo de tiempo. La función Clock permite obtener la fecha y hora actual, del tipo Time. Para obtener a partir de este dato el año, mes, día, o segundos dentro del día, (y al revés) existen también funciones en Ada.Calendar. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 34
18 Tareas periódicas Con la instrucción delay until es posible hacer tareas periódicas: task body Periodica is Periodo : constant Duration:=0.050; -- en segundos Proximo_Periodo : Time := Clock; loop-- hace cosas Proximo_Periodo:=Proximo_Periodo+Periodo; delay until Proximo_Periodo; end loop; end Periodica; GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 35 Tareas periódicas También se puede hacer lo mismo (pero mal) con la orden delay: task body Periodica is Periodo : constant Duration:=0.050; -- en segundos Proximo_Periodo : Time := Clock; loop -- hace cosas Proximo_Periodo:=Proximo_Periodo+Periodo; delay Proximo_Periodo-Clock; end loop; end Periodica; En este caso la tarea puede ser interrumpida por otra entre la lectura del reloj (con Clock) y la ejecución del delay. Esto provocaría un retraso mayor que el deseado. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 36
19 9.8 Prioridades El Ada utiliza el sistema de tareas expulsoras (o desalojantes) por prioridad fija: cuando una tarea de alta prioridad se activa, desaloja a otra tarea de menor prioridad que se esté ejecutando A cada tarea se le asigna una prioridad: pragma Priority(13); Esta prioridad se puede modificar, usando las operaciones del paquete Ada.Dynamic_Priorities Mediante la planificación de tareas por prioridades fijas, es posible garantizar la respuesta en tiempo real de las tareas. La teoría RMA permite realizar el análisis del sistema GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 37 El sistema de planificación expulsora de tareas por prioridad fija es muy comúnmente utilizado en la mayoría de los sistemas de tiempo real construidos en la práctica. En este tipo de planificación, el planificador de tareas, que es la parte del software encargada de decidir qué tarea es la que se va a ejecutar, ejecuta la tarea de más alta prioridad de todas las que estén activas. La expulsión implica que si una tarea está siendo ejecutada y en ese momento otra tarea de prioridad más alta se activa para ejecutar, la tarea de prioridad más alta "expulsa" a la de prioridad baja de la CPU, y pasa a ser ejecutada. Para asignar una prioridad a una tarea se usa el pragma Priority en la especificación de la tarea. También se puede asignar prioridad al programa principal, con el mismo pragma. En el Ada 95 se permite que la prioridad de las tareas cambie. Para ello se cuenta con el paquete Ada.Dynamic_Priorities, que tiene las operaciones Set_Priority y Get_Priority. La teoría RMA (Rate Monotonic Analysis) ayuda a hacer una buena asignación de prioridades, y muestra cómo es posible predecir matemáticamente si el sistema va a cumplir todos sus requerimientos temporales. (Ver "A Practitioner's Handbook for Real-Time Analysis", por M.Klein, T. Ralya, B. Pollak, R. Obenza, y M. González, Kluwer Academic Pub., 1993). GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 38
20 Inversión de prioridad En la sincronización de datos puede aparecer la inversión de prioridad: una tarea de alta prioridad puede verse forzada a esperar a que una de menor prioridad termine esto provoca retrasos enormes, inaceptables en sistemas de tiempo real Para evitarla existe el protocolo de techo de prioridad, asociado a los objetos protegidos: a cada objeto protegido se le asigna un techo de prioridad con el pragma Priority debe ser igual o superior a las prioridades de las tareas que usan ese objeto protegido GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 39 Cuando las tareas de un sistema de tiempo real se sincronizan pueden ocurrir inversiones de prioridad, que causan que una tarea de alta prioridad esté esperando a que otra tarea de baja prioridad termine. Esto puede provocar que el tiempo de respuesta sea muy alto, y por tanto es inaceptable en sistemas de tiempo real. Para evitar este problema, el Ada cuenta con un mecanismo especial, llamado el techo de prioridad, por el que las tareas modifican su prioridad al sincronizarse. Para que funcione correctamente este mecanismo, debemos asignar a cada objeto protegido un techo de prioridad, usando el pragma Priority. Este techo debe calcularse de manera que sea igual o superior (mejor igual) a las prioridades de las tareas que pueden usar ese objeto compartido. GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez, Michael González 40
Seminario de Programación en Ada
Seminario de Programación en Ada Bloque II Programación de tiempo real GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez, Héctor Pérez 19 Programación de Tiempo Real El Ada soporta
Planificación de tareas en Ada
dit UPM Planificación de tareas en Ada Juan Antonio de la Puente DIT/UPM Características generales Modelo básico planificación con prioridades dinámicas» también EDF políticas de despacho para tareas con
Sistemas de Tiempo Real Planificación de Sistemas de Tiempo Real
Sistemas de Tiempo Real Planificación de Sistemas de Tiempo Real Javier García Martín Capítulo 4 Planificación de Sistemas de Tiempo Real 1. Introducción 2. Ejecutivo Cíclico 3. Prioridades de tareas en
Parte I: Programación en Ada
Parte I: Programación en Ada 1. Introducción a los computadores y su programación 2. Elementos básicos del lenguaje 3. Modularidad y programación orientada a objetos 4. Estructuras de datos dinámicas 5.
Gestión del tiempo en Ada
dit UPM Gestión del tiempo en Ada Juan Antonio de la Puente DIT/UPM El tiempo en Ada La gestión del tiempo en Ada está integrada en el lenguaje y en el modelo de tareas relojes relojes de tiempo de ejecución
dit Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM UPM Copyright 2007, Juan Antonio de la Puente
dit UPM Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM Copyright 2007, Juan Antonio de la Puente Objetivos Plantear los problemas básicos relacionados con el cumplimiento de los
Prácticas de Sistemas Operativos
Prácticas de Sistemas Operativos GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 1 Práctica 1 Gestión de procesos y threads Objetivos: Practicar la gestión de procesos y threads concurrentes Desarrollar
Introducción al Lenguaje de Programación Ada
Instrumentación de Tiempo Real Introducción al Lenguaje de Programación Ada Mario Aldea Rivas Departamento de Electrónica y Computadores Universidad de Cantabria GRUPO DE COMPUTADORES Y TIEMPO REAL Mario
Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software.
Junio 2008 Programación Concurrente 1/6 Normas Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software Este examen es un cuestionario
Programación Concurrente y Paralela. Unidad 1 Introducción
Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el
Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)
Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional () adicional () Preparado Preparado
Planificación con prioridades
dit UPM Planificación con prioridades Juan Antonio de la Puente DIT/UPM Copyright 2007, Juan Antonio de la Puente Planificación El objetivo de los métodos de planificación (scheduling) es repartir el tiempo
Sistemas Operativos. Daniel Rúa Madrid
Sistemas Operativos Daniel Rúa Madrid Qué es? Es un programa que administra el hardware de una computadora. También proporciona las bases para los programas de aplicación y actúa como intermediario entre
Tema 12: El sistema operativo y los procesos
Tema 12: El sistema operativo y los procesos Solicitado: Tarea 06 Arquitecturas de una computadora y el funcionamiento del software M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected]
Concurrencia de Procesos
Concurrencia de Procesos Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo)
Introducción a los Sistemas Operativos
Introducción a los Sistemas Operativos Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] 1 Índice General Conceptos sobre ordenadores Concepto
Sistemas Operativos. Introducción. Tema 6
Sistemas Operativos Introducción Qué es un sistema operativo? Ubicación de un sistema operativo en un computador Descripción de un sistema operativo: Funcional Estructural Realización Funciones de los
Parte I: Programación en Ada
Parte I: Programación en Ada 1. Introducción a los computadores y su programación 2. Elementos básicos del lenguaje 3. Modularidad y programación orientada a objetos 4. Estructuras de datos dinámicas 5.
SISTEMAS OPERATIVOS. Ing. Raúl Alberto Rojas Reátegui
SISTEMAS OPERATIVOS Ing. Raúl Alberto Rojas Reátegui OBJETIVOS PEDAGOGICOS Describir las principales características de un Sistemas operativos. Describe las principales características de sistemas operativos
LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS
LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS Programación en Fortran Valentín Moreno ÍNDICE 1. Subprogramas 2. Funciones 3. Subrutinas 2 3 1. SUBPROGRAMAS 1. SUBPROGRAMAS Si necesitamos usar con frecuencia
Introducción a los Sistemas Operativos S.O.
Introducción a los Sistemas Operativos S.O. Contenido 1. Conceptos 2. Evolución de los Sistemas Operativos 3. Administración del Entorno de Hardware 1. CONCEPTOS 1.1. Definición de Sistema Operativo Es
Convivencia Gestión de Procesos
Convivencia Gestión de Procesos Dra. Carolina Mañoso Dpto. Informática y Automática.UNED Índice: Procesos Introducción a los procesos Estados de los procesos Listas de procesos El planificador de procesos
Tema 1: Introducción a los Sistemas Operativos
Tema 1: Introducción a los Sistemas Operativos Yolanda Blanco Fernández [email protected] Qué es un Sistema Operativo (SO)? Un programa que actúa como intermediario entre el usuario y el hardware del
Programación concurrente
Programación concurrente Master de Computación I Conceptos y recursos para la programación concurrente: I.1 Motivación de la programación concurrente. J.M. Drake M. Aldea Motivación de la programación
SISTEMAS EN TIEMPO REAL
SISTEMAS EN TIEMPO REAL Año académico: 2006/07 Centro: Escuela Politécnica Superior Estudios: Ingeniero Técnico en Informática de Sistemas Asignatura: Sistemas en Tiempo real Ciclo: 1º Curso: 3º Cuatrimestre:
Acceso coordinado a recursos compartidos
Programación Concurrente en Linux Acceso coordinado a recursos compartidos Alberto Lafuente, Dep. KAT/ATC de la UPV/EHU, bajo Licencia Creative Commons 1 Contenido 1. Recursos compartidos 2. Mecanismos
Sistemas Operativos Tema 2: Estructura del computador José Miguel Santos Alexis Quesada Francisco Santana
Sistemas Operativos Tema 2: Estructura del computador 1998-2008 José Miguel Santos Alexis Quesada Francisco Santana 1 Contenidos Estructura de la E/S Sistema de Interrupciones DMA Jerarquía de memorias
T E M A 7. Interrupciones
T E M A 7 Interrupciones 7-1 Interrupciones INDICE 7.- Introducción al Tema 7-2 7.1 Interrupciones 7-2 7.1.1 Tipos de Interrupciones 7-2 a).- Interrupciones de Programa 7-2 b).- Interrupciones de Llamada
Tarea 2. Descripción y Control de Procesos
1 Tarea 2. 1. En qué consiste una traza de instrucciones? Consiste en listar las secuencias de instrucciones que ejecuta cada proceso. El procesador puede caracterizarse mostrando la forma en que intercalan
Bloque I: Principios de sistemas operativos
Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.
Sistemas Operativos. Un sistema operativo es un conjunto de programas de computadora diseñados especialmente para cubrir los siguientes objetivos:
Qué es un Sistema Operativo? Sistemas Operativos Un sistema operativo es un conjunto de programas de computadora diseñados especialmente para cubrir los siguientes objetivos: 1. Servir como interfaz entre
ESTRUCTURA DE INTERCONEXIÓN DE UN COMPUTADOR
ESTRUCTURA DE INTERCONEXIÓN DE UN COMPUTADOR 1 Arquitectura Von Neumann se fundamente en tres ideas: En la memoria del ordenador se almacenan indistintamente datos e instrucciones. Se puede acceder a la
Conceptos de Planificación
Conceptos de Planificación Conceptos de Planificación Planificación Planificación de Procesos de Procesos Algoritmos Algoritmos Estructura Estructura Propiedades Propiedades Tipos Tipos Evaluación Evaluación
TEMA 10 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS DISTRIBUIDOS. Introducción Hardware Software Aspectos de diseño
TEMA 10 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS DISTRIBUIDOS Introducción Hardware Software Aspectos de diseño 1 Introducción Aparecen en los 80 Desarrollo de Microprocesadores LAN Sistemas Distribuidos:
TEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS
TEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS Introducción Hardware Software Aspectos de diseño 1 Introducción Aparecen en los 80 Desarrollo de Microprocesadores LAN Sistemas Distribuidos: Gran nº de procesadores
EXAMENES RESUELTOS DE PROGRAMACION I
EXAMENES RESUELTOS DE PROGRAMACION I Comentarios por Jose Antonio Vaqué EXAMEN DE septiembre 1994, Reserva Soluciones no oficiales 1.- Determinar los valores reales válidos en Modula-2: a) 56.2F-54 y 2.2
Bloque II. Elementos del lenguaje de programación Java
Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida
Concurrencia. Concurrencia
Concurrencia Procesos y hebras Concurrencia Programación concurrente Por qué usar hebras y procesos? Ejecución de procesos Ejecución de hebras Hebras vs. Procesos Creación y ejecución de hebras La prioridad
Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi
Concurrencia, exclusión mutua y sincronización Capítulo 5 HungriaBerbesi 1 Concurrencia Múltiples aplicaciones Aplicaciones estructuradas Estructura del sistema operativo 2 Concurrencia 3 Sección Crítica:
Tema 3 - Modelado con HDL a nivel RTL
- Modelado con HDL a nivel RTL Eduardo Rodríguez Martínez Departamento de Electrónica División de Ciencias Básicas e Ingeniería Universidad Autónoma Metropolitana Unidad Azcapotzalco Email: [email protected]
ARQUITECTURA DE LOS SUBSISTEMAS DE BUSES Y ENTRADA/SALIDA
U C V F A C C I E N C I A S Organización y Estructura del Computador II ARQUITECTURA DE LOS SUBSISTEMAS DE BUSES Y ENTRADA/SALIDA T e m a 2 G D O E C - II S e m e st r e I - 2012 AGENDA Subsistema de Buses
Arquitectura de computadores I
Arquitectura de computadores I Perspectiva de alto nivel de los computadores Septiembre de 2017 Contenido Componentes del computador Funcionamiento del computador Estructuras de interconexión Interconexión
Sistemas Distribuidos de Tiempo Real
MASTER EN COMPUTACIÓN Sistemas Distribuidos de Tiempo Real PRÁCTICAS: Distribución con Ada y CORBA Por: J. Javier Gutiérrez [email protected] Héctor Pérez Tijero [email protected] http://www.ctr.unican.es/
Práctica 4: Desarrollo de clientes bajo TCP y UDP.
Práctica 4: Desarrollo de clientes bajo TCP y UDP. Autores: Enrique Bonet Rogelio Montañana Paco Soriano Objetivo y descripción general. El objetivo de esta práctica es el desarrollo de dos clientes, uno
Tema 6: Gestión de la Entrada/Salida
Tema 6: Gestión de la Entrada/Salida SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla - La
1. Para qué sirve un Descriptor de Dispositivo? Qué funciones del sistema operativo acceden a ellos y para qué?
1 2 3 4 5 6 7 8 Sistemas Operativos II Junio 2008 Nombre: Problema 1 [1,5 puntos] ITIS Castellano 1. Para qué sirve un Descriptor de Dispositivo? Qué funciones del sistema operativo acceden a ellos y para
ENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda
Tipos de Dispositivos ENTRADA-SALIDA 1. Dispositivos de Bloque: Almacena información en bloques de tamaño fijo (512b hasta 32Kb) Se puede leer o escribir un bloque en forma independiente 2. Dispositivos
INFORMATICA III. Cap. I: Plataformas
INFORMATICA III Cap. I: Plataformas Plataformas Código nativo y portable Máquinas virtuales Servidores Estaciones de trabajo Clientes delgados Dispositivos embebidos Dispositivos móviles Plataformas Hardware
Tema 7. Entrada / Salida
Tema 7 Entrada / Salida Problemática Entrada/Salida Elementos claves en un computador: Procesador, memoria y módulos de E/S Cada módulo de E/S se conecta al bus del sistema y controla a uno o a más periféricos
Paralelismo _Arquitectura de Computadoras IS603
Paralelismo _Arquitectura de Computadoras IS603 INTRODUCCION El objetivo de esta investigación, es conceptualizar las diferentes tipos de paralelismo referente al área de Arquitectura de Computadoras,
Estructura de los sistemas de cómputo
Estructura de los sistemas de cómputo Introducción Elementos básicos de un computador Registro del procesador Ejecución de las instrucciones Interrupciones Hardware de protección Introducción Qué es un
Sistemas Operativos Preguntas de Revisión
Respuestas Orientadoras e incompletas (en algunos casos) a las preguntas de revisión. Favor tomarlas como orientadoras. Revisión Unidad IV Planificación de Procesos 1. Cuál es el objetivo de la planificación?
Manual de turbo pascal
Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de
Un importante problema para sistemas de la nueva generación
Un importante problema para sistemas de la nueva generación J. A. Stankovic, Misconceptions about Real-Time Computing: A Serious Problem for Next Generation Systems, IEEE Computer, October 1988. Manifestar
TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.
1 TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. 1- Cuáles son las principales funciones de un sistema operativo? Los Sistemas Operativos tienen como objetivos o funciones principales lo siguiente; Comodidad;
Tema 2. GENERALIDADES SOBRE SISTEMAS OPERATIVOS 1, MAQUINA DESNUDA.
Tema 2. GENERALIDADES SOBRE SISTEMAS OPERATIVOS 1, MAQUINA DESNUDA. El término de máquina desnuda se aplica a una computadora carente de sistema operativo, el término es interesante porque resalta el hecho
Fiabilidad y Tolerancia a Fallos
Fiabilidad y Tolerancia a Fallos Los sistemas empotrados es usual que presenten requerimientos de fiabilidad y seguridad Cada vez mas se utilizan sistemas de control de tiempo real en sistemas críticos
Cena de filosofos y sincronizacion java
Programación concurrente y Distribuída Curso 2011-12 Miguel Telleria, Laura Barros, J.M. Drake telleriam AT unican.es Computadores y Tiempo Real http://www.ctr.unican.es Objetivos Presentaros la aplicación
Introducción a los sistemas de tiempo real
1 dit UPM Introducción a los sistemas de tiempo real Juan Antonio de la Puente DIT/UPM Transparencias basadas en el capítulo 1 del libro de A. Burns y A. Wellings Real-Time Systems and Programming Languuages,
6. Entrada y Salida Explicación de la interfaz entre el computador y el mundo exterior.
6. Entrada y Salida Explicación de la interfaz entre el computador y el mundo exterior. 6.1. El subsistema de E/S Qué es E/S en un sistema computador? Aspectos en el diseño del subsistema de E/S: localización
INDICE 1. Introducción 2. Entrada / Salida: Principios y Programación 3. Procesos
INDICE Prólogo XV 1. Introducción 1 1.1. Evolución de los sistemas operativos 2 Procesamiento en serie 3 Procesamiento por lotes 4 Multiprogramación 7 1.2. Tipos de Sistemas Operativos 9 Sistemas operativos
INGENIERÍA DE COMPUTADORES 3. Solución al Trabajo Práctico - Junio de 2017
Solución al Trabajo Práctico - Junio de 2017 EJERCICIO 1 Se desea diseñar un circuito digital que implemente las funciones F y G cuya tabla de verdad se muestra a continuación, que dependen de las tres
El Archivo. Concepto y finalidad 1
UF0347 Sistemas de archivo y clasificación de documentos El Archivo. Concepto y finalidad 1 Qué? Es importante saber aplicar las diferentes técnicas de archivo que hay, ya sea de modo convencional o informático,
Introducción a los Sistemas Operativos
Introducción a los Sistemas Operativos Parte II USB Servicios de los SO Interfaz de usuario Ejecución de programas Operaciones de E/S Manipulación de archivos Comunicaciones Detección de errores 1 Funciones
TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O
TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema
