MINIX4RT: A Real-Time Operating System Based on MINIX

Preview:

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. Pessolanippessolani@hotmail.comppessolani@hotmail.com

http://www.geocities.com/minix4rt/minix4rt_main.htmlhttp://www.geocities.com/minix4rt/minix4rt_main.html

Recommended