Escalonamento em Sistemas de Tempo Real

4
Escalonamento em Sistemas de Tempo Real Lucas Schiolin Silveira, Mateus Henrique Sabino, Victor Debone Mattos. UNESP - Universidade Estadual Paulista “Júlio de Mesquita Filho” Rio Claro, São Paulo, Brasil Resumo – Neste trabalho, é abordada uma visão geral sobre algoritmos de escalonamento para sistemas de tempo real. Para isso, inicialmente, é apresentada uma definição de sistema de tempo real. A seguir, é definido em linhas gerais, o algoritmo de escalonamento para esse tipo de sistema. Então, são apresentados alguns algoritmos de escalonamento. Por fim, alguns exemplos de sistemas de tempo real são apresentados, a fim de contextualizar o trabalho. I. INTRODUÇÃO Sistemas de tempo real estão presentes em toda parte, controlando desde leitores de DVD até a navegação de aeronaves. Esses sistemas não podem falhar com frequência, em outros casos, nunca podem falhar e por isso o tempo de execução dos processos se torna fundamental para os algoritmos de escalonamento. Nesse artigo serão abordados alguns desses algoritmos para sistemas de tempo real, definindo suas classificações e implementações. II. SISTEMAS DE TEMPO REAL O sistema de tempo real (STR) é aquele onde o tempo tem função essencial. Em geral, os dispositivos geram estímulos e o computador deve reagir a eles dentro de um intervalo de tempo predefinido. [1] Nesses sistemas os processos podem ser referenciados como tarefas e essas possuem certas restrições e qualidades temporais. Todas as tarefas possuem os seguintes atributos básicos: um prazo de entrega (deadline), um tempo de execução e um tempo de release. O deadline é definido como quando a tarefa deve terminar, o tempo de execução é quanto tempo tal tarefa deve ser executada e o tempo de release é quando a tarefa deve ser executada [2]. As tarefas podem ser classificadas também como periódicas ou não-periódicas. As periódicas são recorrentes em intervalos regulares e as não-periódicas ocorrem de modo imprevisível [1]. Há, em termos gerais, duas categorias em que sistemas de tempo real podem ser classificados: tempo real crítico (hard STR) e tempo real não crítico (soft STR). Ambos estão relacionados com o cumprimento de prazos dos processos, sendo que no primeiro os prazos absolutos devem ser cumpridos e qualquer falha nesse ponto caracteriza um erro grave. No segundo, o descumprimento de um prazo é tolerável, embora não desejável. [1] Pode-se citar como exemplos de sistema de tempo real crítico: um sistema embarcado de navegação de uma aeronave (Figura 1) ou um sistema embarcado de proteção de linhas de alta tensão. Em ambos os casos qualquer falha no sistema pode causar danos irreversíveis. Nos sistemas de tempo real não crítico pode-se citar, como exemplo, o funcionamento de um leitor de DVD, no qual se houver algum atraso do tempo de execução de um processo não causaria maiores danos. Figura 1. STR presente nos sistemas embarcados de navegação de aeronaves

description

Neste trabalho, é abordada uma visão geral sobre algoritmos de escalonamento para sistemas de tempo real.

Transcript of Escalonamento em Sistemas de Tempo Real

Page 1: Escalonamento em Sistemas de Tempo Real

Escalonamento em Sistemas de Tempo Real

Lucas Schiolin Silveira, Mateus Henrique Sabino, Victor Debone Mattos.

UNESP - Universidade Estadual Paulista “Júlio de Mesquita Filho”

Rio Claro, São Paulo, Brasil

Resumo – Neste trabalho, é abordada uma visão geral sobre algoritmos de escalonamento para sistemas de tempo real. Para isso, inicialmente, é apresentada uma definição de sistema de tempo real. A seguir, é definido em linhas gerais, o algoritmo de escalonamento para esse tipo de sistema. Então, são apresentados alguns algoritmos de escalonamento. Por fim, alguns exemplos de sistemas de tempo real são apresentados, a fim de contextualizar o trabalho.

I. INTRODUÇÃO Sistemas de tempo real estão presentes em toda parte,

controlando desde leitores de DVD até a navegação de aeronaves. Esses sistemas não podem falhar com frequência, em outros casos, nunca podem falhar e por isso o tempo de execução dos processos se torna fundamental para os algoritmos de escalonamento. Nesse artigo serão abordados alguns desses algoritmos para sistemas de tempo real, definindo suas classificações e implementações.

II. SISTEMAS DE TEMPO REAL O sistema de tempo real (STR) é aquele onde o tempo tem função essencial. Em geral, os dispositivos geram estímulos e o computador deve reagir a eles dentro de um intervalo de tempo predefinido. [1] Nesses sistemas os processos podem ser referenciados como tarefas e essas possuem certas restrições e qualidades temporais. Todas as tarefas possuem os seguintes atributos básicos: um prazo de entrega (deadline), um tempo de execução e um tempo de release. O deadline é definido como quando a tarefa deve terminar, o tempo de execução é quanto tempo tal tarefa deve ser executada e o tempo de release é quando a tarefa deve ser executada [2].

