Breve introdução ao Real Time Application Interface (RTAI)



Documentos relacionados
Xenomai Short Intro. Paulo Pedreiras DETI/University of Aveiro. Sistemas Tempo-Real Out/2013 (Rev. 1 - Out/2015)

Universidade Federal de Pernambuco Centro de Informática. Aluno: Anderson L. S. Moreira Orientador: Paulo R. R.

Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo.

Capítulo 4 Gerência de Processador

Aspectos de Sistemas Operativos

Capítulo 8. Software de Sistema

Arquitetura e Organização de Computadores

Infra-Estrutura de Software. Introdução. (cont.)

Departamento de Engenharia Informática Computação Avançada

Processos. Paulo Sérgio Almeida 2005/2006. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho

Aula 2 Modelos computacionais

Threads e Concorrência em Java (Material de Apoio)

Sistemas de Tempo Real

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Simulação de Redes de Comunicação

Real Time Linux. Walter Fetter Lages

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Gestor de Processos Núcleo do Sistema Operativo

Programação com Posix Threads

Entradas/Saídas. Programação por espera activa Programação por interrupções

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração:

8 Threads. 8.1 Introdução

Turno/Horário Noturno PROFESSOR : Salomão Dantas Soares AULA Apostila nº

Sistemas Operativos. Sumário. Escalonador da CPU. ! Filas Multinível. ! Filas Multinível com Feedback. ! Escalonamento em multiprocessadores

Gerenciamento de memória

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes.

Capítulo 5: Escalonamento da CPU

Máquinas virtuais. Máquina virtual de um processo. Máquinas virtuais (3) Máquina virtual de sistema. Máquinas virtuais (1) VMware para Windows e Linux

Prof. Jhonatan Fernando

Introdução aos Sistemas Operativos

Sistemas Operacionais

SISTEMAS OPERACIONAIS

Integração de Sistemas Embebidos MECom :: 5º ano

Conceitos Básicos sobre Programação Prática

(Aula 15) Threads e Threads em Java

Mecanismo de Interrupção

Gestor de Processos Núcleo do Sistema Operativo. Sistemas Operativos 2011 / Gestor de Processos

Aula 5 Escalonamento usando prioridades fixas

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Sistemas Operativos I

Arquitetura de um Computador

Sistemas Operacionais

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios

Sistemas Operacionais. Prof. André Y. Kusumoto

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Métodos de Sincronização do Kernel

Guia rápido de criação e gestão de um espaço no SAPO Campus

SISTEMAS OPERACIONAIS

Descrição e análise da implementação em Assembly MIPS da função itoa

Capítulo 4 Gerência do Processador. O que sabemos é uma gota, o que ignoramos é um oceano. Isaac Newton

Formação de Administradores de Redes Linux LPI level 1. Aula 2 SENAC TI Fernando Costa

Unified Modeling Language. Diagramas de Implementação

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

TÉCNICAS DE ESTIMATIVAS DE CUSTOS ANÁLISE POR PONTOS DE FUNÇÃO. Alessandro Kotlinsky Deise Cechelero Jean Carlos Selzer. Resumo

Sistemas Operacionais. Roteiro. Tipos de Tarefas (temporal) Marcos Laureano

Arquitetura de Sistemas Operacionais

Curso Profissional de Técnico de Gestão e Programação de Sistemas Informáticos. Sistemas Operativos - 2º Ano

Escalonamento de CPU 2 Quadrimestre

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

(Aula 17) Threads em Java

Gerenciamento de memória

Neste tópico, veremos como selecionar e copiar informações entre bancos de dados de empresa no SAP Business One.

Introdução à Ciência da Computação

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Sistemas de Tempo Real: Conceitos Básicos

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

Este artigo abaixo foi produzido originalmente para a Network Core Wiki. Reproduzo-a aqui na íntegra. Publicado originalmente em 07/12/2007.

Sistemas Operacionais

Instalar uma versão do Ubuntu de 32 bits ou de 64 bits?

Java Threads. Introdução

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

Estrutura Interna do KernelUNIX Sistema O. Estrutura Interna de Arquivos (1) Estrutura Seqüência. User application. Standard Unix libraries

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

