Está en la página 1de 25

NUCLEOS y SISTEMAS OPERATIVOS

Sistemas en Tiempo Real

Ncleos
Un S.O. convierte un HW en una mquina virtual. Un S.O. de propsito general da muchas facilidades que no siempre son necesarias. En un STR podran sobrecargar el sistema; por eso se disean S.O. para STR a medida. Un KERNEL o Ncleo de S.O. es la mnima expresin de un S.O. Los STR se componen de un KERNEL con unas capas de aplicacin a medida.

Ncleos
Dos posibilidades:
Enlazar cdigo de usuario junto con funciones de Kernel necesarias para obtener un programa de control. Microkernel Tempus
Acceso directo al HW Concurrencia Multitarea

Usar un Kernel mnimo con programas de usuario independientes. Linux


Mayor proteccin Acceso al HW a travs del S.O. (drivers)

Funciones de un KERNEL:
Planificador de alto nivel (scheduler) Gestor de Recursos (Dispatcher) Comunicacin y Sincronizacin entre tareas. Manejador de Interrupciones

Transiciones de Estado de Procesos


Las transiciones se realizan por acciones en el S.O. (recursos) y comandos de aplicacin.

Transiciones de Estado de Procesos


Activo: Controla la CPU (+ alta prioridad) Preparado: Estado y recursos necesarios para ejecutarse Suspendido: No dispone de algn recurso o espera seal. Existente (Dormido): el S.O. conoce su existencia pero no le ha dado prioridad. No puede ejecutarse. No Existente (Terminado): el S.O. no conoce su existencia. Puede estar en memoria.

TIPOS DE KERNELS
Bsicos
Polling y Autmata Finito

Sistemas Cooperativos
Corrutinas

Sistemas Apropiativos
Basado en Interrupciones, Round Robin

Kernels de Tiempo Real


Hbridos, Foreground/Background

NCLEOS: TIPOS
BASADO EN POLLING (Ejecutivo Cclico) Para sistemas sencillos con pocos componentes. Respuesta veloz. Un mdulo pregunta estado de unidades en un bucle infinito No necesitan mecanismos de comunicacin ni scheduling
/* Ejemplo de mdulo de POLLING*/ int *datos; int hay_informacin=0; /* variable asociada a una linea HW */ datos=0xFFFF; /* Mapea una variable a una direccin E/S o memoria*/ while(1){ if(hay_informacion){ ProcesaDatos(datos); hay_informacion=0; } }

NCLEOS: TIPOS
Problemas:
Ejecucin continua del bucle Transitorio entre activacin-accin si hay muchos componentes, puede fallar la temporizacin.

Se pueden solucionar en parte estos problemas mediante:


Relojes Contadores

NCLEOS: TIPOS
Tambin se puede lanzar Polling mediante interrupciones
/* Ejemplo de mdulo de POLLING sin ejecucin continua*/ int *datos; int hay_informacin=0; /* variable asociada a una linea HW */ datos=0xFFFF; /* Mapea una variable a una direccin E/S o memoria*/ while(1){ if(hay_informacion){ ProcesaDatos(datos); hay_informacion=0; } delay(); /* evita que se ejecute continuamente el bucle, salvando tiempo de CPU*/ }

/* Ejemplo de mdulo de POLLING sin transitorio*/ int flag=0; int contador=0; while(1){ if(flag){ contador=0; while (contador<3); ProcesaEvento(); Flag=0; }} void contador_handle(void){ contador++; }

Polling o Ejecutivo Cclico

NCLEOS: TIPOS
AUTMATA FINITO Sucesin de cadenas if, elseif o switch. Descompone el cdigo en segmentos. Permite suspensin temporal del proceso sin prdida de datos. CORUTINAS (SISTEMAS COOPERATIVOS) Implementacin bsica de un sistema multitarea. Las rutinas tienen la CPU hasta que acaben o decidan cederlo. Programacin adecuada para coordinar el control.
/*Ejemplo Automata Finito*/ int flag=0; void tareas(void){ switch(flag){ case 0: ......... flag=1; break; case 1:
......... flag=2; break;

case 2: ......... flag=0; break; } }