As tarefas podem ser classificadas também como periódicas ou não-periódicas. As periódicas são recorrentes em intervalos regulares e as não-periódicas ocorrem de modo imprevisível [1]. Há, em termos gerais, duas categorias em que sistemas de tempo real podem ser classificados: tempo real crítico (hard STR) e tempo real não crítico (soft STR). Ambos estão relacionados com o cumprimento de prazos dos processos, sendo que no primeiro os prazos absolutos devem ser cumpridos e qualquer falha nesse ponto caracteriza um erro grave. No segundo, o descumprimento de um prazo é tolerável, embora não desejável. [1] Pode-se citar como exemplos de sistema de tempo real crítico: um sistema embarcado de navegação de uma aeronave (Figura 1) ou um sistema embarcado de proteção de linhas de alta tensão. Em ambos os casos qualquer falha no sistema pode causar danos irreversíveis.

Nos sistemas de tempo real não crítico pode-se citar, como exemplo, o funcionamento de um leitor de DVD, no qual se houver algum atraso do tempo de execução de um processo não causaria maiores danos.

Figura 1. STR presente nos sistemas embarcados

de navegação de aeronaves

Page 2: Escalonamento em Sistemas de Tempo Real

III. ESCALONAMENTO EM SISTEMAS DE TEMPO REAL

Esta seção descreve, em linhas gerais, o escalonamento de processos em sistemas de tempo real.

A. Definição Os algoritmos podem ser estáticos ou dinâmicos. Os algoritmos estáticos decidem antes da execução do sistema, mas só funciona quando se tem prévia informação da tarefa a ser realizada e os prazos a serem cumpridos, pois assim atribuem antecipadamente um prioridade fixa a cada processo. Os algoritmos dinâmicos o fazem em tempo de execução, e não necessitam de informações prévias da tarefa a ser executada. [1]

Antes de realizar o escalonamento, é necessário verificar o conjunto de processos de tempo real são escalonáveis. Isso pode ser feito da seguinte forma: se o processo i tiver um período (time slice) de Pi ms e exigir Ci ms da CPU para tratar cada evento, o sistema será escalonável, se e somente se

em que m é o número de processos do conjunto.

O processador também pode dar suporte para a preempção, uma pausa na execução de um algoritmo para a inicialização de outro algoritmo com maior prioridade. Quando isso ocorre o estado do processo em funcionamento no processador é salvo e o outro processo inicia, trocando de contexto, causando um pequeno atraso. Então no final da execução do processo mais prioritário, o processador retorna o estado do processo pausado e continua sua execução.

B. Algoritmos de Escalonamento A seguir, serão apresentados alguns algoritmos de escalonamento utilizados em sistemas de tempo real, descrevendo brevemente seu funcionamento, suas vantagens e desvantagens. Todos os algoritmos apresentados seguem o modelo de escalonamento baseado em tarefas, onde é levado em consideração os atributos do escalonamento [3].

1) Escalonamento por taxa monotônica (RMS) Esse algoritmo é também conhecido como rate monotonic scheduling (RMS). Foi proposto por Liu e Layland, em 1973. É um algoritmo estático, além de ser preemptivo.

O algoritmo RMS segue algumas premissas, que facilitam as análises de escalonabilidade [1][5]:

1. As tarefas são períodicas e independentes; 2. O “deadline” de cada tarefa coincide com seu período

(Di = Pi ); 3. O tempo para computar de cada tarefa (Ci) é

conhecido e constante; 4. O tempo de troca entre as tarefas é entendido com

nulo. As premissas 1 e 2 restringem o uso desse algoritmo

na prática, mas são fundamentais. O RMS atribui prioridades aos processos dependendo

do número de vezes que eles serão executados por segundo, sendo que quanto maior a freqüência de execução, maior a prioridade [4].

Ou seja, a política de atribuição de prioridades das tarefas do conjunto faz com que as prioridades vão decrescendo conforme os períodos das tarefas vão aumentando, e essas prioridades são fixas (uma vez atribuído, não serão alteradas) [5]. Por esse motivo, o RMS é dito um algoritmo de escalonamento estático.

Por exemplo, um processo que tem que executar a cada 30ms (33 vezes/s) recebe prioridade 33, enquanto outro que deve ser executado a cada 40ms (25 vezes/s), recebe prioridade 25. Assim, concluímos que as prioridades são lineares em relação à freqüência (número de vezes por segundo, que o processo executa), e por isso é chamado monotônico. Em tempo de execução, o escalonador sempre executa o processo que estiver pronto, e com prioridade mais alta [1].

Figura 2. Exemplo de funcionamento do RMS [1].

Na Figura 2, temos um exemplo onde o processo A

(prioridade 33) é mais prioritário que B (prioridade 25), que por sua vez é mais prioritário que C (prioridade 20). É

Page 3: Escalonamento em Sistemas de Tempo Real

