SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
KU Real-Time Linux - KURT




Leandro Pinheiro – 261209
Isaac Teles - 261233
Índice
    Overview
●

    Introdução
●

    Comparação
●

    Modos de operação
●

    Escalonamento
●

    Módulos de tempo real
●

    Arquitetura
●
Overview
    Modificação do Linux que permite
●

    escalonamento de eventos de tempo real.
    Tempo de latência de 10 microsegundos
●

    Novas políticas de escalonamento
●

    adicionada àquelas já existentes no Linux.
    Dois modos de funcionamento
●
Introdução
    O kernel padrão do Linux oferece resolução
●

    de tempo de 10ms.
    UTIME é uma modificação do kernel padrão
●

    para suportar resolução de tempo de 10μs.
    Ex:- nanosleep: UTIME permite processos dormirem com precisão de
    microsegungos (milisegundos no linux padrão).
    KURT provê facilidade de escalonamento
●

    event-driven real-time, utilizando a resolução
    de tempo em microsegundos provida pelo
    UTIME.
Comparação
    O kernel do linux padrão oferece vários tipos
●

    de escalonamento dos processos com
    políticas de prioridade.
    - Altas prioridades não garatem que certos
    processos sempre vencerão na decisão de
    escalonamento.
    No Kurt, os mecanismos de escalonamento
●

    event-driven garantem a execução de
    processos por demanda, numa ordem
    previamente explicitada.
Modos de operação
    Modo normal: o sistema age como um sistema
●

    Linux genérico.
    Modo de tempo real:
●

    - Focussed mode: permite apenas processos real-
    time;
    - Mixed mode: execução de todas as tarefas,
    priorizando aquelas de tempo real. As tarefas
    convencionais são escalonadas caso não haja
    nenhuma tarefa de tempo real para executar.
    Uma simples chamada de sitema permite que o
    kernel altere de normal/tempo-real e vice-versa.
Escalonamento

    No Kurt, as aplicações precisam especificar
●

    explicitamente o instante em que os eventos de
    tempo real estão para ocorrer.
    Estes instantes são guardados em um arquivo
●

    de classificação e, baseando-se nele, os
    eventos são explicitamente escalonados.
-O termo explicitamente é usado propositadamente pois
  expressa como o escalonamento ocorre de acordo com
  os instanstes previamente determinados no arquivo de
  classificação.
Escalonamento
    O arquivo de classificação que informa qual rotina
●

    presente em um módulo de tempo real deve executar
    e quando.
    Toda rotina de tempo real executa a partir da hora
●

    marcada e suspende a si própria usando uma
    chamada de sistema apropriada.
    - Desta forma, a precisão do relógio de hardware é
    transferida para o comportamento das tarefas.
    Através da construção e manutenção de uma escala
●

    de execução apropriada, a interferência entre tarefas
    de tempo real podem ser resolvidas.
Escalonamento
    Tarefas periódicas também são aceitas. Elas
●

    definem o período desejado e são ativadas
    pelo Kurt-Linux no início de cada período.
    Quando a tarefa completa uma dada
●

    ativação, ela suspende a si mesma para ser
    acordada pelo sistema no início do próximo
    período.
Módulos de tempo real
O sistema KU Real-Time consise de módulos
  de tempo real (RTmods), no kernel, que
  realizam atividades específicas para as
  aplicações e um sistema base que chama
  estes módulos em tempos determinados
  pela aplicação (arquivo de classificação).
● Executam em modo kernel.

● Podem acessar dispositivos e outras partes

  do kernel.
Arquitetura
Modulo de processos
    Além dos módulos específicos para uma
●

    aplicação, Kurt tem um módulo de processos
    cuja função é efetuar a troca de contextos
    entre processos.
    Um arquivo de classificação especifica dois
●

    parâmetros: o instante em que o módulo de
    processo deve ser chamado e o para qual
    processo a troca de contexto deve ser
    realizada.
Kurt API Overview
A KURT API é dividida em três categorias:

    Operações de utilidade geral
●


    Inicialização, registro e controle de
●

    processos
     Schedule submission
