Aula 3. Executivos (kernels) de tempo-real. Sistemas de Tempo-Real

Documentos relacionados
Aula 3. Executivos (kernels) de tempo-real. Sistemas de Tempo-Real

Sistemas de Tempo-Real

Sistemas de Tempo-Real. Acesso exclusivo a recursos partilhados

RTKPIC18. Breve Manual. (Real-Time Kernel PIC18FXX8) 1. Introdução. Pedro Leite nº21526 Ricardo Marau nº Janeiro 2004

Sistemas de Tempo-Real. Acesso exclusivo a recursos partilhados

Sistemas de Tempo-Real 2

Sistemas de Tempo-Real

Sistemas de Tempo-Real

Sistemas de Tempo-Real

Aula 9 Outros aspetos do escalonamento de tempo-real

Aula 8. Escalonamento de tarefas aperiódicas. Sistemas de Tempo-Real

Sistemas de Tempo-Real

Sistemas Operativos: Implementação de Processos

Conceitos Básicos dos Sistemas de Tempo Real

Sistemas Operativos: Implementação de Processos

Gestor de Processos. Gestor de Processos

Sistemas Operacionais de Tempo Real. Sérgio Campos

RELÓGIOS. (d) Entre 101 e 99 milisegundos. (e) Entre 102 e 98 milisegundos.

Conceitos básicos de Tempo Real

Processos. Conceitos Básicos

Sistemas Operacionais Aula 07: Scheduling da CPU. Ezequiel R. Zorzal

Arquitetura de Sistemas Operativos

Notas da Aula 11 - Fundamentos de Sistemas Operacionais

Sistemas Operacionais Aula 7

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

Processos. Conceitos Básicos

Questões de Provas de Períodos Anteriores

Multiprocessamento. Escalonamento de Processos: Algoritmos. Escalonamento em POSIX. Escalonamento de Threads. Padrão de Execução dum Processo

Introdução aos Sistemas de Tempo Real

Sistemas Operacionais

Sistemas Operativos: Escalonamento de Processos

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos

Variância dos Tempos de Resposta

LEIC/LERC 2008/09 Primeiro Teste de Sistemas Operativos

Sistemas Operacionais. Gerência de Processador

Grupo I [7 Val] 1. Considere os seguintes 3 algoritmos de escalonamento num sistema operativo de tempo virtual:

Real Time Application Interface

S.Ha.R.K OS. (Soft Hard Real-time Kernel) Tiago Varum Ruben Gonçalves 35736

Sistemas Operacionais

Sistemas de Tempo-Real

Sistemas Operacionais

Escalonamento de Processos. Estratégia de atribuição do Processador aos Processos

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III. Escalonamento de Processos. 24/04/2014 Prof. Valeria M. Bastos

Sistemas Distribuídos Aula 3

Sistemas de Tempo Real

Execução Concorrente

Sistemas Operacionais

Escalonamento em Sistemas de Tempo Real

Sincronização. Problema da Exclusão Mútua

SISTEMAS EMBARCADOS. Escalonamento e Tempo Real. Prof. André Schneider de Oliveira

! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema

Caracterização. Sistemas de Tempo Real: Caracterização. Caracterização. Caracterização. Concepções Erradas. Mercados

Sistemas Operativos. Escalonamento e sincronização. Rui Maranhão

Sistemas Operacionais de Tempo Real. Prof. Andre Luis Meneses Silva

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 6. Primitivas de Sincronização

Sistemas Operacionais

Processos. Escalonamento de Processos

Comunicação entre Processos

Sistemas Operacionais

Arquitetura de Sistemas Operativos

Sistemas Operacionais: Sincronização entre processos

14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo

Escalonamento de Tarefas

Introdução aos Sistemas Operativos

João Correia Lopes. v 1.0, Outubro de Introdução aos Sistemas Operativos v1.0 1

Especificação, Modelação e Projecto de Sistemas Embutidos

Abordagens de Escalonamento

