Escolar Documentos
Profissional Documentos
Cultura Documentos
Tempo de resposta
Existem
Tamanho e Complexidade
Confiabilidade e Segurana
Facilidades de Tempo-Real
Tempo de resposta essencial em uma aplicao de temporeal. Para isso, o hardware utilizado deve apresentar bom
desempenho, alm da linguagem e do suporte de run-time
apresentar facilidades como:
- Especificar tempos nos quais as aes so executadas;
- Especificar tempos nos quais as aes devem ser finalizadas;
- Responder a situaes em que todos os requisitos de tempo
no podem ser atendidos;
- Responder a situaes em que os requisitos de tempo so
mudados dinamicamente.
Implementao Eficiente
Arquitetura e Programao
Concorrente
A Noo de Processo
Um
Arquitetura e Programao
Concorrente
Processo
Arquitetura e Programao
Concorrente
Processos
e Modelos de Sistemas
Baseados em Estados
Arquitetura e Programao
Concorrente
Arquitetura e Programao
Concorrente
Processos
Peridicos e Espordicos
Sistemas de tempo-real geralmente contm
dois tipos de processos: peridicos e
espordicos. Processos peridicos so
ativados de forma regular entre intervalos
fixos de tempo.
Arquitetura e Programao
Concorrente
Em
Arquitetura e Programao
Concorrente
Arquitetura e Programao
Concorrente
Arquitetura e Programao
Concorrente
Execuo Concorrente
Arquitetura e Programao
Concorrente
Representaco de Processos
Fork e Join:
Arquitetura e Programao
Concorrente
- Cobegin:
O cobegin (ou parbegin ou par) um caminho estruturado de
denotao de execuo concorrente de uma coleo de
estruturas:
Cobegin
S1;
S2;
S3;
Sn;
Coend
A estrutura cobegin pode ser encontrada em OCCAM2.
Arquitetura e Programao
Concorrente
Fontes de faltas:
Tipos de faltas:
Faltas transientes: uma falta transiente inicia em
um tempo particular, permanece no sistema por
algum tempo e ento desaparece. Exemplos de tais
faltas esto em componentes de hardware os quais
tem uma reao adversa a alguma interferncia
externa, tais como campos eltricos ou
eletromagnticos. Muitas faltas em sistemas de
comunicao so transientes.
de Faltas:
de Remoo de Faltas:
Mesmo com o uso de tcnicas para se evitar
faltas, faltas iro inevitavelmente estar
presentes no sistema depois de sua
construo. Em particular, devido a erros de
projetos em componentes de hardware e
software. Assim, um segundo estgio de
preveno de faltas empregado. a
tcnica de remoo de faltas.
Tolerncia a faltas:
Redundncia:
Todas as tcnicas para se conseguir tolerncia a
faltas dependem de elementos extras que so
introduzidos no sistema para detectar e se recuperar
de faltas. Esses componentes so redundantes,
mas no so requeridos no sistema para que este
tenha modo de operao normal.
Dinmica:
N-Verso:
N-Verso:
Para a produo de verses diferentes, as N
verses podem ser desenvolvidas em
linguagens diferentes, ou com mesma
linguagem, mas com compiladores
diferentes, ou at com mesma linguagem e
compilador, mas com escopos diferentes.
verses:
- Vetores de comparao;
- Indicadores de status de comparao;
- Pontos de comparao.
Confiabilidade e Tolerncia a
Faltas
Programa
N-verso:
Deteco de aplicao:
Muitos testes podem ser realizados na aplicao
para deteco de erros:
Teste de replicao;
Teste de temporizao (tempo);
Teste reverso;
Teste de codificao;
Teste de razoabilidade;
Teste estrutural;
e Confinamento de Dano:
Como pode existir algum atraso entre a
ocorrncia de uma falta e o aparecimento do
erro, necessrio avaliar qualquer dano que
tenha ocorrido. Uma informao errnea
poderia se espalhar atravs do sistema e
dentro do seu ambiente. Ento, avaliao de
dano est fortemente relacionada a
precaues de confinamento de dano.
de Erro
a fase que deve converter um estado
errneo do sistema em um estado de
operao normal, embora haja uma
degradao do servio. Duas abordagens
para recuperao de erro so utilizadas:
recuperao para frente e recuperao para
trs.
de IPC:
de Recuperao:
de recuperao so blocos no
sentido de uma linguagem de programao
normal, exceto que a entrada de um bloco
um ponto de recuperao automtico e a
sada um teste de aceitao. Teste de
aceitao usado para testar se o sistema
est em um estado aceitvel depois da
execuo do bloco, ou mdulo primrio,
como geralmente chamado.
Exceo:
Vimos anteriormente que um erro uma
manifestao de uma falta, e que uma falta um
desvio de especificao de um componente. Os
erros podem ser antecipados ou no antecipados.
Uma exceo pode ser definida como a ocorrncia
de um erro. A apresentao de uma condio de
exceo para o invocador da operao chamada
de raising the exception (aumentar a exceo) e a
resposta do invocador chamada de handling the
exception (manipulao de exceo).
Excluso Mtua
Condio de Sincronizao
Busy Waiting
Semforo
Semforo
Semforo
(* condio de sincronizao*)
var consyn: semforo; (*inicializado com 0*)
process P1; (*processo esperando*)
wait (consyn);
end P1;
process P2; (*processo sinalizando*)
signal (consyn);
end P2;
Semforo
(* excluso mtua*)
var mutex: semforo; (*inicializado com 1*)
process P1;
loop
wait (mutex);
<seo crtica>
signal (mutex);
<seo no crtica>
end
end P1;
process P2;
loop
wait (mutex);
<seo crtica>
signal (mutex);
<seo no crtica>
end
end P2;
Semforo:
Semforo:
WAIT (S) :
if S > 0 then
S:= S - 1
else
nmero suspenso:= nmero suspenso +1
suspende processo chamador
SIGNAL(S) :
if nmero suspenso > 0 then
nmero suspenso:= nmero suspenso -1
coloca o processo suspenso como executvel novamente
else
S:= S + 1
Deadlock:
Semforos Binrios:
if S >= i then
S:= S i
else
delay
S:= S i
SIGNAL (S,i) :
S:= S + i
Semforo de Quantidade:
Monitores:
monitor buffer;
export append, take;
const size = 32;
var BUF : array[0size-1] of integer;
top, base : 0size-1;
spaceavailable, itemavailable : condition;
NumberInBuffer : integer;
procedure append (I : integer);
begin
if NumberInBuffer = size then
wait(spaceavailable);
BUF[top] := I;
NumberInBuffer := NumberInBuffer + 1;
top := (top+1) mod size;
signal(itemavailable);
end append;
procedure take (I : integer);
begin
if NumberInBuffer = 0 then
wait(itemavailable);
I:= BUF[base];
base := (base+1) mod size;
NumberInBuffer := NumberInBuffer - 1;
signal(spaceavailable);
end take;
begin (*inicializao*)
NumberInBuffer := 0;
top := 0;
base := 0;
end;
Monitores:
Sincronizao de Processos
Variaes no modelo de sincronizao de processos so baseadas
na semntica do processo (sender) origem ou remetente, que podem
ser classificadas da seguinte maneira:
Assncrono: o processo origem ou remetente prossegue
imediatamente, desconsiderando se a mensagem foi recebida ou
no;
Sncrono: o processo origem ou remetente somente prossegue
quando a mensagem for recebida;
Invocao remota: o processo origem ou remetente somente
prossegue quando um retorno (replay) for enviado pelo processo
receptor ou destinatrio. O paradigma requisio de resposta de
comunicao modelado pelo envio de invocao remota e
encontrada em ADA e em vrios sistemas operacionais.
P1
asyn_send(message)
wait(acknowledgement)
P2
wait (message)
asyn_send(acknowledgement)
P1
syn_send(message)
wait(replay)
P2
wait (message)
constri replay
syn_send(replay)
Estrutura de Mensagem
Ao Atmica
Ao Atmica
Outro conceito tambm pode ser apresentado para ao
atmica. Uma ao atmica se o processo desempenhando
a ao no troca informaes com outros processos enquanto
a ao est sendo desempenhada. Ou, uma ao atmica se
o processo desempenhando a ao no detecta nenhuma
alterao de estado, exceto aquele desempenhado pela
prpria ao, e se no revela sua alterao de estado at o
trmino da ao.
Um conceito simplificado para ao atmica pode ser
apresentado como segue: uma ao dita atmica se ela
vista pelo sistema como instantnea e indivisvel.
Transaes Atmicas
- Uso
Controle de recursos
- A coordenao entre processos deve ser requerida se eles
compartilham acesso a recursos escassos tais como dispositivos
externos, arquivos, campos de dados compartilhados, buffers e
algoritmos codificados. Esses processos so conhecidos como
processos competidores.
Gerncia de recursos
- Uma das maneiras para se ter um controle de acesso ao recurso
empacotar ou encapsular o recurso. Com isso, consegue-se
sincronizar o acesso dos processos ao recurso. O exemplo abaixo
utilizado pela linguagem ADA:
Package RESOURCE_MANAGER is
type RESOURCE is private;
function ALLOCATE return RESOURCE;
function FREE (THIS_RESOURCE:RESOURCE)
Private
type RESOURCE is ...
End RESOURCE_MANAGER;
Recursos de Tempo-Real
Abaixo, seguem alguns recursos importantes de tempo-real:
- Acesso ao clock;
- Retardo de processos;
- Implementao de Timeout;
- Especificao de prazo de encerramento (deadline) e
escalonamento.
Acesso ao Clock
- Para aplicaes de tempo-real importante que a linguagem
a ser utilizada interaja de alguma maneira com o tempo. Ou
seja, tendo acesso de alguma maneira a informao do tempo
ou, pelo menos, a medida do tempo que j passou.
Isso pode ser feito de duas maneiras:
- Implementando funes de acesso ao clock na linguagem;
- Implementando um driver de dispositivo de clock associado
aos processadores ou microcontroladores.
Atrasando um Processo
- Alm do acesso ao clock do sistema, processos em aplicaes de
tempo-real devem tambm ser capazes de se atrasarem por um
perodo de tempo. Esse procedimento pode ser realizado atravs do
seguinte exemplo:
NOW:= CLOCK;
Loop
exit when (clock-NOW) > 10.0;
End Loop;
Escalonamentos de tempo-real