●
Kurt API Overview
    Operações de utilidade geral
●




    Int kurt_open(void)
●

    - abre uma instância do KURT pseudo device
    Int get_num_rtprocs(int file_desc)
●

    - retorna o numero de processos real-time registrados no momento
    Int get_rtstats(int file_desc, int pid, struct rtstats *info)
●

    - Encontra e retorna a estrutura rtstats. Essa estrutura reporta o comportamento do processo real-time
Kurt API Overview
    Int get_rt_id_from_name(int file_desc, char *name, int length)
●

    - Retorna o id do processo real-time através do nomedo processo
    Int event_stats(int file_desc)
●

    - Imprime informações esttisticas do real-time timer, acumuladas desde
    o boot ou quando o módulo do kurt foi instalada pela ultima vez.
    Int proc_stats(int file_desc)
●

    Imprime informações estatisticas de todos processos real-time no
    momneto
    Int set_scheduling_offset(int file_desc, unsigned long value)
●

    Seta o offset do escalonamento do KURT
    Unsigned long get_scheduling_off(int file_desc)
●

    Retorna o offset.
Kurt API Overview
    Inicialização, registro e controle de processos
●




    Int tr_suspend(int file_desc, int susp_mode)
●

    - Suspende o processo real-time, marcando-o como interruptivel e
    chamando o escalonador. Para processos que utilizam o modo
    KURT_EPISODIC, essa rotina deve ser chamada em cada intervalo de
    execução. Para os que usam o modo KURT_CONTINUOUS, isso é
    opcional.
    Int set_rtparams(int file_desc, int pid, int policy, struct rtparams
●


    *params)
    - Set, reseta, ou unseta a estrutura de parametros real-time de um
    processo em particular, dependendo da variavel policy.
    Int get_rtparams(int file_desc, int pid, struct rtparams *params)
●

    - Retorna a estrutura de parametros real-time de um processo em
    particular.
Kurt API Overview
    Schedule submission
●




    Int rt_schedule_events(int file_desc, struct timeval *start_time, int type, int
●


    num_times, char *filename)
    - Envia um arquivo binário de escalonamento de timers real-time continuos do
    tipo timer_list ao kernel.
    Int set_scheduling_task( int file_desc)
●

    - Registra o processo como uma tarefa no escalonador.
    Int clear_scheduling_task( int file_desc)
●

    - Desfaz o registro do processo no escalonador.
    Int switch_to_rt(int file_desc, int rt_mode, const char *cmdline, int length)
●

    - Alterna o kernel para um modo específico de real-time, habilitando o
    escalonador real-time
    Int switch_to_normal(int file_desc, int force)
●

    - Alterna o kernel do modo real-time para o modo normal, desabilitando o
    escalonador real-time. Ao menos que seja forçado, essa rotina estará bloqueada
    até
Kurt API Overview
    Inicialiazação e registro de processos real-time no KURT
●




    Antes que um processo real-time seja registrado, é necessário que seja
●

    determinado qual tipo de escalonador será utilizado. O kurt possui
    diversos tipos de escalonamento event-driven disponíveis:
Kurt Api Overview
    Modos de escalonamento do kernel
●




    Há três modos de escalonamento do kernel real-time. Por default, o KURT
●

    kernel se encontra no modo normal, ou seja, chama apenas o escalonar padrão
    do Linux e bypass o escalonador real-time. Alternando o kernel para o modo
    real-time, habilita o escalonador real-time. Isso é feito através da chamada da
    rotina switch_to_rt e passando um dos seguintes argumentos rt_mode:
    SCHED_KURT_FOCUSSED – Apenas processos KURT real-time podem rodar
●

    nesse modo.
    SCHED_KURT_PREFERRED – Dá preferência a processos KURT real-time, se
●

    não houver nenhum processo real-time pronto para ser executado, o
    escalonador padrão do linux é chamado, selecionado uma tarefa non-real-time
    ou uma tarefa idle.
    SCHED_KURT_MIXED – Dá preferência apenas a processos KURT_EXPLICIT,
