28
Escalonament o de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Embed Size (px)

Citation preview

Page 1: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Escalonamento de Tempo Real

Métodos de escalonamento de processos para sistemas de tempo real

Page 2: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Escalonamento de Processos

Programa que foi ativado Estados de um processo:

Ready Running

Waiting

New Halted

CriaçãoEscalonador

Término

Esperandoevento

Eventoocorreu

ID do Processo

Estado

Program Counter

Memory PointersContexto (regs.)

I/O Status

Prioridade

Accounting Info• tempo CPU• limites, etc.

Bloco de Controle

Page 3: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Filas de Escalonamento

Long-term

queue

Short-term

queueCPU

I/Oqueue

I/Oqueue

I/Oqueue

I/O

I/O

I/O

Processrequest FIM

High-levelscheduling

Short-termscheduling

I/O scheduling

InterruptHandler

Interruptof process

Interrupt from I/O

Page 4: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Exemplo

Contr. Serviços

Scheduler

contr. interrupção

Sist. Operacional

ARun

B“Ready”

Outros processos

Execu-tando

Sist. Operacional

A“Waitin

g

B“Ready

Execu-tando

Contr. Serviços

Scheduler

contr. interrupção

Outros processos

A“Waitin

g

BRun Execu-

tando

Contr. Serviços

Scheduler

contr. interrupção

Outros processos

Sist. OperacionalProcesso A parou:• Req. serviço ao

S.O.• Interrupção de A

Ex. erro• Interrupção de

outra fonteEx. I/O

Processo A parou:• Req. serviço ao

S.O.• Interrupção de A

Ex. erro• Interrupção de

outra fonteEx. I/O

Page 5: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Taxonomia de Escalonamento

Dinâmico Requer kernel flexível

Estático Baixo overhead Não flexível

Online Decisões tomadas

online

Pre-emptivo

Mono-Processador

Offline Decisões tomadas

offline

Não pre-emptivo

Multi-processador

Page 6: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

EscalonamentoPre-runtime

20 50

0 50

10 60 70

C ( = 20) D ( = 20)

A ( = 20)

Relations: A C B C

Processor1

Processor2

40 80

20

30

d’Ar’A

d’B d’C d’Dr’C r’B, r’

D

B ( = 20)cB cCcD

cA

20 50

0

10 60 70

B ( = 20)C ( = 20) D ( = 20)

A ( = 20)

Relations: C A B C

Processor1

Processor2

40 80

30

30

d’Ar’A

d’B d’Dr’C d’Cr’,BD

cBcCcD

cA

50

r’

Page 7: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Escalonamento pre-runtime

CreateRootNode rootLN = ØCN = {root}

stop: node q has a feasible solution

ProduceBasicSchedule( q )

LN = LN {q}

stop: iST | lateness(i) = minLateness i has an optimal but unfeasible solution

LN = Ø minLateness minLLB

LLB( q ) minLateness LLB( q ) 0

lateness(q) 0

n | n CNAdjustRelations( n )

q | consistent(q) = true

parentNode = i | ( LLB(i) = min ( LLB(n) | n LN ) )LN = LN - {parentNode}CreateBranchSets(parentNode)CN = CreateChildNodes(parentNode)

Yes

Yes

No

No

Yes

No

Page 8: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Exemplo 2

Relations: A B, B C, C D

Relations: B A, B C, C D

20 60 70

1

2

9540 100

4025

d’C

d’D

r’C

r’A d’A r’D

0

r’B

5

d’Er’E

45 55

D

80

E

60

d’B

C

B

70

2

95

4525

d’C

d’D

r’C

r’,A r’D

0

r’B

5

d’Er’Ed’A

45 55 80

60

d’B

25

C

EDA B

75

A

Relations: A B, B C, C D

Relations: B A, B C, C D

20 60 70

1

2

9540 100

4025

d’C

d’D

r’C

r’A d’A r’D

0

r’B

5

d’Er’E

45 55

D

80

E

60

d’B

C

B

70

2

95

4525

d’C

d’D

r’C

r’,A r’D

0

r’B

5

d’Er’Ed’A

45 55 80

60

d’B

25

C

EDA B

75

A

Page 9: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Exemplo 3

3

d’B

1

d’D

r’A d’A

r’ ,C r’D

r’B

D2

12080 1100 60 9020

70 80400 50 90

700 10 5020

d’C

95

r’E

75

d’Er’F

85

E

d’F

115

F

Relations:A B, B C,B D, D E

C

B

A

3

d’B

C

1

d’D

r’A d’A

r’,C r’D

r’B

D

A

2

B

110400 60

70400 60 90

400 10 50

d’C

95

r’E

75

d’Er’F

85

E

d’F

115

F

3

d’B

C

1

d’D

r’A d’A

r’,C r’D

r’B

D

A

2

B

1100 6020

80400 50 60 90

700 10 5020

d’C

95

r’E

75

d’Er’F

85

E

d’F

115

F

Page 10: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Real-Time KernelsNúcleos operacionais para sistemas de tempo real