Sincronização. Problema da Exclusão Mútua

Davidson Rodrigo Boccardo

Escalonamento no Unix. Sistemas Operacionais

Threads. O que é uma Thread? Paralelismo

Aspectos Construtivos dos Sistemas Operacionais de Tempo Real

Trincos Lógicos: Implementações. Trincos lógicos: Propriedades

Sistemas Operacionais. Escalonamento de Processos

Execução Concorrente

SISTEMAS OPERACIONAIS

Processos. Estruturas de Controle

Introdução aos Sistemas Operacionais. Threads

Sincronização. Problema da Exclusão Mútua

SEM 544 Desenvolvimento de Produtos Mecatrônicos

LabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada...

Sistemas Operacionais I

Algoritmos de Escalonamento II

Aula 10. Engenharia de Sistemas Embarcados. Prof. Abel Guilhermino Tópico: Sistemas de Tempo Real

Sistemas Operacionais

Processos. Aula Passada. Aula Passada (2) Ciclos de CPU e de I/O (1)

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

Sistemas Operacionais

Unix: Processos e o Kernel. Sistemas Operacionais

Unix: Processos e o Kernel

Notas da Aula 10 - Fundamentos de Sistemas Operacionais

SSC0640 Sistemas Operacionais I

Sistemas Operacionais

Processos. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,

Sistemas Operacionais I

Sistemas Operacionais. BSI / UAB 2013 Hélio Crestana Guardia

Teste de Sistemas de Operação 30 de Maio de 2009

Transcrição:

Sistemas de Tempo-Real Aula 3 Executivos (kernels) de tempo-real Os estados de uma tarefa Arquitetura genérica de um executivo de tempo-real Estruturas e funções típicas do executivo Adaptado dos slides desenvolvidos pelo Prof. Doutor Luís Almeida para a disciplina Sistemas de Tempo-Real Revisto em 24.Set.2013 por Paulo Pedreiras

Aula anterior (2) Modelos computacionais (modelo de tempo-real) Tarefas de tempo-real: periódicas, esporádicas e aperiódicas Restrições temporais do tipo deadline, janela, sincronismo e distância Implementação de tarefas e utilização de um kernel multitasking Controlo lógico e controlo temporal Tarefas event-triggered e time-triggered DETI - STR 13/14 2

Estados de uma tarefa Criação de uma tarefa associação do código (e.g. função em linguagem C ) a um espaço de variáveis privado (private stack) e a uma estrutura de gestão (task control block TCB) Execução de uma tarefa Execução concorrente do código da tarefa, usando o respetivo espaço privado de variáveis, sob controlo do kernel, com reativação de cada instância periodicamente ou como resposta a um evento externo. J 3 i J 2 k J 1 n J 1 n+1 J 2 k+1 J 1 n+2 J 3 i+1 tempo DETI - STR 13/14 3

Estados de uma tarefa Execução das instâncias das tarefas As instâncias prontas a executar, i.e. depois de ativadas, aguardam em fila pela atribuição de CPU (para execução). A fila é ordenada por um determinado critério de escalonamento, não necessariamente por ordem de chegada! Instâncias ativadas... J 3 i J 2 k J 1 n Execução CPU Terminação Preempção DETI - STR 13/14 4

Estados de uma tarefa Estados dinâmicos da tarefa As instâncias das tarefas podem estar a aguardar execução (prontas) ou em execução. Após terminação de cada instância, a tarefa respetiva fica num estado dormente (idle), a aguardar a ativação da próxima instância. Assim, considera-se que uma tarefa pode estar pronta, em execução ou dormente. activação Pronta despacho criação Dormente preempção Execução terminação DETI - STR 13/14 5