●

    KURT_ANYTIME e KURT_PERIODIC que triggered uma chamada ao
    escalonador, caso o escalonador seja triggered por qualquer outro motivo, o
    escalonador linux
Kurt API Overview
    Modos de escalonamento dos processos
●




    Os processo seleciona o tipo de escalonamento, configurando o campo rt_mode da sua
●

    estrutura rtparams. Uma vez inicialiazada a estrutura rtparams propriamente, ela deve ser
    associada com o processo, chamando a rotina set_rtparams. Isso vai fazer com que a
    estrutura seja copiado para o kernel e ligada ao processo especifico.
    Há três modos top-level de escalonamento disponíveis para processos real-time:
●




    KURT_EXPLICIT – Estas tarefas executam explicitamente durante intervalos de execução
●

    real-time. Elas não podem executar fora desses intervalos, exceto quando tratam sinais.
    Possuem preferência sobre todos outros processos.
    KURT_ANYTIME – Se diferenciam do KURT_EXPLICIT por poderem ser executados fora
●

    dos intervalos. Executando fora dos intervalos, são dependentes do modo de
    escalonamento atual do kernel.
    KURT_PERIODIC – Esse modo é especial, reservado para apenas um processo real-time
●

    por vez. O processo especifica um período, em microsegundos, e o kernel usa esse valor
    para gera wakeup timers dinamicamente, para esse processo. Um processo
    KURT_PERIODIC só ira
Instalação
    Para instalar o KURT Linux no seu sistema, sigua os seguintes passos:
●




    Faça o download da ultima versão do KURT-linux kernel patch, atualmente a
    versão kurt-2.4.18-2.patch, no site http://www.ittc.ku.edu/kurt.

    Faça também o download de uma cópia do linux kernel correspondente ao
    KURT-linux kernel patch, no site http://www.kernel.org

    Agora aplique o patch ao kernel:
    # patch -p1 -s < /diretorio/kurt-2.4.18.patch

    Feito o patch, configure, compile e instale o kernel.
    Não esquecer de marcar todas opções que tem a ver com UTIME e KURT como
    'build-in', na configuração do kernel.

    Reinicie o novo UTIME/KURT Kernel...
Instalação
    Agora no sistema:
●




    Faça o download das API e programas exemplo.
    http://www.ittc.ku.edu/kurt/downloads/kurt-2.4.18-2.tar.bz2

    Set a várialvel de ambiente KURTLINUX para apintar para seu patched KURT
    KERNEL. Por exemplo, se o KURT kernel seride em /usr/src/linux, faça o
    seguinte:
    >> setenv KURTLINUX /usr/src/linux

    Configure e compile a API e programas exemplo. Isso vai fazer com que seja
    instalada a biblioteca libkurt.a no /usr/local/lib/

    Agora crie os seguinte devices:
    # mknod /dev/kurt c 240 0
    # mknod /dev/utime c 241 0
    # mknod /dev/dstream c 242 0

Mais conteúdo relacionado

Mais procurados

Escalonador Earliest Deadline First - TDC2014SP
Escalonador Earliest Deadline First - TDC2014SPEscalonador Earliest Deadline First - TDC2014SP
Escalonador Earliest Deadline First - TDC2014SPRafael Moreira
 
Algoritmo de escalonamento Fuzzy Round Robin
Algoritmo de escalonamento Fuzzy Round RobinAlgoritmo de escalonamento Fuzzy Round Robin
Algoritmo de escalonamento Fuzzy Round RobinMarcos Castro
 
Processos threads senai
Processos threads senaiProcessos threads senai
Processos threads senaiCarlos Melo
 
So gabarito exerciciosescalonamentocpu-2012
So gabarito exerciciosescalonamentocpu-2012So gabarito exerciciosescalonamentocpu-2012
So gabarito exerciciosescalonamentocpu-2012Bill Lima
 
Arquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsArquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsEvandro Júnior
 
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio BucciantiLinux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio BucciantiJoao Galdino Mello de Souza
 
Algoritimos de Escalonamento
Algoritimos de EscalonamentoAlgoritimos de Escalonamento
Algoritimos de EscalonamentoJunior Cesar
 