Kaspersky Fraud Prevention for Endpoints

Guia de Atualização do Projudi

Gestão do Risco e da Qualidade no Desenvolvimento de Software

FTL066 Programação em Tempo Real Segunda Lista de Exercícios

7 Processos. 7.1 Introdução

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Transcrição:

Breve introdução ao Real Time Application Interface (RTAI) Sistemas de Tempo-Real DETI/UA Paulo Pedreiras DETI/UA Set/2012 DETI/UA STR 12/13 1

Conteúdo Requisitos Kernel Linux O RTAI Como carregar uma aplicação Anatomia de uma aplicação DETI/UA STR 12/13 2

Requisitos Muitas aplicações integram componentes com e sem requisitos de tempo-real, logo poderão beneficiar da existência de plataformas com suporte e serviços standard, sem requisitos de tempo-real. Estas plataformas são habitualmente compostas por um sistema operativo standard, que fornece um leque alargado de serviços (e.g. file-system, HMI,...) e um executivo/kernel tempo-real para suporte aos componentes com este tipo de requisitos Soluções baseadas em Linux: Suporte tempo-real nativo em Linux Modificações ao kernel para tempo-real (low-latency patch, KURT,...) Linux como uma tarefa de um kernel tempo-real (RTAI, RTLinux,...) DETI/UA STR 12/13 3

Suporte a tarefas tempo-real em Linux O Linux suporta o as POSIX 1003.13 real-time extensions, todavia... O suporte a tarefas tempo-real em Linux usando POSIX é pouco eficiente: O kernel sofre de longos tempos de bloqueio Resultado de um critério de desenho que beneficia o throughput Preempção de tarefas durante system calls não é permitida Tarefas de alta prioridade podem ser bloqueadas por tarefas de baixa-prioridade por períodos relativamente longos Mecanismos de escalonamento pouco flexíveis e eficientes Apenas Round-Robin e FIFO para tempo-real DETI/UA STR 12/13 4

Serviços do kernel Linux O kernel Linux oferece às aplicações (entre outros) os seguintes serviços: Camada de gestão de hardware: gestão de periféricos e do CPU (tratamento de eventos, interrupções,...) Camada de escalonamento: responsável pela ativação de processos, prioridades,... Comunicação: comunicação entre processos (FIFO, shared memory,...) Aplicação (user space) Ap_1 Ap_N Kernel Linux Escalonamento Gestão HW IPC Hardware CPU Periféricos DETI/UA STR 12/13 5

O Real-Time Application Interface Conjunto de módulos de kernel Linux, com as seguintes propriedades: Linux torna-se um tarefa background Captura e age como dispatcher de interrupções. Interceta todas as interrupções encaminhando-as, se necessário para o kernel Linux Torna o kernel Linux completamente preemptível Pouco intrusivo para o kernel Linux. Funcionalidade do kernel não é alterada. DETI/UA STR 12/13 6

Real-Time Application Interface Disponibiliza as seguintes classes de serviços: Gestão de HW (periféricos) Escalonamento, gerindo tarefas, prioridades, ativações,... Comunicação entre tarefas tempo-real e entre os domínios tempo-real e processos Linux normais (FIFO, shared memory, mailbox,...) Aplicação (user space) Ap_1 Ap_N RTT_1 RTT_K Tarefas Tempo-Real Kernel Linux Escalonamento IPC Gestão HW RT IPC RT Sched Interrupt dispatcher RTAI Hardware CPU Periféricos DETI/UA STR 12/13 7

Blocos RTAI A arquitectura de software do RTAI é composta por: Interface para o Linux HW Management (HAL): basicamente uma estrutura de dados Dispatcher, scheduler e IPC Interface usado pelas tarefas do utilizador para gerir componentes Do ponto de vista do Linux estes serviços encontram-se encapsulados em módulos do kernel. DETI/UA STR 12/13 8

