Unidad Didáctica 4: Estudio de las diferentes arquitecturas de software Sistemas embebidos para tiempo real.

Slides:



Advertisements
Presentaciones similares
Planificación de Monoprocesadores
Advertisements

Planificación de Tareas Aperiodicas
Planificación de Tareas Aperiodicas
Ing. Jorge A. Abraham Técnicas Digitales II
RMA en μCOS para Sistemas Embebidos INTEGRANTES: CIANCIOSI, AGUSTIN MUSSOLINI, DIEGO.
Applications Development I 6.1 Foro Tomas Anzalotta Alvarado.
AYUDANTÍA 2 Lenguaje Imperativo y Java. Punteros Dirección a memoria (puede apuntar a NULL). Permite trabajar con memoria (variables dinámicas de heap).
ESTRUCTURAS DE DATOS Y ALGORITMOS Samuel Peñaló
Sistemas embebidos de tiempo real - Datos compartidos: soluciones 1 Unidad Didáctica 3: Arquitectura de microcontroladores & Interrupciones Sistemas embebidos.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Organización de computadoras
Estructuras de Control en Visual Basic.net
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Procesadores superescalares
Pipelining Peligros de control.
SISTEMAS OPERATIVOS Sección Crítica.
UNIDAD III: LAS TIC COMO FUENTES DE INVESTIGACION y DIFUSION DE INFORMACION Objetivo: Conocer y aplicar adecuadamente los principios básicos de estructura.
Procesos Concurrentes
U.T. 11: Introducción A Las Bases De Datos
Etapa Final del Proyecto
Estructuras de Control en Visual Basic.net
ADMINISTRACíON DE LA MEMORIA EN SISTEMAS RECIENTES
Programación Básica con NQC
CARRERA DE INGENIERÍA EN SISTEMAS E INFORMÁTICA
Monitores Mecanismo sincronización de nivel más alto que semáforos Construcción a nivel de lenguaje de programación que controla el acceso a datos compartidos.
Unidad 7: Nivel Interno Algunos Conceptos Importantes
ARQUITECTURA DE HARD WARE COMPONENTES EN BLOQUES DEL PROCESADOR
Entrada Salida Rina Arauz.
Unidad 2. Algoritmos Unidad 4. Control de flujo
Unidad 3. Introducción a la programación
Introducción a las estructuras de datos
PROCESOS COMENZAR.
JAVIER ANDRES MARTÀ MARTINEZ CODIGO 37772
PICOBLAZE RESUMEN.
DISPOSITIVOS DE E/S IU Colegio Mayor del Cauca Sistemas operativos Popayán, mayo de 2015.
ESTRUCTURAS DE CONTROL EN VISUAL BASIC.NET Prof.: Rafael Mourglia.
Multitareas en Arduino
Tipos de Relaciones de Red
Programación: paradigma estructurado Mgs Christian Rosado.
HERRAMIENTAS DE PROGRAMACIÓN
L.I. Gerardo Ortiz Rivera
ESTRUCTURA DEL SISTEMA OPERATIVO INTEGRANTES: *CARBAJAL GONZALES, ESMERALDA *GONZALES CABRERA, MIRIAM *OTRIZ SARAVIA, KAREN.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS.
L.I. Gerardo Ortiz Rivera
Fundamentos de programación
Tema: Componentes lógicos de un ordenador. Mediante el sistema de numeración binario, es decir, usando los dígitos 0 y 1. Lo único que transmite,
Pipelining Peligros de control.
EL TDA COLA Estructuras de Datos.
“Conceptos Básicos de Java”
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
ESTRUCTURA DE SISTEMAS OPERATIVOS Carbajal Rojas karla.
COLAS O LINEA DE ESPERA EN C# SHARP. ¿QUE ES UNA COLA O LINEA DE ESPERA?  Es una estructura de datos que almacena elemento en una lista y permite acceder.
El procesador Datapath y control.
Gestión del sistema de entrada / salida
Pipelining Peligros de control.
SISTEMAS OPERATIVOS JOSE ANGEL MORENO B. Ingeniero de Sistemas TP # Copnia Universidad Incca de Colombia CORPORACI Ó N UNIVERSITARIA REMINGTON.
Procesos Lic. Gonzalo Pastor.
ALGORITMO DE ORDENAMIENTO POR BURBUJA. El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS CHACALIAZA BOZA MARGARET AMARLLY.
UNIVERSIDAD PRIVADA SAN JUAN BAUTISTA FILIAL CHINCHA ESCUELA PROFESIONAL DE INGENIERÍA DE COMPUTACIÓN Y SISTEMAS Por: Nestares Torres Luis Jesús Enrique.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS CHACALIAZA BOZA MARGARET AMARLLY.
Estructura de Sistemas Operativos
Ha llegado el momento de dar una mirada al interior de los Sistemas Operativos. En las siguientes secciones examinaremos cuatro estructuras distintas.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS. Estos sistemas no tienen una estructura definida, sino que son escritos como una colección de procedimientos donde.
Estructura de los Sistemas Operativos
SISTEMAS OPERATIVOS Estudiante: Rojas De la Cruz Jesus Manuel. Ciclo: VI. Turno: Noche.
Hilos de Procesamiento. Hilos Concepto Beneficios Hilos a nivel kérnel y a nivel usuario Modelos multihilos Hilos de Solaris 2 Hilos de Java.
Transcripción de la presentación:

Unidad Didáctica 4: Estudio de las diferentes arquitecturas de software Sistemas embebidos para tiempo real

Sistema embebidos para tiempo real - Arquitecturas de Software 2 Índice ● Introducción ● Round-Robin (procesamiento secuencial) ● Round-Robin con interrupciones ● Planificación por cola (o encolado) de funciones ● RTOS (Sistema Operativo de Tiempo Real) ● Resumen

Sistema embebidos para tiempo real - Arquitecturas de Software 3 Introducción ● Recordar: – ISR son “llamadas” por HW – Tareas: ejecutada por software ● Restricciones de tiempo de respuesta. ● Para un problema dado: – ¿Como seleccionar una arquitectura de software?

Sistema embebidos para tiempo real - Arquitecturas de Software 4 Elección de la arquitectura: factores ● Factor principal: tiempo de respuesta del sistema – ¿Cuánto se necesita controlar el tiempo de respuesta? – Requerimiento de tiempo de respuesta absolutos ● ¿A cuantos eventos diferentes se ha de responder? – Cada uno tendrá: dead lines, prioridades (importancia). ● Otros requerimientos de procesado – largos o pesados ● En resumen: – ¿Qué tiene que hacer el sistema?

Sistema embebidos para tiempo real - Arquitecturas de Software 5 Arquitecturas de software ● Controladores o handlers de eventos – realizan el trabajo para responder a los eventos. ● La arquitectura del software determina: – cómo se detectan los eventos, y – cómo se llama al handler del evento. Handlers Eventos Architectura

Sistema embebidos para tiempo real - Arquitecturas de Software 6 (1) Round-Robin while (TRUE) { if (evento) controlEvento(); } while (TRUE) { if (eventoA) controlEventoA(); if (eventoB) controlEventoB(); if (eventoC) controlEventoC(); } Unico eventoMúltiples eventos ● No intervienen interrupciones: polling ● Evento: se consulta ● Handler: se llama desde main

Sistema embebidos para tiempo real - Arquitecturas de Software 7 Round-Robin: Características ● Prioridades: – Ninguna: las acciones son todas iguales – Cada handler debe esperar su turno. ● Tiempo de respuesta (peor caso): – Una vuelta al bucle (gestionando todos los eventos restantes primero) – Malo para todos los eventos si uno solo requiere procesamiento pesado. ● Desventajas: – Solución frágil: agregar un nuevo handler modifica tiempos de respuesta restantes y puede provocar pérdida de deadlines. ● Ventajas: – Sencillez: única tarea, sin problema de datos compartidos, sin ISR.

Sistema embebidos para tiempo real - Arquitecturas de Software 8 Round-Robin: Modificaciones ● Método para mejorar el tiempo de respuesta para un evento while (TRUE) { if (eventoA) controlEventoA(); if (eventoB) controlEventoB(); if (eventoC) controlEventoC(); if (eventoD) controlEventoD(); } while (TRUE) { if (eventoA) controlEventoA(); if (eventoB) controlEventoB(); if (eventoA) controlEventoA(); if (eventoC) controlEventoC(); if (eventoA) controlEventoA(); if (eventoD) controlEventoD(); }

Sistema embebidos para tiempo real - Arquitecturas de Software 9 Round-Robin: aplicabilidad ● Ejemplo del texto: multímetro digital – Pocas entradas, pocos eventos a responder. – Tiempos de respuesta no exigentes. – Sin requerimientos de procesado pesado. ● Conclusión del autor: – “Debido a esas limitaciones, la arquitectura Round-Robin es apropiada para dispositivos muy sencillos como relojes digitales y microondas (horno) y posiblemente ni siquiera para estos últimos”