Aula3 escalonamento
Aula3 escalonamentoAula3 escalonamento
Aula3 escalonamentoBruno Rick
 
Aula 12 - Escalonamento
Aula 12 - EscalonamentoAula 12 - Escalonamento
Aula 12 - Escalonamentocamila_seixas
 
Gerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUGerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUAlexandre Duarte
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsPedro De Almeida
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...Marcelo Barros de Almeida
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Jose Silva
 
Escalonamento em 3 níveis e Escalonamento por alternância circular
Escalonamento em 3 níveis e Escalonamento por alternância circularEscalonamento em 3 níveis e Escalonamento por alternância circular
Escalonamento em 3 níveis e Escalonamento por alternância circularEmmanuel Saes
 

Mais procurados (20)

Escalonador Earliest Deadline First - TDC2014SP
Escalonador Earliest Deadline First - TDC2014SPEscalonador Earliest Deadline First - TDC2014SP
Escalonador Earliest Deadline First - TDC2014SP
 
Algoritmo de escalonamento Fuzzy Round Robin
Algoritmo de escalonamento Fuzzy Round RobinAlgoritmo de escalonamento Fuzzy Round Robin
Algoritmo de escalonamento Fuzzy Round Robin
 
Processos threads senai
Processos threads senaiProcessos threads senai
Processos threads senai
 
So gabarito exerciciosescalonamentocpu-2012
So gabarito exerciciosescalonamentocpu-2012So gabarito exerciciosescalonamentocpu-2012
So gabarito exerciciosescalonamentocpu-2012
 
Arquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsArquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e Threads
 
S.o aula 1516
S.o aula 1516S.o aula 1516
S.o aula 1516
 
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio BucciantiLinux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
 
Algoritimos de Escalonamento
Algoritimos de EscalonamentoAlgoritimos de Escalonamento
Algoritimos de Escalonamento
 
Aula3 escalonamento
Aula3 escalonamentoAula3 escalonamento
Aula3 escalonamento
 
Prova1d
Prova1dProva1d
Prova1d
 
Aula 12 - Escalonamento
Aula 12 - EscalonamentoAula 12 - Escalonamento
Aula 12 - Escalonamento
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Gerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUGerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPU
 
Apresentacao sobre o QNX Neutrino
Apresentacao sobre o QNX NeutrinoApresentacao sobre o QNX Neutrino
Apresentacao sobre o QNX Neutrino
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
Escalonamento srtf
Escalonamento srtfEscalonamento srtf
Escalonamento srtf
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)
 
Escalonamento em 3 níveis e Escalonamento por alternância circular
Escalonamento em 3 níveis e Escalonamento por alternância circularEscalonamento em 3 níveis e Escalonamento por alternância circular
Escalonamento em 3 níveis e Escalonamento por alternância circular
 
Sistemas Operacionais de Tempo Real
Sistemas Operacionais de Tempo RealSistemas Operacionais de Tempo Real
Sistemas Operacionais de Tempo Real
 

Destaque

Aula MotivaçãO Humana
Aula MotivaçãO HumanaAula MotivaçãO Humana
Aula MotivaçãO Humanaeloychaves
 
Imagens Engraçadas, Esquisitas, Malucas e Tudo
Imagens Engraçadas, Esquisitas, Malucas e TudoImagens Engraçadas, Esquisitas, Malucas e Tudo
Imagens Engraçadas, Esquisitas, Malucas e Tudoguestc685b0
 
Teoria das relaçoes humanas
Teoria das relaçoes humanasTeoria das relaçoes humanas
Teoria das relaçoes humanasKarol Cantuaria
 
Teorias Da Motivação
Teorias Da MotivaçãoTeorias Da Motivação
Teorias Da Motivaçãoa1971
 
Slides psicologia social comunitária enade 2012
Slides psicologia social comunitária enade 2012Slides psicologia social comunitária enade 2012
Slides psicologia social comunitária enade 2012Bruna Talita
 
TEORIAS DA MOTIVAÇÃO
TEORIAS DA MOTIVAÇÃOTEORIAS DA MOTIVAÇÃO
TEORIAS DA MOTIVAÇÃOLudmila Moura
 