Estados de uma tarefa Outros estados: Bloqueio Quando uma tarefa em execução tenta aceder a um recurso partilhado (e.g. uma porta de comunicação, um buffer em memória) que está ocupado em modo exclusivo por uma tarefa pronta, a primeira diz-se que fica bloqueada. Quando o recurso é libertado, a tarefa bloqueada fica novamente pronta para execução. Recurso liberto ativação Pronta despacho Bloqueada criação Dormente preempção Execução Recurso ocupado terminação DETI - STR 13/14 6

Estados de uma tarefa Auto-suspensão (sleep) Em certas aplicações pode ser útil uma tarefa em execução autosuspender-se e retomar a execução mais tarde, ainda durante a mesma instância. Diz-se que a tarefa fica suspensa. reactivação Recurso liberto Suspensa activação Pronta despacho Bloqueada criação Dormente preempção Execução Recurso ocupado Auto-suspensão terminação DETI - STR 13/14 7

Arquitetura de um kernel tempo-real Serviços básicos Gestão de tarefas (criação, destruição, ativação inicial, estado) Gestão do tempo (ativações, policiamento, medição de intervalos) Escalonamento de tarefas (escolha da tarefa a executar) Despacho de tarefas (colocação em execução) Gestão de recursos partilhados (mutexes, semáforos, monitores) 1 2 3 N TCBs System_calls Gestão de tarefas Escalonador Gestão de tempo Gestão de recursos Recursos part. Despacho timer System hardware DETI - STR 13/14 8

Estruturas de gestão TCB (task control block) Esta estrutura é fundamental num kernel e serve para caracterizar a tarefa, bem como para gerir a respetiva execução. Alguns campos usuais: Identificador Ponteiro para o código a ser executado Ponteiro para o stack privado (salvaguarda do contexto) Atributos de ativação (periódica, (fase inicial), esporádica, aperiódica) Atributos de criticalidade (hard, soft, não real-time) Outros atributos (deadline, prioridade) Estado dinâmico de execução e outras variáveis para controlo de ativação (timers de SW, deadline absoluta) DETI - STR 13/14 9

Estruturas de gestão TCB do RTKPIC typedef struct { unsigned char id; /* task id - 0..14 */ void (*func_ptr)(void); /* task first instruction address */ unsigned char state; /* task state */ unsigned int period; /* task period in ticks */ unsigned int deadline; /* task deadline relative to activation */ unsigned long nx_activ; /* task next activation in absolute ticks */ unsigned long nx_deadline; /* task next deadline in absolute ticks */ unsigned char priority; /* task priority */ } TASK; /* Number of tasks */ #define NTASKS 14 /* main + 13 user tasks */ /* Task Control Table */ TASK tcb[ntasks] DETI - STR 13/14 10

Estruturas de gestão Estrutura de TCBs Normalmente, os TCBs estão definidos num array estático mas estruturados segundo uma lista ligada para facilitar buscas sobre o conjunto das tarefas (poderá haver mais TCBs que tarefas!) Qualquer lista ordenada (e.g. das tarefas prontas ready queue) pode ser facilmente realizada sobre a estrutura de TCBs através de um ponteiro (pode ser um índice) para o próximo TCB na lista. Apenas 3 TCBs usados 1,2 e 4 Topo da lista de tarefas TCB 1 TCB 2 TCB 3 TCB 4... Topo da lista de tarefas prontas Tarefas 2 e 4 prontas DETI - STR 13/14 TCB N TCB N 11 TCB 1 TCB 2 TCB 3 TCB 4...

