MINIX4RT: A Real-Time Operating System Based on MINIX Universidad Nacional de La Plata Facultad de Informática MINIX4RT: A Real-Time Operating System Based on MINIX Ing. Pablo A. Pessolani Abril 2006 1
INTRODUCCION 3
Objetivo Desarrollar una herramienta educativa para cursos de Diseño e Implementación de Sistemas Operativos en Tiempo Real (TR) 2
Porqué basado en MINIX? Disponibilidad de documentación. Requerimientos de la plataforma de hardware. Diseño elegante y modular. Aplicaciones y herramientas de programación. Experiencia Académica. 2
Información Previa sobre MINIX y RT-MINIX 3
Características de MINIX Basado en Microkernel. Multicapa de Procesos Modelo Cliente/Servidor Basado en Transferencia de Mensajes Ocultamiento de Interrupciones 4
Características de RT-MINIX Diferentes algoritmos de planificación. Colas de planificación conjuntas. Abundante recolección de estadísticas. Gestión de la resolución del Temporizador. Entonces, por qué MINIX4RT? 5
Problemas de RT-MINIX Es un parche para MINIX, no una Arquitectura. No prioriza el servicio de las Interrupciones TR. Acepta llamadas al Sistema MINIX desde procesos TR. El planificador prioriza al Gestor de Memoria y al Gestor de Archivos. Usa IPC de MINIX sin evitar Inversión de Prioridades. 5
Características de MINIX4RT Microkernel de TR expulsivo. Arquitectura modular y por capas. Gestión de Interrupciones por Tiempo y por Evento. Procesos Periódicos y Esporádicos. Priorización en el procesamiento de Interrupciones. 6
Características de MINIX4RT Planificador expulsivo de Prioridades Fijas. Independencia de MINIX para la resolución del Temporizador. Transferencia de Mensajes Sincrónica/Asincrónica basada en Cola de Mensajes. Disciplina de Cola por prioridades en recepción de mensajes. 6
Características de MINIX4RT Soporte de Basic Priority Inheritance Protocol (BPIP) en la transferencia de mensajes. Soporte de Timeout en primitivas de tipo Send y Receive. Recolección de Estadísticas y Métricas de TR. Soporte de Gestión de Interrupciones en dos Niveles utilizando Soft IRQs. 6
Características de MINIX4RT Temporizadores de software para la implementación de timeouts, procesamiento periódico, timestamps y alarmas. Manejo de Vencimiento de Deadlines de Interrupciones y Procesos Periódicos con el uso de procesos tipo Watchdogs. Compatibilidad con aplicaciones MINIX. 6
ARQUITECTURA 10
Arquitectura de MINIX USER USER USER FS MM TASK TASK TASK MINIX Kernel 11
Método usado por RTLinux Sistema Operativo de Tiempo Real Anfitrión Sistema Operativo de Tiempo Compartido Invitado. Máquina Virtual limitada a la Emulación de Interrupciones 12
Arquitectura de MINIX4RT USER USER RT USER RT USER MRTTASK FS SERVER MM SERVER Event Driven RT-TASK Timer Driven RT-TASK TASK TASK TASK SOFT IRQs RT Timer Driven Handler RT Event Driven Handler MINIX Handlers MINIX Kernel MINIX4RT Kernel 13
De MINIX a MINIX4RT Tres entidades Ejecutables: Procesos. Rutinas de Servicio de Interrupción (ISR). Acciones de Temporizadores. Nuevo Planificador de TR. 12
De MINIX a MINIX4RT Planificador para ISRs y Acciones de Temporizadores. Tanto el kernel de MINIX como sus procesos pueden ser expulsados por Procesos o Interrupciones de TR. Los Procesos en TR no pueden invocar llamadas al Sistema de MINIX. 12
De MINIX a MINIX4RT Virtualización de Interrupciones para MINIX. Llamadas al Sistema para procesos de TR. Minimización del tiempo de desactivación de Interrupciones. 12
GESTION DE INTERRUPCIONES 10
Tipo de Manejadores de Interrupciones Manejadores MINIX Manejadores de TR disparados por Eventos. Manejadores de TR disparados por Tiempo. 12
Prioridad de Manejadores de Interrupción Un manejador de Interrupción solo se ejecutará si su prioridad es mayor que el nivel de prioridad de ejecución del sistema. Los manejadores de Interrupción pendientes de atención no se ejecutarán si: Son manejadores MINIX y éste ha deshabilitado INTs. Son manejadores disparados por Tiempo que no han cumplido su período. 12
Interrupt Descriptors Priority Al menos hay un Manejador Pendiente de Interrupción 15 1 Interrupt Queues Interrupt Descriptors 14 MRT_si.irqtab[7] MRT_si.irqtab[9] 13 MRT_si.iQ.irqQ[12] next=9 next=NULL 12 1 first=7 SERVICED TRIGGERED last=9 prev=NULL prev=7 11 10 Descriptor de más alta prioridad 9 MRT_si.iQ.irqQ[8] first=NULL 8 last=NULL 7 6 La cola está vacía 5 MRT_si.irqtab[3] 4 next=NULL 3 1 MRT_si.iQ.irqQ[3] TRIGGERED 2 prev=NULL first=3 last=3 1 MRT_si.iQ.bitmap 18
Software IRQs Como ejecutar acciones prolongadas fuera del tiempo de interrupción? MINIX usa Tareas LINUX divide el manejador de Interrupciones: Top-Half Botton-Half MINIX4RT dispone de Software IRQs 19
GESTION DE PROCESOS 10
MINIX4RT: Modos de Ejecución Non Real Time Mode: El comportamiento del sistema es idéntico al de MINIX. Todas las llamadas al Sistema de TR están deshabilitadas. Real Time Mode: Se pueden ejecutar tanto procesos de TR como Standards. 12
MINIX4RT: Procesos TR Solo se pueden crear y terminar procesos standards. MINIX4RT no dispone de nuevas llamadas al Sistema para crear o terminar procesos de TR. Un proceso MINIX Standard se convierte a un proceso de TR Para finalizar un proceso de TR, antes debe convertirse en proceso MINIX standard. 12
Estados y Transiciones de Procesos en MINIX RUNNING BLOCKED READY BLOCKED REALTIME 12
Estados y Transiciones de Procesos en MINIX4RT RT-RUNNING RT-BLOCKED RT-READY NRT-BLOCKED 12
Estados y Transiciones de Procesos de TR y Standard ESTADOS DE PROCESOS MINIX ESTADOS DE PROCESOS MINIX4RT RUNNING RT-RUNNING BLOCKED READY RT-BLOCKED RT-READY 12
Planificación de Procesos en MINIX 12
Planificación de Procesos de TR La política planificación de Tiempo Real es simple: ”Un Planificador de Tiempo Real por prioridades debe asegurar que se activará el proceso ejecutable de mas alta prioridad en un tiempo limitado y ese tiempo debe ser pequeño." Victor Yodaiken 12
1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 Priority Process Descriptors 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 Priority Al menos un proceso de TR en la cola MRT_procL[8]; MRT_procL[3]; first=NULL last=NULL first=3 last=3 MRT_procL[12]; first=7 last=5 Process Descriptors next=NULL prev=NULL proc[3] next=5 proc[7] prev=7 proc[5] Proceso de TR ACTIVO La cola está vacía Ready Queues MRT_sp.rdyQ.bitmap 18
GESTION DEL TIEMPO 10
Virtualización del Timer de MINIX MRT_sv.harmonic = 2 MINIX ticks 1/HZ MINIX4RT RT-ticks Time 1/MRT_sv.tickrate 19
Virtual Timers: Acciones MRT_ACT_MSGOWN: Envía un mensaje Timeout al proceso dueño del VT. MRT_ACT_MSGWDOG: Envía un mensaje Timeout al proceso Watchdog del proceso dueño del VT. MRT_ACT_IRQTRIG: Dispara un Descriptor de Interrupciones (usado por Gestores de Interrupciones disparados por tiempo). MRT_ACT_DEBUG: Imprime valor del parámetro en la consola. 19
Virtual Timers: Acciones MRT_ACT_SNDTO: Un timeout de una primitiva tipo send() ha vencido. MRT_ACT_RCVFR: Un timeout de una primitiva tipo receive() ha vencido. MRT_ACT_WAKEUP: Despierta al proceso dueño del VT que ha ejecutado una llamada al kernel mrt_sleep(). MRT_ACT_SCHED: Despierta a otro proceso que se encuentra en estado RT-BLOCKED. 19
Virtual Timers: Cola VT Activos 14 Ticks 10 Ticks MRT_st.timerQ MRT_st.vtimer[3] MRT_st.vtimer[7] first=3 next=7 next=NULL last=7 prev=NULL prev=3 inQ = 2 nextexp=4 nextexp=0 firstexp=10 19
Ejecución de Acciones de VTs Timer Interrupt Timer Interrupt Period Timer ISR MRT_vtimer_flush VT Actions Higher Priority Process Latency Time 19
Ejecución de Acciones de VTs Timer Interrupt Timer Interrupt Period Timer ISR MRT_vtimer_flush MRT_vtimer_flush Higher Priority VT Actions Lower Priority VT Actions Higher Priority Process Lower Priority Process Latency Time 19
Expired Virtual Timers Priority Al menos un VT vencido en cola 15 Expired Timers Queues Expired Virtual Timers 14 13 MRT_st.expiredQ[12] 12 1 MRT_st.vtimer[7] MRT_st.vtimer[5] first=7 11 next=5 next=NULL last=5 prev=NULL prev=7 10 9 MRT_st.expiredQ[8] 8 first=NULL VT vencido de máxima Prioridad 7 last=NULL 6 La cola está vacía 5 4 MRT_st.vtimer[9] MRT_st.expiredQ[3] next=NULL 3 1 prev=NULL first=9 2 last=9 1 MRT_st.exp.bitmap 19
COMUNICACIÓN ENTRE PROCESOS (IPC) 10
Primitivas de IPC mrt_rqst( dest, m_ptr, timeout) mrt_arqst( dest, m_ptr) mrt_reply(dest, m_ptr) mrt_uprqst(dest, m_ptr, priority) mrt_sign(dest, m_ptr) mrt_rcv( source, hdr_ptr, m_ptr, timeout) mrt_rqrcv( dest, rqst, rply, hdr, timeout) 19
BPIP TH TM TL S TIME Server Priority Operation BASE Request LOW TL MEDIUM TL Request HIGH Request HIGH TL Request MEDIUM Reply TH Request LOW Reply MEDIUM TM Request BASE Reply BASE 19
Message Queue Entry Descriptors Priority 15 Al menos un descriptor de mensajes en cola Message Queue Descriptor Message Queue Entry Descriptors 14 13 MRT_st.vtimer[3] MRT_st.vtimer[7] 12 1 first=3 next=7 next=NULL 11 last=7 prev=NULL prev=3 priority=12 priority=12 10 9 La cola está vacía 8 7 Mensaje de más alta prioridad 6 MRT_st.vtimer[5] 5 first=5 next=0 last=5 4 prev=NULL priority=3 3 1 2 1 MRT_sm.msqQ[i].mQ.bitmap 19
LLAMADAS AL SISTEMA Y LLAMADAS AL KERNEL 10
Llamadas al Sistema de MINIX User Level Process libc (System Calls) File System Server libc (Task Calls) SYSTASK KERNEL 19
Llamadas al Sistema de MINIX4RT User Level Process libc (System Calls) Memory Manager libc (Task Calls) MRTTASK RT-KERNEL 19
libc (RT-Kernel Calls) Llamadas al Kernel de MINIX4RT User Level RT-Process libc (RT-Kernel Calls) RT-KERNEL 19
TESTS DE PERFORMANCE 10
Tipos de Carga En Vacío Carga de CPU Carga de E/S utilizando operaciones de Disco Rígido Carga de E/S utilizando Diskette con driver en TR 19
Tests de Performance RTLinux Parallel Port Loop RTLinux MINIX4RT Intel Pentium III 800MHz, 256 MB RTLinux MINIX4RT Intel 80486-DX4 75MHz 8 MB Parallel Port Cable 19
Tests de Latencia de Interrupciones 19
Test de Puntualidad 19
Test de Transferencia de Mensajes 19
Flujo Máximo de Mensajes 19
Contribuciones Arquitectura: Subkernel de Tiempo Real. Gestión de Interrupciones: Priorización y Soft IRQs. Gestión de Procesos: Visión de 2 Dominios. Gestión de Tiempo: Priorización de Temporizadores. Llamadas al Sistema: Kernel Calls. 2
Conclusiones El microkernel de MINIX4RT dispone de las facilidades básicas para la gestión de Interrupciones, Procesos, Temporizadores, Mensajes y recolección de estadísticas de Tiempo Real convirtiéndolo en una excelente elección para realizar prácticas de codificación en cursos de Diseño e Implementación de Sistemas Operativos de Tiempo Real 19
Trabajos a Futuro Deshabilitación de Interrupciones por Prioridades Implementación de Semáforos Gestión de Tiempo No Periódica Compatibilidad POSIX 1003.1b Actualización a MINIX 3.0 19
GRACIAS!! Ing. Pablo A. Pessolani ppessolani@hotmail.com http://www.geocities.com/minix4rt/minix4rt_main.html 3