Sistema embebidos para tiempo real - Arquitecturas de Software 10 Ejemplo: puente ● Características: – conecta enlaces de datos: simples (plano) y encriptados – dos puertos de comunicación – rutinas de encriptado y desencriptado puente AB EncriptadoSimple

Sistema embebidos para tiempo real - Arquitecturas de Software 11 Ejemplo: puente ● Características: – dos puertos de comunicación registros para Rx y Tx (no buffers) registro de control indica: Rx de datos y finalización Tx – Pregunta: ¿Por qué son necesarios? RxA bit: RxIFG_A CtrlRxA TxA bit: TxIFG_A CtrlTxA Rx Tx Puerto A

Sistema embebidos para tiempo real - Arquitecturas de Software 12 Ejemplo Puente: Solución Round-Robin (buffer un reg) RxA TxA TxB RxB RxBuffA TxBuffA TxBuffB RxBuffB encriptar() desencriptar()

Sistema embebidos para tiempo real - Arquitecturas de Software 13 Solución: Round-Robin char RxBufA, RxBufB; // Rx A, encriptado, Tx B if (RxIFG_A) { RxBuffA = RxA; TxBuffB = encriptar(RxBuffA); while (!TxIFG_B) ; TxB = TxBuffB; } // Rx B, desencriptado, Tx A if (RxIFG_B) { RxBuffB = RxB; TxBuffA = desencriptar(RxBuffB); while (!TxIFG_A) ; TxA = TxBuffA; } ● Problemas: – el tiempo en que se recibe un dato (en el puerto) y se copia puede ser grande – no soporta ráfagas ● Mejoras: (1) esperar sin bloquear TxIFG (aunque el problema es el procesado: encr. y desencr.) (2) se escuchan sugerencias...

Sistema embebidos para tiempo real - Arquitecturas de Software 14 (2) Round-Robin con interrupciones ● Agregar interrupciones: – ISR realiza la respuesta inicial. – Resto realizado por funciones llamadas en el bucle. – ISR indica con banderas la necesidad de procesado. ● Presenta mayor flexibilidad: – Respuesta de tiempo crítico disparadas por interrupciones y realizadas en ISR. – Código con tiempo de procesamiento “largo” ubicado en handlers. ● Llamado también: Foreground/Background

Sistema embebidos para tiempo real - Arquitecturas de Software 15 // subrutinas de atención a las int void interrupt ISR_A() { !! Respuesta inicial para A flagA = true; } void interrupt ISR_B() { !! Respuesta inicial para B flagB = true; } void interrupt ISR_C() { !! Respuesta inicial para C flagC = true; } // codigo en main luego de inicial. while (true) { if (flagA) { flagA = false; handle_eventA(); } if (flagB) { flagB = false; handle_eventB(); } if (flagC) { flagC = false; handle_eventC(); } Round-Robin con interrupciones Las flags son variables compartidas: ¿es necesario protegerlas?

Sistema embebidos para tiempo real - Arquitecturas de Software 16 Round-Robin con int: Características ● Prioridades: – Interrupciones son servidas en orden de prioridad. – Todos los handlers tienen igual prioridad. ● Tiempo de respuesta: – ISR: tiempo de ejecución de las ISR de mayor prioridad. – Handler: suma de tiempos del resto de los handlers + interrupc. ● Ventajas: – Trabajo realizado en ISR tiene mayor prioridad. – Tiempo de respuesta de ISR estable si el código cambia. ● Desventajas: – ISRs y handlers comparten datos... – Tiempo de respuesta de handler no estable cuando código cambia.

Sistema embebidos para tiempo real - Arquitecturas de Software 17 Comparación: Niveles de prioridad alta prioridad baja prioridad Round-RobinRound-Robin con interrup. Todo ISR A ISR B ISR C Tareas ISR D

Sistema embebidos para tiempo real - Arquitecturas de Software 18 Ejemplo Puente: Solución Round-Robin con interrupciones y colas.... RxA TxA TxB RxB RxBuffA TxBuffA TxBuffB RxBuffB encriptar() desencriptar()

Sistema embebidos para tiempo real - Arquitecturas de Software 19 Actividad en grupo ● Implementación: puente con cola de datos – Objetivo: Determinar necesidades para su implementación. Implementar (bosquejo) de la misma (sin escribir modulo queue). – Grupos: 2 a 4 participantes – Tiempo: 2 minutos para definir la necesidades. 5 minutos para implementación de la solución. – Puesta en común.