Page 11: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Introdução Que funções um núcleo deve ter? Que tipos existem? Como são implementados? Núcleo: comprar ou construir, eis a

questão.

Page 12: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Funções de um núcleo Escalonamento Dispatcher Comunicação entre tarefas

Page 13: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Tipos de Núcleo Nano-kernel:

Uma única thread (apenas task dispatching) Micro-kernel:

+ escalonamento (multi-tasking) Kernel:

+ comunicação Executivo

Blocos privados de memória, I/O e outros serviços (maioria dos kernels comerciais)

Sistema Operacional Interface com usuário (shell), gerenciamento de arquivos, segurança.

Page 14: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Sistemas de Tempo Real - STRImplementação

WCET: Restrições Impostas Memória virtual Memória cache Alocação dinâmica de memória Garbage collection Recursão

Técnicas de Implementação Interrupção Exceção Polling

Processos em background e Foreground

Co-rotinas

Page 15: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Polled Loop

Exemplo:while TRUE do

{if (sensor_ativo)

{

processe_dados();sensor_ativo =

FALSE;}

}

Page 16: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Polled Loop com interrupções Elimina switch bounce

while TRUE do{if (tecla_ativa)

{contador = 0;while (contador <

3);tecla_ativa =

FALSE;processe_dados();}

}

interrupt Clock {contador++;}

Page 17: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Phase/State-Driven Code Processos são implementados como FSMs

while TRUE{get(input);estado = transicao[ord(input)][state];executeProcesso(estado);}

executeProcesso(state estado){switch estado

case 0: processo0;case 1: processo1;

}

Page 18: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Corotinas (Ada e Modula-2) Dificil de Programar

ProcessoA(){while TRUE switch estadoA

case 0: faseA0;case 1: faseA1;

}

ProcessoB(){while TRUE switch estadoB

case 0: faseB0;

case 1: faseB1;}

Page 19: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Modelo de Pilha Tarefas são controladas diretamente por interrupção Salvam seu contexto na pilha Usado em sistemas embarcados

Taski

salva contexto executa código restaura contexto

Page 20: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Round-robin com time slicing Tarefas tem tempo fixo de execução Salvam seu contexto na pilha Usado em sistemas embarcados

Page 21: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Sistemas baseados em prioridade Rate-monotonic

Requer um kernel (pequeno S.O.) para escalonar as tarefas dinamicamente

Todas as tarefas são periódicas Tarefas esporádicas podem ser tratadas por “servidores esporádicos”,

que são tarefas periódicas Tarefas com menor período têm maior prioridade Existem técnicas de análise capazes de garantir a priori se um conjunto

específico de tarefas é escalonável, ou seja, que obedecerão seus deadlines. Para isso, é necessário que:

Todos os deadlines sejam iguais aos períodos Não haja precedência ou exclusão mútua

Page 22: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Sistemas baseados em prioridade Deadline monotonic

Baseado no rate monotonic Todas as tarefas são periódicas Tarefas esporádicas podem ser tratadas por

“servidores esporádicos”, que são tarefas periódicas Tarefas com menor deadline têm maior prioridade Também permite analisar a escalonabilidade, mas não

é necessário que os os deadlines sejam iguais aos períodos

Page 23: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Sistemas foreground/background Caso geral de SETR Foreground

Processos com interrupções (ex. round-robin, prioridade fixa) Background

Processos sem interrupções (pre-emptáveis pelos processos em foreground)

Se p = tempo processos foreground

e = tempo de execução background

t = e / (1-p) = período dos background.

Page 24: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Problema da Exclusão Mútua Garantir que apenas um processo

acesse um dado compartilhado por vez: definição de seções críticas

Problemas: deadlock starvation (oposto de fairness)

Page 25: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Resolvendo a exclusão mútua

Busy-waiting• Controle de acesso a região

– variável Lock

Lock = 0 pode entrarlock = 1 bloqueado

loop: test lock bne loop add #1, loop

e se houver Interrupção?

Desabilitar interrupçõesSimplicidadeSimplicidade

Regiões devem ser pequenasRegiões devem ser pequenas

Inviável em multiprocessadoresInviável em multiprocessadores

Page 26: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Núcleo: comprar ou construir Existem núcleos para sistemas

embarcados? Performance Complexidade Corretude

Page 27: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Comunicação

Mailboxes Regiões Críticas Primitivas de comunicação Semáforos

Page 28: Escalonamento de Tempo Real Métodos de escalonamento de processos para sistemas de tempo real

Comentários Multi-tarefa em tempo real pode ser conseguido sem

interrupções (mais fácil de analisar) Um kernel cíclico sem interrupção usa um ou mais ciclos

principais para descrever a ordem de execução de ciclos menores

Arquiteturas foreground/background são as mais usadas Modelo task-control block é usado em kernels e S.O.

comerciais com No. de tarefas dinâmico e indeterminado. Quanto mais flexibilidade no kernel, mais complexo, lento

e difícil de analisar