Estruturas de gestão Percorre todo o array Testa se deve activar Estrutura de TCBs no RTKPIC18 O RTKPIC18 foi concebido para aplicações com pequeno número de tarefas. Neste caso optou-se por não realizar as filas de tarefas com listas. Sempre que é necessário fazer uma busca, e.g. para efetuar a ativação de tarefas, percorre-se todo o array! /* Secção do tick handler */ for (temporary_i = 1; temporary_i < n_task; temporary_i++) { temporary_task_i = tcb + temporary_i; if (temporary_task_i->nx_activ == system_clock) { /* new activation */ if ((temporary_task_i->state == READY) (temporary_task_i->state == RUN)) deadline_miss = (0x01 << temporary_i); /* deadline missing */ Testa se ocorreu violação de deadline Altera o estado e invoca o escalonador } temporary_task_i->state = READY; temporary_task_i->nx_activ += temporary_task_i->period; if ((preempt_sys == PREEMPT) (run_task_id == 0)) Call_scheduler = 1; /* New task READY: Call scheduler */ if (sch_alg == EDF) Call_EDF = 1; /* Call EDF priority set */ DETI - STR 13/14 12

Estruturas de gestão Acesso a recursos partilhados Os recursos partilhados com acesso exclusivo (regiões críticas) têm, tal como o CPU, de ser geridos de forma apropriada de modo a serem acedidos por uma tarefa de cada vez. Uma forma comum de efetuar este controlo é recorrer a flags atómicas (mutexes), monitores (execução não preemptiva) ou semáforos. No caso de se utilizarem semáforos, deverá haver uma estrutura por semáforo que indique o respetivo estado bem como a lista de tarefas a aguardar acesso SCB (semaphore control block) SCB Contador (estado) Lista de tarefas à espera No RTKPIC apenas existe apenas controlo da preempção, a qual pode ser inibida. DETI - STR 13/14 13

Funções de gestão Gestão do tempo A gestão do tempo num kernel é fundamental e serve para: Ativar as tarefas periódicas Verificar cumprimento de restrições temporais Medir intervalos de tempo (inclusive para auto-suspensão) É efetuada com recurso a um timer do sistema. O timer pode ser programado como: Periodic tick: gerar interrupções periódicas (ticks). O respetivo handler faz a gestão do tempo. Os atributos temporais são múltiplos inteiros do tick. Single-shot/One-shot/tickless: o timer é programado para gerar interrupções apenas nos precisos instantes em que existe ativação de uma ou mais tarefas. DETI - STR 13/14 14

Funções de gestão Sistemas baseados em tick A duração do tick estabelece a resolução temporal do sistema. Quanto menor o tick, melhor a resolução! E.g. tick de 10ms => períodos das tarefas T 1 =20ms, T 2 =1290ms, T 3 =25ms A gestão temporal (atendimento do tick) representa overhead (C tick /T tick ) Quanto maior o tick, menor o overhead!! C tick Compromisso: tick = MDC (T i, i=1..n) T tick tempo E.g. T 1 =20ms, T 2 =1290ms, T 3 =25ms => MDC(20,1290,25)=5ms mas tick > min_tick imposto pela velocidade do CPU! DETI - STR 13/14 15

Funções de gestão Medição de intervalos de tempo Em sistemas com ticks, o kernel mantém uma variável que conta o nº de ticks desde a respetiva ativação e.g. no RTKPIC unsigned long system_clock, lida pela macro get_sys_time() com tick=10ms, esta variável faz wrap around após 1,6 anos Para maior precisão é necessário ler diretamente o timer. Para maior longevidade é necessário usar outro contador suplementar. Em CPUs Pentium, com um relógio de 1GHz, o TSC faz wrap around após 486 anos!!! DETI - STR 13/14 16

Funções de gestão Escalonador Escolhe qual a próxima tarefa a executar de entre as tarefas prontas Deve usar um critério determinístico para permitir calcular o atraso máximo (pior caso) que uma tarefa pode sofrer na fila Fila de tarefas prontas... J 3 i J 2 k J 1 n Topo da fila Escalonado r Estabelece a ordenção da fila DETI - STR 13/14 17

Funções de gestão Despacho Coloca uma tarefa selecionada em execução. Se o sistema admitir preempção pode ser necessário interromper a tarefa que está em execução. Nestes sistemas o mecanismo de despacho é baseado em manuseamento da stack. Interrupção do Tick Tarefa 1 em execução Stack da tarefa 1 Tick handler Stack da tarefa 2 Registos do CPU Variáveis Tarefa 2 Função de SP(2) dinâmicas inicia despacho Registos execução (...) do CPU SP(1) tcb1.sp=sp SP=tcb2.SP DETI - STR 13/14 rti 18

ReTMiK Real Time Micro-mouse Kernel http://sweet.ua.pt/~lda/retmik/retmik.html Baseado em ticks. Corre em arquiteturas x86 (há uma versão para PC) Código das tarefas é acíclico Escalonador inserido no código do kernel (necessário recompilar para alterar) Sincronização entre tarefas por inibição de preempção (monitor) IPC por variáveis globais Gera aplicação monolítica (código de aplicação + kernel) task_n( ) { /* código da tarefa SEM ciclo infinito */ } main( ) { init_system( ); /* para cada tarefa */ t= atributos; create_task (t); start_all( ); while(1) { /* background */ } } DETI - STR 13/14 19

RTKPIC Real-Time Kernel for PIC18 Baseado no ReTMiK Baseado em ticks Corre em processadores PIC18FXXX Código das tarefas é cíclico Escalonador inserido no código do kernel (necessário recompilar para alterar) Controlo de preempção IPC por variáveis globais Gera aplicação monolítica (código de aplicação + kernel) task_n( ) { task_init(); while(1) { /* código da tarefa*/ } main( ) { create_system(... ); /* para cada tarefa */ create_task (...); config_system(); release_system( ); while(1) { /* background */ } } DETI - STR 13/14 20 }

SHaRK Soft and Hard Real Time Kernel http://shark.sssup.it/ Objetivo principal de obter flexibilidade na modificação das políticas de escalonamento quer para CPU quer para recursos partilhados POSIX (parcial/ compatível) Arquiteturas x86 >= i386 Código das tarefas cíclico Variados métodos de IPC Conceito de Task Model (HRT, SRT, NRT, per, aper) e de Scheduling Module EDF RM TBS DS NRT N 0 Dados globais Kernel genérico livrarias void * TaskBody (void *arg){ OSLib /* inicialização */ hardware while (cond) { /* código da tarefa */ (...) Policiamento, controlo de admissão task_endcycle( );} /* termina com cond */ Gera aplicação monolítica DETI - STR 13/14 return my_val;} 21 PCP PIP SRP InitFile (declaração dos módulos) tarefa init (inicializações e chama main( ) ) int main ( ){ /* outras inicializações */ /* definir tarefas de acordo com o Task Model */ task_create ( ); task_activate ( ); /* pode terminar ou esperar para fechar o sistema */ while (keyb_getchar( )!=ESC); sys_end ( );}

Xenomai: Real-Time Framework for Linux http://www.xenomai.org/ Objetivo de permitir usar o SO Linux em aplicações de tempo-real // A task void task_a(void *cookie) { Usa o conceito de módulo /* Set task as periodic */ err=rt_task_set_periodic(null, TM_NOW, TASK_A_PERIOD_NS); carregado dinamicamente for(;;) { // Forever err=rt_task_wait_period(&overruns); Tarefas correm em kernel // Task load } ou user space return; } POSIX (parcial/ compatível) // Main int main(int argc, char *argv[]) {... // Init code Código das tarefas cíclico /* Create RT task */ err=rt_task_create(&task_a_desc, "Task a", TASK_STKSZ, Variados métodos de IPC, TASK_A_PRIO, TASK_MODE); rt_task_start(&task_a_desc, &task_a, 0); quer entre tarefas TR quer... com tarefas NRT /* wait for termination signal */ wait_for_ctrl_c(); (pipe, queue, buffer,...) return 0; } DETI - STR 13/14 22

Resumo da Aula 3 Os estados de execução de uma tarefa diagrama de transição de estados A arquitetura genérica de um kernel de tempo-real Os componentes básicos de um kernel de tempo-real, estruturas de dados e funções Exemplos: ReTMiK, RTKPIC18, SHaRK e XENOMAI DETI - STR 13/14 23