Upload
colm
View
49
Download
7
Embed Size (px)
DESCRIPTION
Universidad Nacional de La Plata Facultad de Informática. MINIX4RT: A Real-Time Operating System Based on MINIX. Ing. Pablo A. Pessolani Abril 2006. INTRODUCCION. Objetivo. - PowerPoint PPT Presentation
Citation preview
MINIX4RT: MINIX4RT: A Real-Time Operating System A Real-Time Operating System
Based on MINIXBased on MINIX
Ing. Pablo A. PessolaniIng. Pablo A. Pessolani
Abril 2006Abril 2006
Universidad Nacional de La PlataUniversidad Nacional de La PlataFacultad de InformáticaFacultad de Informática
INTRODUCCIONINTRODUCCION
ObjetivoObjetivo
Desarrollar una herramienta Desarrollar una herramienta educativa para cursos de Diseño e educativa para cursos de Diseño e
Implementación de Sistemas Implementación de Sistemas Operativos en Tiempo Real (TR)Operativos en Tiempo Real (TR)
Porqué basado en MINIX?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.
Información Previa sobreInformación Previa sobreMINIX y RT-MINIXMINIX y RT-MINIX
Características de MINIXCaracterísticas de MINIX
Basado en Microkernel.
Multicapa de Procesos
Modelo Cliente/Servidor
Basado en Transferencia de Mensajes
Ocultamiento de Interrupciones
Características de RT-MINIXCaracterí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?Entonces, por qué MINIX4RT?
Problemas de RT-MINIXProblemas 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.
Características de MINIX4RTCaracterí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.
Características de MINIX4RTCaracterí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.
Características de MINIX4RTCaracterí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.
Características de MINIX4RTCaracterí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.
ARQUITECTURA ARQUITECTURA
Arquitectura de MINIX Arquitectura de MINIX
USER
FS MM
TASK
MINIX Kernel
TASK TASK
USER USER
Método usado por RTLinuxMé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
Arquitectura de MINIX4RTArquitectura de MINIX4RT
USER
FSSERVER
MMSERVER
TASK
TimerDriven
RT-TASK
MINIX4RT Kernel
TASK TASK
USER RTUSER
Event Driven
RT-TASK
MINIXHandlers
RT TimerDriven Handler
SOFTIRQs
MRTTASK
RT EventDriven Handler
MINIXKernel
RTUSER
De MINIX a MINIX4RTDe MINIX a MINIX4RT
Tres entidades Ejecutables:
Procesos.
Rutinas de Servicio de Interrupción (ISR).
Acciones de Temporizadores.
Nuevo Planificador de TR.
De MINIX a MINIX4RTDe 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.
De MINIX a MINIX4RTDe 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.
GESTION DE GESTION DE INTERRUPCIONESINTERRUPCIONES
Tipo de Manejadores de Tipo de Manejadores de InterrupcionesInterrupciones
Manejadores MINIX
Manejadores de TR disparados por Eventos.
Manejadores de TR disparados por Tiempo.
Prioridad de Manejadores de Prioridad de Manejadores de InterrupciónInterrupció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.
Interrupt Queues Interrupt DescriptorsMRT_si.iQ.bitmap
MRT_si.iQ.irqQ[8]
first=NULLlast=NULL
1
1
0
1
00
1514131211109876543210
Priority
La cola está vacía
MRT_si.iQ.irqQ[12]
first=7last=9
next=9
prev=NULL
MRT_si.irqtab[7]
SERVICEDnext=NULL
prev=7
MRT_si.irqtab[9]
TRIGGERED
MRT_si.iQ.irqQ[3]
first=3last=3
next=NULL
prev=NULL
MRT_si.irqtab[3]
TRIGGERED
Al menos hay un Manejador Pendiente
de Interrupción
Descriptor demás alta prioridad
Software IRQsSoftware 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
GESTION DE PROCESOSGESTION DE PROCESOS
MINIX4RT: Modos de EjecuciónMINIX4RT: 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.
MINIX4RT: Procesos TR 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.
Estados y Transiciones de Procesos Estados y Transiciones de Procesos en MINIXen MINIX
RUNNING
BLOCKED
BLOCKEDREALTIME
READY
RT-RUNNING
RT-BLOCKED
NRT-BLOCKED
RT-READY
Estados y Transiciones de Procesos Estados y Transiciones de Procesos en MINIX4RTen MINIX4RT
Estados y Transiciones de Estados y Transiciones de Procesos de TR y StandardProcesos de TR y Standard
RUNNING
BLOCKED READY
RT-RUNNING
RT-BLOCKED RT-READY
ESTADOS DE PROCESOS MINIX4RTESTADOS DE PROCESOS MINIX
Planificación de Procesos Planificación de Procesos en MINIXen MINIX
Planificación de Procesos de TRPlanificación de Procesos de TR
La política planificación de Tiempo Real es simple:
””Un Planificador de Tiempo Real por Un Planificador de Tiempo Real por prioridades debe asegurar que se activará el prioridades debe asegurar que se activará el proceso ejecutable de mas alta prioridad en proceso ejecutable de mas alta prioridad en
un tiempo limitado y ese tiempo debe ser un tiempo limitado y ese tiempo debe ser pequeño.pequeño.""
Victor Yodaiken
Process Descriptors
next=NULLprev=NULL
proc[3]
next=5prev=NULL
proc[7]
next=NULLprev=7
proc[5]
MRT_procL[8];
MRT_procL[3];
first=NULLlast=NULL
first=3last=3
MRT_procL[12];
first=7last=5
0
1
0
1000
1514131211109876543210
Priority
MRT_sp.rdyQ.bitmap
Al menos un proceso de TR en la cola
La cola está vacía
Proceso de TR ACTIVOReady Queues
GESTION DEL TIEMPOGESTION DEL TIEMPO
Virtualización del Timer de Virtualización del Timer de MINIXMINIX
1/MRT_sv.tickrate
1/HZ
Time
MINIX4RT
RT-ticks
MINIX
ticks
MRT_sv.harmonic = 2
Virtual Timers: AccionesVirtual 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.
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.
Virtual Timers: AccionesVirtual Timers: Acciones
first=3last=7
MRT_st.timerQ
inQ = 2firstexp=10
next=7prev=NULL
MRT_st.vtimer[3]
nextexp=4nextexp=4
next=NULLprev=3
MRT_st.vtimer[7]
nextexp=0
10 Ticks
14 Ticks
Virtual Timers: Cola VT ActivosVirtual Timers: Cola VT Activos
Ejecución de Acciones de VTsEjecución de Acciones de VTs
Time
Timer Interrupt Timer Interrupt
Timer ISR
Period
VTActions
MRT_vtimer_flush
Higher
Priority
Process
Latency
Ejecución de Acciones de VTsEjecución de Acciones de VTs
Time
Timer Interrupt Timer Interrupt
Timer ISR
Period
HigherPriority
VTActions
MRT_vtimer_flush
Latency
Higher
Priority
Process
LowerPriority
VTActions
Lower
Priority
Process
MRT_vtimer_flush
Expired Timers Queues Expired Virtual Timers
0
1
0
1000
1514131211109876543210
Priority
MRT_st.exp.bitmap
Al menos un VT vencido en cola
MRT_st.expiredQ[8]
MRT_st.expiredQ[3]
first=NULLlast=NULL
first=9last=9
next=NULLprev=NULL
MRT_st.vtimer[9]
MRT_st.expiredQ[12]
first=7last=5 next=5
prev=NULL
MRT_st.vtimer[7]
next=NULLprev=7
MRT_st.vtimer[5]
La cola está vacía
VT vencido de máxima Prioridad
COMUNICACIÓN ENTRE COMUNICACIÓN ENTRE PROCESOS (IPC)PROCESOS (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)
Primitivas de IPCPrimitivas de IPC
TH TM TL S
OperationServer Priority
Request BASE
LOWTL
RequestRequest
TLRequest
MEDIUM
RequestHIGH
TLRequestReply
THRequestReply
MEDIUM
TMRequestReply
BASE
TIME
BASE
LOW
MEDIUM
HIGH
BPIPBPIP
Message QueueDescriptor Message Queue Entry Descriptors
first=3last=7
next=7prev=NULL
MRT_st.vtimer[3]
priority=12
next=NULLprev=3
MRT_st.vtimer[7]
priority=12
first=5last=5
next=0prev=NULL
MRT_st.vtimer[5]
priority=3
0
1
0
1000
1514131211109876543210
Priority
MRT_sm.msqQ[i].mQ.bitmap
Al menos un descriptor de
mensajes en cola
La cola está vacía
Mensaje de más alta prioridad
LLAMADAS AL SISTEMA LLAMADAS AL SISTEMA Y Y
LLAMADAS AL KERNELLLAMADAS AL KERNEL
User Level Process
libc (System Calls)
File System Server
libc (Task Calls)
SYSTASK
KERNEL
Llamadas al Llamadas al Sistema de Sistema de
MINIXMINIX
Llamadas al Llamadas al Sistema de Sistema de MINIX4RTMINIX4RT
User Level Process
libc (System Calls)
Memory Manager
libc (Task Calls)
MRTTASK
RT-KERNEL
Llamadas al Llamadas al Kernel de Kernel de
MINIX4RTMINIX4RTUser Level RT-Process
libc (RT-Kernel Calls)
RT-KERNEL
TESTS DE TESTS DE PERFORMANCEPERFORMANCE
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
Tipos de CargaTipos de Carga
Tests de PerformanceTests de Performance
Parallel Port Cable
Parallel Port Loop
RTLinuxMINIX4RT
Intel Pentium III 800MHz, 256 MB
RTLinux
Intel 80486-DX4 75MHz 8 MB
Tests de Latencia de Tests de Latencia de InterrupcionesInterrupciones
20
30
40
50
60
70
80
90
10
0
110
12
0
13
0
0,00
10,00
20,00
30,00
40,00
50,00
60,00
%
Interrupt Service Time [microsec]
ED-Interrupts [10000 Hz]
DKT Load
HD Load
CPU Load
No Load
Test de PuntualidadTest de Puntualidad
0,00
5,00
10,00
15,00
20,00
25,00
30,00
35,00
40,00
45,00
%
PERIOD [microsec]
TIMELINESS [10000 Hz]
DKT Load
HD Load
CPU Load
No Load
Test de Transferencia de MensajesTest de Transferencia de Mensajes
MESSAGE TIME
0
20
40
60
80
100
120
TEST 1
TEST2
TEST3
TEST4
TEST5
TEST6
TEST7
TEST8
Me
ss
ag
e T
ime
[m
icro
se
cs
]
Flujo Máximo de MensajesFlujo Máximo de Mensajes
THROUGHPUT
0
2000
4000
6000
8000
10000
12000
14000
TEST 1
TEST2
TEST3
TEST4
TEST5
TEST6
TEST7
TEST8
Th
rou
gh
pu
t [m
es
sa
ge
s/s
ec
]
ContribucionesContribuciones
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.
ConclusionesConclusiones
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
Trabajos a FuturoTrabajos 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
GRACIAS!!GRACIAS!!
Ing. Pablo A. PessolaniIng. Pablo A. [email protected]@hotmail.com
http://www.geocities.com/minix4rt/minix4rt_main.htmlhttp://www.geocities.com/minix4rt/minix4rt_main.html