NCLEOS: TIPOS
void tareaA(void){ switch(estadoA){ case 0: fase A0; break; case 1: fase A1; break; fase A2; ..... void tareaB(void){ switch(estadoB){ case 0: fase B0; break; case 1: fase B1; break; .... Gestor decide orden de ejecucin de subfases en funcin de las variables globales: Tarea A: Fase A0 Tarea A: Fase A1 Tarea B: Fase B0 Tarea A: Fase A2 ............

NCLEOS: TIPOS
A veces no hay gestor y son las corrutinas las que directamente se ceden el control Tarea A: Fase A0, ceder control a tarea B Tarea B: Fase B0, ceder control a tarea A Tarea A: Fase A1, no hacerla, ceder control a B Tarea B: Fase B1 ........... void tareaA(void){ switch(estadoA){ case 0: fase A0; (dar control a tareaB) break; case 1: fase A1; (dar control a tareaB) break;

void tareaB(void){ switch(estadoB){ case 0: fase B0; (dar control a tareaA) break; case 1: fase B1; (dar control a tareaA) break; ....

No son apropiadas para STR -> no se puede apropiar instantneamente de la CPU.

Autmata Finito & Corrutinas

NCLEOS: TIPOS
SISTEMAS BASADOS EN INTERRUPCIONES Intercambio de tareas por interrupciones HW
Peridicas: Ej. Medida de Temperatura en un tanque Espordicas: Ej. Alarma por superar nivel de lquido

Sistemas Apropiativos: los procesos compiten por CPU Al entrar una interrupcin->conmutacin de contexto
Almacenar la menor informacin posible que permita restaurar la tarea interrumpida Contexto Bsico:
Contador de programa Registros Coprocesador Pagina de Memoria Memoria Mapeada I/O Variables especiales

NCLEOS: TIPOS
Cuando se conmuta contexto, hay que deshabilitar las interrupciones El contexto se guarda en memoria, registros auxiliares o STACK (pila) (Interrupciones HW principalmente). Tras almacenar contexto->vector de interrupciones da control a la RTI

Sistemas Basados en Interrupciones

NCLEOS: TIPOS
SISTEMAS ROUND-ROBIN (SEALES SW) Cada proceso tiene un intervalo de CPU, determinado por un reloj. Si acaba su tiempo y no finaliza la tarea, pasa a una lista de tareas pendientes. Problema: elegir valor adecuado de rodaja de tiempo SISTEMAS PREENTIVOS Interrupciones HW. Una tarea de mas prioridad que la que se ejecuta SIEMPRE puede interrumpirla. Problema: posponer indefinidamente las tareas mas bajas. SISTEMAS HBRIDOS Combinan tareas espordicas y peridicas
Peridicas: funcionamiento normal del sistema. Espordicas: Preentivas. Ms prioridad que las peridicas. Para atencin inmediata de eventos (alarmas).

Sistemas Round Robin

NCLEOS: TIPOS
SISTEMAS FOREGROUND/BACKGROUND Contienen tareas de tiempo real basadas en interrupciones (FOREGROUND) y procesos basados en corutinas, polling, autmata finito..(BACKGROUND). Procesos FOREGROUND: Hibridos, prioridad preentiva y Round Robin Procesos BACKGROUND: Bajo nivel. Tareas no crticas. Interrumpibles por FOREGROUND. P. Ej.:Autotest del S.O. e Tiempo de repeticin de un proceso Background t: t 1 p p: Carga de procesos F e: T. de ejecucin del proceso B. Para inicializar un proceso B/F en este sistema:
Deshabilitar interrupciones Inicializar vectores de interrupcin y pila Autotest Inicializar sistema (variables, procesos...) Habilitar interrupciones

Sistemas Foreground/Background

Ncleos de Tiempo Real


Sistema Tiempo Real -> Kernel F/B+
Interfaces de Red Drivers Herramientas de Depuracin

El Kernel o nucleo del S.O. ser la tarea de ms alta prioridad, a partir de la cual se creen las restantes. Ejemplos:
C-OSII (Micrium) QNX Free-RTOS (Libre) RT_Linux (Libre) Salvo RTOS (Pumkin Soft.) Tiny-OS (Libre) CMX-RTX y CMX-Tiny+ (CMX) ..

Ejemplos de Kernel de Tiempo Real: QNX


Sistema Operativo de tiempo real: uso en PCs. Multitarea; planificacin preentiva con 32 prioridades. Conmutacin rpida de contextos Planificacin FIFO, round-robin, o adaptativa. QNX microkernel con solo 4 funciones bsicas
1. 2. 3. 4. Comunicacin entre procesos: paso de mensajes, seales, proxies. Comunicacin de red a bajo nivel. Planificacin de procesos. Gestin Interrupciones. Gestor de procesos Gestor de sistema de ficheros Manejador de dispositivos Manejador de red de alto nivel

4 procesos (optativos) de apoyo al KERNEL:


1. 2. 3. 4.

Ampliacin de capacidades mediante mdulos. (Multimedia)

Ejemplos de Kernel de Tiempo Real: QNX

Escalabilidad: programacin distribuida y multiprocesador. Soporte de ejecucin en tiempo real: reparacin inteligente de fallos. Soporte POSIX: mayor portabilidad. Soporta: barreras, planificacin de procesos, funciones de tiempo (timers, timeouts,), seales de tiempo real, semforos, memoria compartida, spinlocks,. Algunas aplicaciones:
1. Automatizacin planta de chocolate Cadburys 2. Control de equipajes JAPAN Airlines.

Ejemplos de Kernel de Tiempo Real: uC-OSII


Kernel Multitarea de Tiempo Real Para aplicaciones empotradas. Apropiativo preentivo por Interrupciones. (255 niveles de int. ,con 64 posibles prioridades) No admite Round-Robin. Mximo de 64 procesos, con pilas independientes de tamao variables:
Independiza fallos de un proceso hacia otros procesos

Portable a +de 40 micros. Escrito en ANSI-C y ensamblador (parte no portable) Escalable. Se aaden solo los mdulos necesarios a la aplicacin. Determinstico. Permite anlisis de tiempos de respuesta, el cual no depende del nmero de procesos. Colas de Mensajes, semforos, mutex, mailbox, funciones de tiempo, planificacin,. Robusto y seguro. Certificado para uso en aviacin comercial