Sistema embebidos para tiempo real - Arquitecturas de Software 20 (3) Planificación por cola de funciones ● Similar a Round-Robin con interrupciones: – Trabajo dividido en ISR y handlers (código de tarea) – ISR encola su handler para completar respuesta ● Características de la cola: – FIFO: First Input First Output (cola clásica) – Prioridades: cola con prioridades (implementación posible: una cola por prioridad) ● Orden de las tareas: dinámico – FIFO: ordenadas por orden de ejecución de ISR correspondientes. – Prioridades: idem dentro de cada prioridad.

Sistema embebidos para tiempo real - Arquitecturas de Software 21 Planificación por cola de funciones // subrutinas de atencion a las int void interrupt ISR_A() { !! Respuesta inicial para A queue_add(handle_eventA) } void interrupt ISR_B() { !! Respuesta inicial para B queue_add(handle_eventB) } void interrupt ISR_C() { !! Respuesta inicial para C queue_add(handle_eventC) } // codigo en main luego de inicial. while (true) { while ( queue_is_empty() ) ; task = queue_get(); (*task); }

Sistema embebidos para tiempo real - Arquitecturas de Software 22 Planif. por cola de func.: Características ● Prioridades: – Interrupciones son servidas en orden de prioridad. – Tareas son encoladas y ejecutadas en orden (ejecución de ISR o por prioridad) ● Tiempo de respuesta para una tarea (con prioridades): – Escenario: justo encolada cuando comienza a ejecutar otra tarea... – Retardo = tarea más larga + tiempo de ejecución ISRs ● Ventajas: – Mejora de tiempo de respuesta y estabilidad cuando el código cambia. ● Desventaja: – Incremento en la complejidad: se debe implementar la cola.

Sistema embebidos para tiempo real - Arquitecturas de Software 23 (4) RTOS ● Trabajo dividido en ISR y tareas. ● Tareas priorizadas y ejecutadas por scheduler. – Tarea con la mayor prioridad se ejecuta primero. – Si una tarea de mayor prioridad pasa a ready, la tarea de prioridad baja es despojada (se le expropia el  P, preempt). ● Tareas se bloquean si esperan eventos o recursos – ISR pueden desbloquear tareas. – Tareas pueden retardarse por un tiempo dado. ● RTOS provee código para: – Crear tareas, bloquear y desbloquear tareas, agendar tareas, comunicar ISR y tareas, etc.

