8

Click here to load reader

Artigo Str Rtlinux

Embed Size (px)

Citation preview

Page 1: Artigo Str Rtlinux

RTLINUX

Marcus Vinicius Duarte Costa, Alonço Domingos, Henrique Mendonça,

Tiago Ferreira Bitencourt, Lucélia Santos

Engenharia da Computação – Faculdade Área1

02 Junho de 2012

Salvador – BA – Brasil

[email protected], [email protected], [email protected],

[email protected], [email protected]

Resumo. Objetivo deste artigo é desmistificar a aplicação do Linux como

Sistema em Tempo Real, mostrando como se deu origem, o funcionamento e a

finalidade.

1. Informações Gerais

O RTLinux é um sistema operacional de tempo real crítico. Seu kernel é uma extensão

Linux que se propõe a suportar tarefas com restrições temporais, as quais caracterizam

uma aplicação de tempo real.

Foi criado em fevereiro de 2007 por Michael Barabanov e Victor Yodaiken para que o

Linux além de ter velocidade e eficiência pudesse ter.

É possível obter desempenho em soft real time pelo kernel padrão e, com uma maior

dedicação, é possível criar aplicativos em tempo real hard.

2. Funcionalidades do Linux SRT

A maioria das funcionalidades do RTLinux está em uma coleção de módulos

carregáveis do kernel que prestam serviços opcionais e níveis de abstração. Estes

módulos incluem:

Page 2: Artigo Str Rtlinux

1. rtl sched uma prioridade programador que suporta uma "lite POSIX" interface.

2. rtl time que controla os relógios do processador e exporta uma interface abstrata

para ligar manipuladores do relógios.

3. rtl posixio suportes do estilo POSIX de read /white /open com interface para

drivers de dispositivos.

4. rtl fifo conecta tarefas RT e manipuladores de interrupção de processos do

Linux.

5. Semáforo, é um pacote contribuído por Jerry Epplin.

6. POSIX apoio mutex está prevista para estar disponível na próxima versão de

atualização do RTLinux.

7. mbuff é um pacote escrito por Tomasz Motylewski para fornecer memória

compartilhada entre os componentes e processos RT Linux.

3. Módulos implementados no Kernel

A aplicação RT-Linux é na verdade um módulo do kernel. É o mesmo tipo de módulo,

que o Linux usa para os drivers, sistemas de arquivos entre outros. A principal diferença

entre módulo RTLinux e um módulo comum do Linux é que o módulo RT-Linux chama

funções, que são oferecidos pelo RT-Linux kernel enquanto módulo comum usa funções

do kernel do Linux apenas.

Um código-fonte de um módulo Linux simples é dado abaixo. Ele contém duas funções:

init_module, que é utilizado para o módulo ser iniciado por insmod ou modprobe, e

cleanup_module, que é chamado antes do módulo ser removido por rmmod.

#include <linux/module.h>

#include <linux/kernel.h>

int init_module(void)

{

printk("Init\n"); /*Printing "Init" in Kernel*/

Page 3: Artigo Str Rtlinux

return 0;

}

void cleanup_module(void)

{

printk("Cleanup\n"); /*Clearing "Init" in Kernel*/

}

4. Threads

RT-Linux implementa uma API POSIX para a manipulação de threads; a thread é criada

pela função pthread_create() e utiliza parâmetro que contem o código que será

executado pela thread, e a sua prioridade de execução.

5. Tempo real no kernel padrão 2.6

Hoje, no kernel 2.6, é possível obter o desempenho em tempo real soft por meio de uma

configuração simples de kernel. No kernel Linux 2.6 padrão, quando um processo de

espaço de usuário faz uma chamada para o kernel (por meio de uma chamada de

sistema), ele não pode prevalecer. Isto significa que, se um processo de baixa prioridade

faz uma chamada de sistema, um processo de alta prioridade precisa esperar até o

término dessa chamada antes de obter acesso à CPU. A nova opção de configuração

CONFIG_PREEMPT altera esse comportamento do kernel permitindo um

escalonamento dos processos se um trabalho de alta prioridade estiver disponível

(mesmo se o processo estiver no meio de uma chamada de sistema).

Esta opção de configuração tem no entanto, um trade-off. Apesar de a opção permitir o

desempenho em tempo real soft e mesmo sob carga fazer com que o sistema operacional

execute mais uniformemente, isso é feito com um custo. Esse custo é um rendimento

levemente mais baixo e uma pequena redução no desempenho do kernel por causa da

sobrecarga incluída pela opção CONFIG_PREEMPT. Essa opção é útil para desktop e

sistemas embarcados, mas talvez não seja a correta em todos os cenários (por exemplo,

servidores).

Page 4: Artigo Str Rtlinux

6. Thin Kernel

A abordagem thin-kernel (ou microkernel) utiliza um segundo kernel como interface de