Destaque (8)

Aula MotivaçãO Humana
Aula MotivaçãO HumanaAula MotivaçãO Humana
Aula MotivaçãO Humana
 
Imagens Engraçadas, Esquisitas, Malucas e Tudo
Imagens Engraçadas, Esquisitas, Malucas e TudoImagens Engraçadas, Esquisitas, Malucas e Tudo
Imagens Engraçadas, Esquisitas, Malucas e Tudo
 
Teoria das relaçoes humanas
Teoria das relaçoes humanasTeoria das relaçoes humanas
Teoria das relaçoes humanas
 
Teorias Da Motivação
Teorias Da MotivaçãoTeorias Da Motivação
Teorias Da Motivação
 
Slides psicologia social comunitária enade 2012
Slides psicologia social comunitária enade 2012Slides psicologia social comunitária enade 2012
Slides psicologia social comunitária enade 2012
 
Gestalt
GestaltGestalt
Gestalt
 
TEORIAS DA MOTIVAÇÃO
TEORIAS DA MOTIVAÇÃOTEORIAS DA MOTIVAÇÃO
TEORIAS DA MOTIVAÇÃO
 
Kurt lewin
Kurt lewinKurt lewin
Kurt lewin
 

Semelhante a Apresentacao sobre o KURT

Process aware interrupt scheduling and accounting
Process aware interrupt scheduling and accountingProcess aware interrupt scheduling and accounting
Process aware interrupt scheduling and accountingGustavo Carvalho
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...Marcelo Barros de Almeida
 
Mudança de runlevels e desligamento do sistema
Mudança de runlevels e desligamento do sistemaMudança de runlevels e desligamento do sistema
Mudança de runlevels e desligamento do sistemaSoftD Abreu
 
Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisAbadia Cardoso
 
Aula 01b - Conceitos de Hardware e Software.pdf
Aula 01b - Conceitos de Hardware e Software.pdfAula 01b - Conceitos de Hardware e Software.pdf
Aula 01b - Conceitos de Hardware e Software.pdfEMERSONMUNIZDECARVAL
 