Sistema embebidos para tiempo real - Arquitecturas de Software 24 RTOS: Ejemplo (simplificado) void interrupt vHandleDeviceA() { !! Take care or I/O Device A !! Signal X } void interrupt vHandleDeviceB() { !! Take care or I/O Device B !! Signal Y } void vTask1() { while (true) { !! Wait for Signal X !! Handle data to o from A } void vTask2() { while (true) { !! Wait for Signal Y !! Handle data to o from B } void main () { InitRTOS(); StartTask(vTask1,HIGH_PRIORITY); StartTask(vTask2,LOW_PRIORITY); StartRTOS(); }

Sistema embebidos para tiempo real - Arquitecturas de Software 25 RTOS: Características ● Prioridades: – Interrupciones son servidas en orden de prioridad. – Tareas son agendadas por orden de prioridad. – Tareas de menor prioridad son expropiadas. ● Tiempo de respuesta: – suma de los tiempos de ISR + tareas de mayor prioridad ● Ventajas: – Estabilidad cuando el código cambia: agregar una tarea no afecta el tiempo de respuesta de las tareas de mayor prioridad. – Muchas opciones disponibles: comerciales y GNU. ● Desventajas: – Complejidad: mucho dentro de RTOS, algo para usarlo. – Requerimientos mínimos y overhead del RTOS.

Sistema embebidos para tiempo real - Arquitecturas de Software 26 Niveles de prioridad alta prioridad baja prioridad Round-RobinRound-Robin con interrup. RTOS Todo ISR A ISR B ISR C Tareas ISR D ISR A ISR B ISR C Tarea 2 Tarea 1 Tarea 3

Sistema embebidos para tiempo real - Arquitecturas de Software 27 Selección de la arquitectura ● Más simple que cumpla con los requerimientos de tiempo de respuesta actuales y futuros... ● Optar por usar RTOS si se tienen requerimientos difíciles: – benficios extra: soporte para debugging, profiler, etc. ● Se pueden construir arquitecturas híbridas: – RTOS: una tarea realiza polling. – Round-robin con interrupciones: bucle principal consulta hardware lento directamente.

Sistema embebidos para tiempo real - Arquitecturas de Software 28 Comparación entre arquitecturas

Sistema embebidos para tiempo real - Arquitecturas de Software 29 Bibliografía ● “An Embedded Software Primer” David E. Simon – Chapter 5: Survey of Sofware Architectures.

Sistema embebidos para tiempo real - Arquitecturas de Software 30 Solución: Round-Robin char RxBufA, RxBufB; // Rx A, encriptado, Tx B if (RxIFG_A) { RxBuffA = RxA; TxBuffB = encriptar(RxBuffA); while (!TxIFG_B) ; TxB = TxBuffB; } // Rx B, desencriptado, Tx A if (RxIFG_B) { RxBuffB = RxB; TxBuffA = desencriptar(RxBuffB); while (!TxIFG_A) ; TxA = TxBuffA; } t1t1 t2t2 RxA RxB TxB t1t1 t2t2 tt ●  t: diferencia entre eventos RxA y RxB ● t 2 : instante en que se verifica RxIFG_B t 2 = t 1 +  t - 

Sistema embebidos para tiempo real - Arquitecturas de Software 31 Solución: Round-Robin char c1,c2; // Rx A, encriptado, Tx B if (RxIFG_A) { c1 = RxBUF_A; c2 = encriptar(c1); while (!TxIFG_B) ; TxBUF_B = c2; } // Rx B, desencriptado, Tx A if (RxIFG_B) { c1 = RxBUF_B; c2 = encriptar(c1); while (!TxIFG_A) ; TxBUF_A = c2; } ● Problemas – latencia para el copiado del dato Rx, puede ser grande – no soporta ráfagas ● Mejoras: (1) esperar sin bloquear TxIFG (aunque el problema es el procesado: encr. y desencr.) (2) colas de Rx y Tx

Sistema embebidos para tiempo real - Arquitecturas de Software 32 char RxBufA, RxBufB; boolean fReadyToB, fReadyToA; // Rx A if (RxIFG_A) { RxBuffA = RxA; fReadyToB = true; } // Encriptado y Tx B if (fReadyToB && !TxIFG_B) { fReadyToB = false; TxBuffB = encriptar(RxBuffA); } // Rx B if (RxIFG_B) { RxBuffB = RxB; fReadyToA = true; } // Desencriptado y Tx A if (fReadyToA && !TxIFG_A) { fReadyToA = false; TxBuffA = desencriptar(RxBuffB); } char RxBufA, RxBufB; // Rx A, encriptado, Tx B if (RxIFG_A) { RxBuffA = RxA; TxBuffB = encriptar(RxBuffA); while (!TxIFG_B) ; TxB = TxBuffB; } // Rx B, desencriptado, Tx A if (RxIFG_B) { RxBuffB = RxB; TxBuffA = desencriptar(RxBuffB); while (!TxIFG_A) ; TxA = TxBuffA; }

Sistema embebidos para tiempo real - Arquitecturas de Software 33 char c1,c2; // Rx A, encriptado, Tx B if (RxIFG_A) { c1 = RxBUF_A; c2 = encriptar(c1); while (!TxIFG_B) ; TxBUF_B = c2; } // Rx B, desencriptado, Tx A if (RxIFG_B) { c1 = RxBUF_B; c2 = encriptar(c1); while (!TxIFG_A) ; TxBUF_A = c2; } char cFromA,cFromB, cToA, cToB; boolean fReadyToB, fReadyToA; // Rx A y encriptado if (RxIFG_A) { cFromA = RxBUF_A; cToB = encriptar(cFromA); fReadyToB = true; } // Tx B if (fReadyToB && !TxIFG_B { fReadyToB = false; TxBUF_B = cToB; } // Rx B y desencriptado if (RxIFG_B) { cFromB = RxBUF_B; cToA = desencriptar(cFromB); fReadyToA = true; } // Tx A if (fReadyToA && !TxIFG_A) { fReadyToA = false; TxBUF_A = cToA; }

Sistema embebidos para tiempo real - Arquitecturas de Software 34 Actividad en grupo ● Implementación: Múltiples cola de datos – Objetivo: Modificar el módulo anterior para poder implementar varias colas (en particular las cuatro del ejemplo) – Grupos: 2 a 4 participantes – Tiempo: 5 minutos – Puesta en común.

Sistema embebidos para tiempo real - Arquitecturas de Software 35 Actividad en grupo ● Implementación: cola de funciones – Objetivo: Escribir un módulo que implemente una colas de funciones Implementar el puente con cola de funciones. – Grupos: 2 a 4 participantes – Tiempo: 15 minutos – Puesta en común.

Sistema embebidos para tiempo real - Arquitecturas de Software 36 Ejemplo Puente: Solución Round-Robin (buffer un reg) RxA TxA TxB RxB RxBuffA TxBuffA TxBuffB RxBuffB encriptar() desencriptar() RxIFG_A TxIFG_A TxIFG_B RxIFG_B