Real Time Linux Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica Programa de Pós-Graduação em Engenharia Elétrica ELE213 Programação de Sistemas de Tempo Real Copyright (c) Walter Fetter Lages p.1
Introdução Linux é um kernel de sistema operacional de uso geral Otimizado para desempenho médio para todos os processos Resolução do timer 100Hz no 80x86 100Hz, 250Hz ou 1000Hz a partir da versão 2.6.x 1024Hz no Alpha Escalonamento não tempo real Real Time Linux Adaptação do Linux para tempo-real Alterações na resolução do kernel Alterações no escalonamento Copyright (c) Walter Fetter Lages p.2
Variantes de Linux Tempo Real Hard real time RT-Linux RTAI Xenomai PREEMPT_RT Firm real time KURT Soft real time Linux/RK RED-Linux SMART-Linux ART Linux Linux-SRT Qlinux Copyright (c) Walter Fetter Lages p.3
RT-Linux Desenvolvido por Victor Yodaiken e Michael Barabanov no NMT Executa o kernel do Linux como a tarefa de menor prioridade Substitui os CLIs, STIs e IRETs do kernel padrão do Linux por macros (virtualização) Kernel do Linux completamente preemptível Tratadores de interrupção nunca são atrasados por tarefas não tempo real As últimas versões suportam programação em tempo real ao nível de usuário (LXRT) Copyright (c) Walter Fetter Lages p.4
RT-Linux RT-Linux e tarefas de tempo real são módulos do kernel Escalonamento baseado em prioridades Tarefa de Tempo Real 1 Escalonamento Tarefa de Tempo Real n Processo do Linux 1 Escalonamento Escalonamento Processo do Linux n Kernel do Linux Interrupções de Software Kernel de Tempo Real do RT-Linux Hardware Interrupções de Hardware Copyright (c) Walter Fetter Lages p.5
Real Time Application Interface Desenvolvido por Paolo Mantegazza no Instituto Politécnico de Milão a partir do RT-Linux Utiliza o conceito de HAL e pipeline de interrupções Mais ênfase a aplicabilidade do sistema do que à índices de desempenhos teóricos Suporta programação em tempo real a nível de usuário (LXRT) e ponto flutuante desde as primeiras versões Copyright (c) Walter Fetter Lages p.6
RTAI Chaveamento entre RTAI e kernel padrão Se o RTAI não está montado o kernel normal do Linux é utilizado Suporta SMP Interface estilo POSIX threads Diversos escalonadores disponíveis Copyright (c) Walter Fetter Lages p.7
Xenomai Framework para portar sistemas de tempo real proprietários para o Linux Versão 1 executava sobre o RT-Linux, RTAI ou LinuxThreads Componente standalone do RTAI Suporte a diversas APIs Versão 2 independente do RTAI Suporta (incentiva) tarefas de tempo real no espaço do usuário Copyright (c) Walter Fetter Lages p.8
Xenomai Sistema com dois kernels Linux como domínio de menor prioridade do ADEOS Modo primário, kernel do Xenomai Modo secundário, kernel do Linux Tarefas de Tempo Real Processos do Linux Nativa POSIX psos+ uitron VXRT VxWORKSRTDM Kernel do Xenomai Kernel do Linux Abstração de Hardware ADEOS Copyright (c) Walter Fetter Lages p.9
PREEMPT_RT RT-Linux, RTAI e Xenomai não foram aceitos para o kernel do Linux A idéia de ter um subsistema com prioridade maior do que o kernel não é natural kernel do Linux não preemptível e muitos patches seriam necessários PREEMPT_RT foi desenvolvido inicialmente por Ingo Molnár e posteriormente por Thomas Gleixner Pequenos patches para tornar o kernel preemptível Copyright (c) Walter Fetter Lages p.10
PREEMPT_RT O PREEMPT_RT são os patches ainda não aceitos para tornar o kernel totalmente preemptível Utiliza as mesmas APIs do Linux convencional Sem o PREEMPT_RT o programa não executa em tempo real Em alguns casos possível executar um programa convencional, sem qualquer modificação, em tempo real Utiliza dos drivers do Linux As tarefas do Linux precisam ser consideradas no escalonamento Copyright (c) Walter Fetter Lages p.11