abstração entre o hardware e o kernel Linux. O kernel Linux que não trabalha em tempo

real é executado em segundo plano como uma tarefa de baixa prioridade do thin kernel e

hospeda todas as tarefas que não sejam em tempo real. As tarefas em tempo real são

executadas diretamente no Thin kernel.

A utilização principal do thin kernel (além de hospedar as tarefas em tempo real) é o

gerenciamento das interrupções. O thin kernel intercepta as interrupções para assegurar

Page 5: Artigo Str Rtlinux

que o kernel que não seja em tempo real não possa preceder a operação do thin kernel.

Isto permite que o thin kernel forneça suporte em tempo real hard.

Embora a abordagem do thin kernel tenha suas vantagens (a coexistência entre o suporte

em tempo real hard e um kernel Linux padrão), ela apresenta desvantagens. As tarefas

em tempo real e as que não são em tempo real são independentes, o que pode dificultar a

depuração de erros. As tarefas que não são em tempo real também não oferecem suporte

completo à plataforma Linux (é por isso que a execução do thin kernel se chama thin ).

7. Nano-kernel

Enquanto a abordagem thin kernel conta com um kernel minimizado que inclui

gerenciamento de tarefas, a abordagem nano-kernel dá um passo adiante ao minimizar

ainda mais o kernel. Passa, assim, a ser menos um kernel e mais um Hardware

Abstraction Layer (HAL). O nano-kernel fornece ao hardware o compartilhamento de

recursos para vários sistemas operacionais funcionando em uma camada mais alta.

Como o nano-kernel abstrai o hardware, pode fornecer uma priorização para sistemas

operacionais de camadas mais altas e, portanto, oferecer suporte em tempo real hard.

Observe as semelhanças entre essa abordagem e a abordagem de virtualização para

executar vários sistemas operacionais. Neste caso, o nano-kernel abstrai o hardware a

Page 6: Artigo Str Rtlinux

partir dos kernels em tempo real e dos que não são em tempo real. Isto é similar à forma

como os hypervisores abstraem o hardware vazio dos sistemas operacionais convidados.

Consulte Recursos para obter informações adicionais.

Um exemplo da abordagem nano-kernel é o Adaptive Domain Environment for

Operating Systems (ADEOS). O ADEOS oferece suporte a vários sistemas operacionais

concorrentes que estejam executando simultaneamente. Quando ocorrerem eventos de

hardware, o ADEOS consulta cada sistema operacional de uma cadeia para verificar

qual irá lidar com o evento.

8. Resource kernel

Outra arquitetura de tempo real é a abordagem resource kernel. Ela inclui um modulo a

um kernel para fornecer reservas a vários tipos de recursos. As reservas garantem acesso

a recursos de sistema multiplexados por tempo (CPU, rede ou largura de banda de

disco). Esses recursos apresentam diversos parâmetros de reserva, como o período de

repetição, o tempo de processamento exigido (ou seja, o tempo necessário para o

processamento) e o prazo final.

O resource kernel oferece um conjunto de Interfaces de Programação de Aplicativos

(APIs) que permitem às tarefas solicitar essas reservas. O resource kernel pode, então,

unir as solicitações para definir um planejamento, de modo a fornecer acesso garantido

por meio de limitações definidas por tarefa (ou retornar um erro se elas não puderem ser

garantidas). Ao utilizar um algoritmo de planejamento como o Earliest-Deadline-First

(EDF), o kernel pode então ser utilizado para lidar com a carga de trabalho dinâmica do

planejamento.

Page 7: Artigo Str Rtlinux

Um exemplo de uma implementação de resource kernel é o Linux/RK da CMU, que

integra um resource kernel portátil no Linux como um módulo carregável. Essa

implementação evoluiu para a oferta comercial TimeSys Linux/RT.

Conclusão

Sabendo que os Sistemas em Tempo Real estão cada vez mais presentes no nosso dia-a-

ddia, tentamos com este artigo mostrar que o linux pode ser adaptado a estes sistemas

com uma simples implementação em sua arquitetura, adicionando um kernel que

permite fazer o controle de prioridade a recursos de hardware.

Page 8: Artigo Str Rtlinux

Referências

Disponivel em: http://www.engr.mun.ca/~oyoung/8894-thesis.pdf

Consultado em: 28/05/2012

Disponivel em: http://www.yodaiken.com/

Consultado em: 28/05/2012

Disponivel em: http://www.ibm.com/developerworks/br/library/l-real-time-linux/

Consultado em: 28/05/2012

Disponivel em: http://www.ece.ufrgs.br/~fetter/eng04008/rtlinux.pdf

Consultado em: 28/05/2012

Disponivel em: http://www.das.ufsc.br/~romulo/discipli/cad-cbtisa/sotr-resumo.pdf

Consultado em: 28/05/2012