Virtualização das interrupções O RTAI mantém uma imagem do estado das interrupções visto pelo Linux. Funções Cli () and Sti () afetam apenas uma estrutura de dados do RTAI e não o controlador de interrupções propriamente dito As interrupções reais são intercetadas pelo RTAI. São encaminhadas para o Linux apenas quando apropriado (RSI registada e interrupção enabled). Linux não bloqueia tarefas tempo-real. Do ponto de vista do RTAI o kernel torna-se completamente preemptível DETI/UA STR 12/13 9

Real-Time Application Interface Principais módulos Rtai_hal: Rtai_sched: Criação e inicialização de estruturas de dados (TCBs,..), inicialização do esquema de captura e gestão de interrupções Atribui o CPU às diversas tarefas de acordo com a sua prioridade. Diversas classes de escalonadores suportados (processador único, multi-processador) Rtai_shm/Rtai_fifos/...: Mecanismos IPC. Serviços para criação, leitura e escrita. Mecanismos funcionam entre tarefas tempo-real e entre estas e processos linux (vistos como /dev/fifo_x; /dev/shm_x;...) DETI/UA STR 12/13 10

Carregar uma aplicação Componentes RTAI são vistos pelo Linux como módulos do Kernel Adicionar módulo /sbin/insmod mod_name.ko Remover módulo /sbin/rmmod mod_name Listagem de módulos carregados /sbin/lsmod Informação de estado e debug via kernel ring buffer Instrução dmesg para consultar DETI/UA STR 12/13 11

Passo 1: carregar o RTAI Carregar uma aplicação Exemplo de script para carregar RTAI... prefix="/usr/realtime" insmod='sudo /sbin/insmod' MODULES=$prefix/modules sync $insmod $MODULES/rtai_hal.ko IsolCpusMask=0; $insmod $MODULES/rtai_up.ko; $insmod $MODULES/rtai_sem.ko;... DETI/UA STR 12/13 12

Carregar uma aplicação Passo 2: carregar o módulo da aplicação sudo /sbin/insmod app_name.ko Os módulos RTAI necessitam de ser carregados apenas uma vez após o arranque do sistema A aplicação pode ser carregada/descarregada o número de vezes necessário (e.g. para debug) Os módulos RTAI podem ser removidos e novamente carregados a qualquer altura sem que o Linux seja afectado DETI/UA STR 12/13 13

Anatomia de uma aplicação Duas funções especiais Função de inicialização Executada automaticamente aquando do carregamento do módulo Alocação de recursos (e.e shared memory, fifos), criação das tarefas, inicialização do sistema de contagem de tempo Função de terminação Executada automaticamente aquando da remoção do módulo Paragem das tarefas, libertação dos recursos alocados Não há função main()! DETI/UA STR 12/13 14

Anatomia de uma aplicação Função de inicialização int str_test_init(void) { RTIME tick_period; RTIME starttime; int res; printk("[str_test] Initializing RTAI module...\n"); /* RT FIFO initialization */ res =rtf_create(fifo_id, FIFO_SIZE); if (res) {... /* Initialize user RT tasks */ rt_task_init(&utask0, fun0, 0, STACK_SIZE, 0, USE_FPU, 0);... DETI/UA STR 12/13 15

Anatomia de uma aplicação /* Compute system tick (tick_period in internal timer units) */ tick_period = start_rt_timer(nano2count(period)); starttime = rt_get_time() + NUM_TASKS*tick_period*1000; /* Start User RT Tasks */ rt_task_make_periodic(&utask0, starttime, TASK0_PERIOD*tick_period);... printk("[str_test] Module successfuly loaded!\n"); return 0; } DETI/UA STR 12/13 16

Anatomia de uma aplicação Função de remoção void str_test_exit(void) { int res; stop_rt_timer(); rt_busy_sleep(10000000); /* Remove user RT tasks */ rt_task_delete(&utask0);... /* Release FIFO */ res=rtf_destroy(fifo_id);... printk("\n Finito!\n"); } DETI/UA STR 12/13 17

Anatomia de uma aplicação Corpo de uma tarefa static void fun1(long t) { /* Local vars and startup code here (executed once)*/... /* Task body */ while(1) { /* task code here */... /* Can use IPC */ rtf_put(fifo_id,&tevt,sizeof(tevt));... /* Sleep until next activation */ rt_task_wait_period(); } } DETI/UA STR 12/13 18