possível perceber claramente que, quando um processo mais prioritário que aquele que está executando entra em estado de “pronto”, o escalonador remove o atual e coloca esse processo, e que processos com menor prioridade devem esperar um momento em que a CPU fica ociosa para executar [1].

Basicamente, o uso de prioridades estáticas só funciona se a ocupação do CPU não for muito grande. Liu e Layland demonstraram que, em qualquer sistema de tempo real, é garantido que o RMS funcione se:

2) Escalonamento prazo mais curto primeiro (EDF) Também conhecido como Earliest Deadline First (EDF), é um algoritmo dinâmico que não requer que os processos sejam periódicos, como no RMS. O escalonador mantém uma lista de processos executáveis, e seus prazos de execução. Essa lista é ordenada pelo vencimento dos prazos, e o algoritmo executa o primeiro processo da lista (aquele que tem menor prazo, mais próximo de vencer, ou seja, com deadline mais curto) [1].

Caso um novo processo entre em estado de “pronto”, o escalonador irá verificar o seu prazo de execução, e caso ele tiver um prazo menor que o processo que está executando atualmente, ocorre a preempção e esse novo processo passa a ser executado pela CPU [1].

Figura 3. Exemplo de funcionamento do EDF [1].

Na Figura 3, é possível observar um exemplo de

funcionamento do EDF, assim como no RMS. Os períodos são os mesmos do exemplo da Figura 1, do RMS, mas agora A precisa de 15ms de CPU, e não mais de 10ms. Vemos que o RMS falha, pois segundo seu esquema estático de prioridades, ele não consegue escalonar o processo C no prazo necessário. Isso não acontece com o EDF: em t=30, o prazo de A2 vence em t=60, enquanto o prazo de C1 vence em t=50, e assim o processo C é escalonado em tempo [1].

Para o EDF, o teste de escalonabilidade padrão (apresentado anteriormente) é suficiente [5]. Segundo o teste, para esse exemplo teremos que a utilização será de 97,5% (0,500 + 0,375 + 0,100, para os processos A, B e C, respectivamente) [1].

IV. EXEMPLOS DE SISTEMAS DE TEMPO REAL A seguir, são apresentados alguns exemplos de sistemas de tempo real. 1) VxWorks

É o sistema mais utilizado no mundo, com mais de 300 milhões de aparelhos (2012) utilizando ele. Ele mantém a compatibilidade com as versões anteriores e com padrões POSIX.

Para escalonamento ele utiliza Round Robin para acomodar processos em tempo real ou não. Utiliza a proteção de memória baseada na delegação de espaço na MMU.

Tem menor tempo de troca de contexto pois ao salvar e recuperar os estados dos processos congelados o VxWorks só utiliza os registradores relevantes para isso.

2) RTLinux

É um microkernel RTOS que roda o Linux preemptivamente, então ele mantém os processos do Linux congelados quando existem requisições de tempo real para serem executadas. O RTLinux também emula as interrupções do hardware para o software. As tarefas de tempo real utilizam memória estática sem proteção de endereços, as outras tarefas do SO são executadas normalmente no Linux.

3) LynxOS

O LynxOS fornece funcionalidades adicionais de um RTOS por meio de plugins do Kernel, como pilha de redes(TCP/IP) e sistemas de arquivo. O OS ainda fornece proteção de memória e suporte para compiladores e debuggers.

V. CONCLUSÃO Como mencionado anteriormente, o tempo de execução de processos é o fator fundamental em um sistema de tempo real, desse modo, é importante escolher um algoritmo de escalonamento compatível com o tipo de sistema a ser construído, seja esse crítico ou não-crítico.

Page 4: Escalonamento em Sistemas de Tempo Real

Vimos também que essa escolha dependem do conjunto de processos de tempo real. Caso for conhecido os tempos de CPU necessários para cada processo, e estes forem constantes, bastaria usar o algoritmo RMS, caso contrário o algoritmo EDF seria utilizado.

REFERÊNCIAS [1] TANENBAUM, Andrew S. “Sistemas operacionais modernos”: tradução Ronaldo A.L. Gonçalves. Luís A. Consularo. Luciana do Amaral Teixeira; revisão técnica Raphael Y. de Camargo. - 3. ed. - São Paulo : Pearson Prentice Hall. 2009. [2] LINDH, Frederik. OTNES, Thomas. WENNERSTRÖM, Jessica. Scheduling Algorithms for Real-Time Systems. Mälardalens University, Sweden. [3] AMORIM, Vicente. Escalonamento de Sistemas de Tempo Real. Universidade Federal de Ouro Preto, Departamento de Computação. Outubro/2002. Disponível em <http://www.decom.ufop.br/vicente/disciplinas/2012_2/bcc722/EscalonamentoSistemasTempoReal.pdf>. [4] Sistema operacional de tempo real. Disponível em <http://pt.wikipedia.org/wiki/Sistema_operacional_de_tempo-real>. [5] FARINES, Jean-Marine, et al. “Sistemas de tempo real”. Departamento de Automação de Sistemas, UFSC. Florianópolis. Julho/2000.