(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05Norton Trevisan Roman
 
ProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfssuser1d8ddd
 
Timers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSTimers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSMayara Mônica
 
Capítulo 16 rsyslog
Capítulo 16   rsyslogCapítulo 16   rsyslog
Capítulo 16 rsyslogPaulo Kutwak
 
Atividade de 1 a 6 da atps
Atividade  de 1 a 6 da atpsAtividade  de 1 a 6 da atps
Atividade de 1 a 6 da atpsJoabe Galvão
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Helder da Rocha
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDFrederico Madeira
 
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorCategorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorSofia Trindade
 

Semelhante a Apresentacao sobre o KURT (20)

Unix - Robert
Unix - RobertUnix - Robert
Unix - Robert
 
Unix - Sistema Operacional
Unix - Sistema OperacionalUnix - Sistema Operacional
Unix - Sistema Operacional
 
Process aware interrupt scheduling and accounting
Process aware interrupt scheduling and accountingProcess aware interrupt scheduling and accounting
Process aware interrupt scheduling and accounting
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
 
QNX Neutrino RTOS
QNX Neutrino RTOSQNX Neutrino RTOS
QNX Neutrino RTOS
 
Mudança de runlevels e desligamento do sistema
Mudança de runlevels e desligamento do sistemaMudança de runlevels e desligamento do sistema
Mudança de runlevels e desligamento do sistema
 
Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas Operacionais
 
Aula 01b - Conceitos de Hardware e Software.pdf
Aula 01b - Conceitos de Hardware e Software.pdfAula 01b - Conceitos de Hardware e Software.pdf
Aula 01b - Conceitos de Hardware e Software.pdf
 
Arquitetura 8 3
Arquitetura 8 3Arquitetura 8 3
Arquitetura 8 3
 
Arquitetura 8 3
Arquitetura 8 3Arquitetura 8 3
Arquitetura 8 3
 
(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05
 
ProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfProcessosEscalonamento.pdf
ProcessosEscalonamento.pdf
 
Timers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSTimers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOS
 
Capítulo 16 rsyslog
Capítulo 16   rsyslogCapítulo 16   rsyslog
Capítulo 16 rsyslog
 
Processos
ProcessosProcessos
Processos
 
Atividade de 1 a 6 da atps
Atividade  de 1 a 6 da atpsAtividade  de 1 a 6 da atps
Atividade de 1 a 6 da atps
 
Kernel cooperativo
Kernel cooperativoKernel cooperativo
Kernel cooperativo
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
 
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorCategorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
 

Mais de Líus Fontenelle Carneiro (15)

DSPic
DSPicDSPic
DSPic
 
Transputer
TransputerTransputer
Transputer
 
AVR
AVRAVR
AVR
 
Wavecom
WavecomWavecom
Wavecom
 
PSoC
PSoCPSoC
PSoC
 
HC11
HC11HC11
HC11
 
Blackfin
BlackfinBlackfin
Blackfin
 
ARM
ARMARM
ARM
 
Zilog
ZilogZilog
Zilog
 
Apresentação sobre o kernel Linux v2.0
Apresentação sobre o kernel Linux v2.0Apresentação sobre o kernel Linux v2.0
Apresentação sobre o kernel Linux v2.0
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVR
 
Java Web Start
Java Web StartJava Web Start
Java Web Start
 
Programação para Redes de Computadores: Multithread e Multicast
Programação para Redes de Computadores: Multithread e MulticastProgramação para Redes de Computadores: Multithread e Multicast
Programação para Redes de Computadores: Multithread e Multicast
 
Sistemas Distribuídos: RMI, CORBA e SOA
Sistemas Distribuídos: RMI, CORBA e SOASistemas Distribuídos: RMI, CORBA e SOA
Sistemas Distribuídos: RMI, CORBA e SOA
 
Kernel Linux
Kernel LinuxKernel Linux
Kernel Linux
 

Apresentacao sobre o KURT

  • 1. KU Real-Time Linux - KURT Leandro Pinheiro – 261209 Isaac Teles - 261233
  • 2. Índice Overview ● Introdução ● Comparação ● Modos de operação ● Escalonamento ● Módulos de tempo real ● Arquitetura ●
  • 3. Overview Modificação do Linux que permite ● escalonamento de eventos de tempo real. Tempo de latência de 10 microsegundos ● Novas políticas de escalonamento ● adicionada àquelas já existentes no Linux. Dois modos de funcionamento ●
  • 4. Introdução O kernel padrão do Linux oferece resolução ● de tempo de 10ms. UTIME é uma modificação do kernel padrão ● para suportar resolução de tempo de 10μs. Ex:- nanosleep: UTIME permite processos dormirem com precisão de microsegungos (milisegundos no linux padrão). KURT provê facilidade de escalonamento ● event-driven real-time, utilizando a resolução de tempo em microsegundos provida pelo UTIME.
  • 5. Comparação O kernel do linux padrão oferece vários tipos ● de escalonamento dos processos com políticas de prioridade. - Altas prioridades não garatem que certos processos sempre vencerão na decisão de escalonamento. No Kurt, os mecanismos de escalonamento ● event-driven garantem a execução de processos por demanda, numa ordem previamente explicitada.
  • 6. Modos de operação Modo normal: o sistema age como um sistema ● Linux genérico. Modo de tempo real: ● - Focussed mode: permite apenas processos real- time; - Mixed mode: execução de todas as tarefas, priorizando aquelas de tempo real. As tarefas convencionais são escalonadas caso não haja nenhuma tarefa de tempo real para executar. Uma simples chamada de sitema permite que o kernel altere de normal/tempo-real e vice-versa.
  • 7. Escalonamento No Kurt, as aplicações precisam especificar ● explicitamente o instante em que os eventos de tempo real estão para ocorrer. Estes instantes são guardados em um arquivo ● de classificação e, baseando-se nele, os eventos são explicitamente escalonados. -O termo explicitamente é usado propositadamente pois expressa como o escalonamento ocorre de acordo com os instanstes previamente determinados no arquivo de classificação.
  • 8. Escalonamento O arquivo de classificação que informa qual rotina ● presente em um módulo de tempo real deve executar e quando. Toda rotina de tempo real executa a partir da hora ● marcada e suspende a si própria usando uma chamada de sistema apropriada. - Desta forma, a precisão do relógio de hardware é transferida para o comportamento das tarefas. Através da construção e manutenção de uma escala ● de execução apropriada, a interferência entre tarefas de tempo real podem ser resolvidas.
  • 9. Escalonamento Tarefas periódicas também são aceitas. Elas ● definem o período desejado e são ativadas pelo Kurt-Linux no início de cada período. Quando a tarefa completa uma dada ● ativação, ela suspende a si mesma para ser acordada pelo sistema no início do próximo período.
  • 10. Módulos de tempo real O sistema KU Real-Time consise de módulos de tempo real (RTmods), no kernel, que realizam atividades específicas para as aplicações e um sistema base que chama estes módulos em tempos determinados pela aplicação (arquivo de classificação). ● Executam em modo kernel. ● Podem acessar dispositivos e outras partes do kernel.
  • 12. Modulo de processos Além dos módulos específicos para uma ● aplicação, Kurt tem um módulo de processos cuja função é efetuar a troca de contextos entre processos. Um arquivo de classificação especifica dois ● parâmetros: o instante em que o módulo de processo deve ser chamado e o para qual processo a troca de contexto deve ser realizada.
  • 13. Kurt API Overview A KURT API é dividida em três categorias: Operações de utilidade geral ● Inicialização, registro e controle de ● processos Schedule submission ●
  • 14. Kurt API Overview Operações de utilidade geral ● Int kurt_open(void) ● - abre uma instância do KURT pseudo device Int get_num_rtprocs(int file_desc) ● - retorna o numero de processos real-time registrados no momento Int get_rtstats(int file_desc, int pid, struct rtstats *info) ● - Encontra e retorna a estrutura rtstats. Essa estrutura reporta o comportamento do processo real-time
  • 15. Kurt API Overview Int get_rt_id_from_name(int file_desc, char *name, int length) ● - Retorna o id do processo real-time através do nomedo processo Int event_stats(int file_desc) ● - Imprime informações esttisticas do real-time timer, acumuladas desde o boot ou quando o módulo do kurt foi instalada pela ultima vez. Int proc_stats(int file_desc) ● Imprime informações estatisticas de todos processos real-time no momneto Int set_scheduling_offset(int file_desc, unsigned long value) ● Seta o offset do escalonamento do KURT Unsigned long get_scheduling_off(int file_desc) ● Retorna o offset.
  • 16. Kurt API Overview Inicialização, registro e controle de processos ● Int tr_suspend(int file_desc, int susp_mode) ● - Suspende o processo real-time, marcando-o como interruptivel e chamando o escalonador. Para processos que utilizam o modo KURT_EPISODIC, essa rotina deve ser chamada em cada intervalo de execução. Para os que usam o modo KURT_CONTINUOUS, isso é opcional. Int set_rtparams(int file_desc, int pid, int policy, struct rtparams ● *params) - Set, reseta, ou unseta a estrutura de parametros real-time de um processo em particular, dependendo da variavel policy. Int get_rtparams(int file_desc, int pid, struct rtparams *params) ● - Retorna a estrutura de parametros real-time de um processo em particular.
  • 17. Kurt API Overview Schedule submission ● Int rt_schedule_events(int file_desc, struct timeval *start_time, int type, int ● num_times, char *filename) - Envia um arquivo binário de escalonamento de timers real-time continuos do tipo timer_list ao kernel. Int set_scheduling_task( int file_desc) ● - Registra o processo como uma tarefa no escalonador. Int clear_scheduling_task( int file_desc) ● - Desfaz o registro do processo no escalonador. Int switch_to_rt(int file_desc, int rt_mode, const char *cmdline, int length) ● - Alterna o kernel para um modo específico de real-time, habilitando o escalonador real-time Int switch_to_normal(int file_desc, int force) ● - Alterna o kernel do modo real-time para o modo normal, desabilitando o escalonador real-time. Ao menos que seja forçado, essa rotina estará bloqueada até
  • 18. Kurt API Overview Inicialiazação e registro de processos real-time no KURT ● Antes que um processo real-time seja registrado, é necessário que seja ● determinado qual tipo de escalonador será utilizado. O kurt possui diversos tipos de escalonamento event-driven disponíveis:
  • 19. Kurt Api Overview Modos de escalonamento do kernel ● Há três modos de escalonamento do kernel real-time. Por default, o KURT ● kernel se encontra no modo normal, ou seja, chama apenas o escalonar padrão do Linux e bypass o escalonador real-time. Alternando o kernel para o modo real-time, habilita o escalonador real-time. Isso é feito através da chamada da rotina switch_to_rt e passando um dos seguintes argumentos rt_mode: SCHED_KURT_FOCUSSED – Apenas processos KURT real-time podem rodar ● nesse modo. SCHED_KURT_PREFERRED – Dá preferência a processos KURT real-time, se ● não houver nenhum processo real-time pronto para ser executado, o escalonador padrão do linux é chamado, selecionado uma tarefa non-real-time ou uma tarefa idle. SCHED_KURT_MIXED – Dá preferência apenas a processos KURT_EXPLICIT, ● KURT_ANYTIME e KURT_PERIODIC que triggered uma chamada ao escalonador, caso o escalonador seja triggered por qualquer outro motivo, o escalonador linux
  • 20. Kurt API Overview Modos de escalonamento dos processos ● Os processo seleciona o tipo de escalonamento, configurando o campo rt_mode da sua ● estrutura rtparams. Uma vez inicialiazada a estrutura rtparams propriamente, ela deve ser associada com o processo, chamando a rotina set_rtparams. Isso vai fazer com que a estrutura seja copiado para o kernel e ligada ao processo especifico. Há três modos top-level de escalonamento disponíveis para processos real-time: ● KURT_EXPLICIT – Estas tarefas executam explicitamente durante intervalos de execução ● real-time. Elas não podem executar fora desses intervalos, exceto quando tratam sinais. Possuem preferência sobre todos outros processos. KURT_ANYTIME – Se diferenciam do KURT_EXPLICIT por poderem ser executados fora ● dos intervalos. Executando fora dos intervalos, são dependentes do modo de escalonamento atual do kernel. KURT_PERIODIC – Esse modo é especial, reservado para apenas um processo real-time ● por vez. O processo especifica um período, em microsegundos, e o kernel usa esse valor para gera wakeup timers dinamicamente, para esse processo. Um processo KURT_PERIODIC só ira
  • 21. Instalação Para instalar o KURT Linux no seu sistema, sigua os seguintes passos: ● Faça o download da ultima versão do KURT-linux kernel patch, atualmente a versão kurt-2.4.18-2.patch, no site http://www.ittc.ku.edu/kurt. Faça também o download de uma cópia do linux kernel correspondente ao KURT-linux kernel patch, no site http://www.kernel.org Agora aplique o patch ao kernel: # patch -p1 -s < /diretorio/kurt-2.4.18.patch Feito o patch, configure, compile e instale o kernel. Não esquecer de marcar todas opções que tem a ver com UTIME e KURT como 'build-in', na configuração do kernel. Reinicie o novo UTIME/KURT Kernel...
  • 22. Instalação Agora no sistema: ● Faça o download das API e programas exemplo. http://www.ittc.ku.edu/kurt/downloads/kurt-2.4.18-2.tar.bz2 Set a várialvel de ambiente KURTLINUX para apintar para seu patched KURT KERNEL. Por exemplo, se o KURT kernel seride em /usr/src/linux, faça o seguinte: >> setenv KURTLINUX /usr/src/linux Configure e compile a API e programas exemplo. Isso vai fazer com que seja instalada a biblioteca libkurt.a no /usr/local/lib/ Agora crie os seguinte devices: # mknod /dev/kurt c 240 0 # mknod /dev/utime c 241 0 # mknod /dev/dstream c 242 0