Motivação Protocolo Implementação
ESPECIFICAÇÃO, VERIFICAÇÃO EIMPLEMENTAÇÃO DE UM PROTOCOLO DE COMUNICAÇÃO DETERMINÍSTICA
BASEADO EM ETHERNET
Paul Regnier
Mestrado em Mecatrônica Departamento de Ciências da Computação
Instituto de Matemática - UFBA Apoio FAPESB - TIC 2630-2006 Orientador: George Lima (PhD)
Motivação Protocolo Implementação
ROTEIRO
1 MOTIVAÇÃO O problemaEthernet e Tempo Real
2 PROTOCOLO
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
3 IMPLEMENTAÇÃO
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
ROTEIRO
1 MOTIVAÇÃO
O problema
Ethernet e Tempo Real 2 Protocolo
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
3 Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
MODELO
SISTEMA DISTRIBUÍDO
Sistema: Um conjunto de estações compartilhando um mesmo barramento de comunicação (grafo conexo).
Protocolo: mensagens, relógios (e/ou temporizadores) e processamento
Restrições: Não existe memória compartilhada, nem relógio global
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
OBJETIVOS
COMUNICAÇÃO DETERMINÍSTICA
I Atender aosrequisitos temporaisdas aplicações
(Timeliness)
I Garantir aconfiabilidadeda comunicação (tolerância a
falhas).
COMUNICAÇÃO EFICIENTE
I Otimizar e flexibilizar o uso da banda
I Contemplar a diversidade dos dispositivos
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
ROTEIRO
1 MOTIVAÇÃO
O problema
Ethernet e Tempo Real
2 Protocolo
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
3 Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
CSMA/CD
CARRIERSENSEMULTIPLEACCESS WITHCOLLISIONDETECTION
MECANISMOS
Carrier Sense ⇒ Detecção do estado do meio
Jam ⇒ Detecção de colisão
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
CSMA/CD
CARRIERSENSEMULTIPLEACCESS WITHCOLLISIONDETECTION
MECANISMOS
Carrier Sense ⇒ Detecção do estado do meio
Jam ⇒ Detecção de colisão
Estado do meio ∈ {livre, ocupado, jam}
AÇÕES DE UMA ESTAÇÃO EXECUTANDO OCSMA/CD
Se Meio = livre Então transmitir imediatamente
Se Meio = ocupado Então esperar a próxima interrupção de EOF e transmitir imediatamente Se Meio = jam Então entrar em estado de Back-Off
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
ESPERA
⇒ SINCRONIZAÇÃO
⇒ COLISÃO
Espera
Est. C
Est. B
Back−Off
Transmissão
Est. A
Tempo
Colisão !
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
Switched-Ethernet
VANTAGENS
• Canais de comunicação ponto-a-ponto, sem colisão
• Políticas de prioridades nas filas
PROBLEMAS
• Gerenciamento de filas
• Atrasos na switching fabric nem sempre determinísticos
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
Switched-Ethernet
VANTAGENS
• Canais de comunicação ponto-a-ponto, sem colisão
• Políticas de prioridades nas filas
PROBLEMAS
• Gerenciamento de filas
• Atrasos na switching fabric nem sempre determinísticos
Motivação
Protocolo Implementação
O problema Ethernet e Tempo Real
ESGOTAMENTO DA MEMÓRIA TAMPÃO DO SWITCH
perdidas Transmissão Est. C Mensagens Fila cheia recebe Est. B para C Est. A para C de A e B
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ROTEIRO
1 Motivação O problema
Ethernet e Tempo Real
2 PROTOCOLO
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
3 Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM
TDMA
2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1TIMEDIVISIONMULTIPLEACCESS
(TDMA)
• Intervalos periódicos de tempo
alocados a cada estação.
• Problemas: Sincronização dos relógios, desperdício
EXEMPLOS
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM
TDMA
2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1TIMEDIVISIONMULTIPLEACCESS
(TDMA)
• Intervalos periódicos de tempo
alocados a cada estação.
• Problemas: Sincronização dos relógios, desperdício
EXEMPLOS
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM
TDMA
2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1TIMEDIVISIONMULTIPLEACCESS
(TDMA)
• Intervalos periódicos de tempo
alocados a cada estação.
• Problemas: Sincronização dos relógios, desperdício
EXEMPLOS
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM
TDMA
2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1TIMEDIVISIONMULTIPLEACCESS
(TDMA)
• Intervalos periódicos de tempo
alocados a cada estação.
• Problemas: Sincronização dos relógios, desperdício
EXEMPLOS
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM
TDMA
2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1 2 1 Time : Slot Time P1 P2 P3 P4 2 3 4 1TIMEDIVISIONMULTIPLEACCESS
(TDMA)
• Intervalos periódicos de tempo
alocados a cada estação.
• Problemas: Sincronização dos relógios, desperdício
EXEMPLOS
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM MESTRE
/
ESCRAVOM A B D C E F M A B D C E F M A B D C E F MESTRE- ESCRAVO
• O “mestre” atribui os direitos de acesso ao meio
• Problemas: ponto de falhas, sobrecarga
EXEMPLOS
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM MESTRE
/
ESCRAVOM A B D C E F M A B D C E F M A B D C E F MESTRE- ESCRAVO
• O “mestre” atribui os direitos de acesso ao meio
• Problemas: ponto de falhas, sobrecarga
EXEMPLOS
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM MESTRE
/
ESCRAVOM A B D C E F M A B D C E F M A B D C E F MESTRE- ESCRAVO
• O “mestre” atribui os direitos de acesso ao meio
• Problemas: ponto de falhas, sobrecarga
EXEMPLOS
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM DO
BASTÃO
CIRCULANTE
D A E F B (t < THT) C (t = THT) A E F B C D (t < THT) D A E F B C (t = THT) C D A E F B (t < THT) C D A E F B BASTÃO CIRCULANTE
• Bastão (explícito ou não)⇒
direito de acesso ao meio
• Problemas: Sobrecarga, perda do bastão, variabilidade
EXEMPLOS
Profinet, P-Net, RT-Net
(combinação de Bastão Temporal (TTP) e / ou controle
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM DO
BASTÃO
CIRCULANTE
D A E F B (t < THT) C (t = THT) A E F B C D (t < THT) D A E F B C (t = THT) C D A E F B (t < THT) C D A E F B BASTÃO CIRCULANTE
• Bastão (explícito ou não)⇒
direito de acesso ao meio
• Problemas: Sobrecarga, perda do bastão, variabilidade
EXEMPLOS
Profinet, P-Net, RT-Net
(combinação de Bastão Temporal (TTP) e / ou controle
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM DO
BASTÃO
CIRCULANTE
D A E F B (t < THT) C (t = THT) A E F B C D (t < THT) D A E F B C (t = THT) C D A E F B (t < THT) C D A E F B BASTÃO CIRCULANTE
• Bastão (explícito ou não)⇒
direito de acesso ao meio
• Problemas: Sobrecarga, perda do bastão, variabilidade
EXEMPLOS
Profinet, P-Net, RT-Net
(combinação de Bastão Temporal (TTP) e / ou controle
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM DO
BASTÃO
CIRCULANTE
D A E F B (t < THT) C (t = THT) A E F B C D (t < THT) D A E F B C (t = THT) C D A E F B (t < THT) C D A E F B BASTÃO CIRCULANTE
• Bastão (explícito ou não)⇒
direito de acesso ao meio
• Problemas: Sobrecarga, perda do bastão, variabilidade
EXEMPLOS
Profinet, P-Net, RT-Net
(combinação de Bastão Temporal (TTP) e / ou controle
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGEM DO
BASTÃO
CIRCULANTE
D A E F B (t < THT) C (t = THT) A E F B C D (t < THT) D A E F B C (t = THT) C D A E F B (t < THT) C D A E F B BASTÃO CIRCULANTE
• Bastão (explícito ou não)⇒
direito de acesso ao meio
• Problemas: Sobrecarga, perda do bastão, variabilidade
EXEMPLOS
Profinet, P-Net, RT-Net
(combinação de Bastão Temporal (TTP) e / ou controle
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ABORDAGENS NÃO CONTEMPLADAS
1 Commodificaçõesdo Hardware (EtherCAT, PRI, ...)
2 Com garantias temporaisprobabilísticas(suavização do
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DINÂMICAS DE PROCESSAMENTO LENTAS
/
RÁPIDAS2 3 1 : Mensagens críticas : Meio ocupado Tempo : Processamento pelas estações lentas
PROPRIEDADE FUNDAMENTAL
Enquanto as estações lentas processam as mensagens críticas, as estações rápidas utilizam a banda com comunicação não crítica
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ROTEIRO
1 Motivação O problema
Ethernet e Tempo Real
2 PROTOCOLO
Modelos de soluções
DoRiS - A Double Ring Service for RTS
Especificação formal em TLA+ 3 Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DoRiS
- A DOUBLE
RING
SERVICE FOR
RTS
MODELO COMPUTACIONAL
• Cada estação hospeda um servidor DoRiS
• Conjuntos de tarefas e de processos representados por
instâncias únicas
• TaskSet = {T1,T2, . . . ,TnServ} e
ProcSet = {P1,P2, . . . ,PnServ}
• Estações lentas versus rápidas
• Tamanho das mensagens críticas (64B)tamanho
máximo das mensagens não críticas (1500B)
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DoRiS
- ESTRUTURA TEMPORAL
(TDMA)
Voltachips C-Rd M-Rd
ciclo ciclo
chip chip chip
Ciclo de DoRiS (nServ ∗ ∆C)
SE SR WH WS • Tempo dividido em rodadas: M-Rd e C-Rd • Ciclo: alternância de chips (∆C)
• Chip: janela crítica (WH)
e não crítica (WS)
• WH(2∆E): slot
elementar (SE) e de
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
UM
chip DoRiS
(∆
E)
Janela não-críticas Distância Slotde reserva Slotelementar ∆S ∆S m(T1) m(T7) m(P2) m(P5) m(P7)Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DoRiS
- PROPRIEDADE FUNDAMENTAL
MENSAGENS ELEMENTARES
• Obrigatórias: cada servidor enviaumamensagem elementar em cada ciclo
⇒ pulso descentralizado com período ∆C
CONSEQÜÊNCIAS
Periodicidade ⇒DeterminismoeSincronismo
INFORMAÇÕES NAS MENSAGENS ELEMENTARES
• Flexibilidadedo anel crítico: mecanismo de reserva
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DoRiS
- PROPRIEDADE FUNDAMENTAL
MENSAGENS ELEMENTARES
• Obrigatórias: cada servidor enviaumamensagem elementar em cada ciclo
⇒ pulso descentralizado com período ∆C
CONSEQÜÊNCIAS
Periodicidade ⇒DeterminismoeSincronismo
INFORMAÇÕES NAS MENSAGENS ELEMENTARES
• Flexibilidadedo anel crítico: mecanismo de reserva
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DoRiS
- PROPRIEDADE FUNDAMENTAL
MENSAGENS ELEMENTARES
• Obrigatórias: cada servidor enviaumamensagem elementar em cada ciclo
⇒ pulso descentralizado com período ∆C
CONSEQÜÊNCIAS
Periodicidade ⇒DeterminismoeSincronismo
INFORMAÇÕES NAS MENSAGENS ELEMENTARES
• Flexibilidadedo anel crítico: mecanismo de reserva
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DoRiS
- O
MECANISMO DE RESERVA• Mensagens elementares carregam uma lista de reserva
• Cada servidor mantém um vetor de reserva
• Uma tarefa pode reservar todos os slots livres do próximo
ciclo.
• Sempre tem um slot livre no horizonte de uma tarefa
MECANISMO DE TOLERÂNCIA A FALHAS
Uma tarefa só pode enviar mais de uma reserva se ela recebeu as nServ mensagens elementares que precede o seu chip.
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DoRiS
- O
MECANISMO DE RESERVA• Mensagens elementares carregam uma lista de reserva
• Cada servidor mantém um vetor de reserva
• Uma tarefa pode reservar todos os slots livres do próximo
ciclo.
• Sempre tem um slot livre no horizonte de uma tarefa
MECANISMO DE TOLERÂNCIA A FALHAS
Uma tarefa só pode enviar mais de uma reserva se ela recebeu as nServ mensagens elementares que precede o seu chip.
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DoRiS
- GERENCIAMENTO DINÂMICO DO GRUPO DE
PROCESSOS
• Mensagens elementares carregam um bit 0 ou 1
• Cada servidor mantém a lista dos processos
• Na recepção de uma mensagem elementar, cada servidor
atualiza a composição do grupo
MECANISMO DE TOLERÂNCIA A FALHAS
• Em caso de falhas de omissão na recepção de uma mensagem elementar, um servidor perde o direito de enviar mensagens não-críticas
• Depois de uma janela WS vazia, todos os servidores
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
DoRiS
- GERENCIAMENTO DINÂMICO DO GRUPO DE
PROCESSOS
• Mensagens elementares carregam um bit 0 ou 1
• Cada servidor mantém a lista dos processos
• Na recepção de uma mensagem elementar, cada servidor
atualiza a composição do grupo
MECANISMO DE TOLERÂNCIA A FALHAS
• Em caso de falhas de omissão na recepção de uma
mensagem elementar, um servidor perde o direito de enviar mensagens não-críticas
• Depois de uma janela WS vazia, todos os servidores
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ROTEIRO
1 Motivação O problema
Ethernet e Tempo Real
2 PROTOCOLO
Modelos de soluções
DoRiS - A Double Ring Service for RTS
Especificação formal em TLA+
3 Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
LÓGICA
TEMPORAL DE
AÇÕES
-
TLA+
Elementos TLA+LINGUAGEM DE ESPECIFICAÇÃO FORMAL
• Teoria dos conjuntos e lógica temporal
• Propriedades temporais de sistemas concorrentes e
distribuídos
• TLC: verificador automático de modelos
VANTAGENS
• Estrutura modular ⇒ escrita por incrementos sucessivos
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ESPECIFICAÇÃO DE
DoRiS
O tempo: mais uma variável ⇒ Número de estados aumenta
MODELO TEMPORAL
• Representação inteira ⇔ Incrementos discretos
• Temporizadores sem desvios nem atrasos ⇔ relógio global
FÓRMULA PRINCIPAL
Spec =∆ Init ∧2[Next ∨ Tick]vars∧ Liveness • Init é o conjunto dos estados iniciais
• 2[Next ∨ Tick]vars é a relação de sucessão
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ESPECIFICAÇÃO DE
DoRiS
O tempo: mais uma variável ⇒ Número de estados aumenta
MODELO TEMPORAL
• Representação inteira ⇔ Incrementos discretos
• Temporizadores sem desvios nem atrasos ⇔ relógio global
FÓRMULA PRINCIPAL
Spec =∆ Init ∧2[Next ∨ Tick]vars∧ Liveness
• Init é o conjunto dos estados iniciais
• 2[Next ∨ Tick]vars é a relação de sucessão
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ESPECIFICAÇÃO DE
DoRiS
AS AÇÕES PRINCIPAIS
Next =∆ ∨ ∃ t ∈ TaskSet : SendElem(t) ∨ SendRese(t)
∨ ∃ p ∈ ProcSet(Shared .proc) : SendSoft(p) ∨ ∃ msg ∈ Shared .medium : Receive(msg)
Tick =∆ NextTick ∨ NextChip
• SendElem , SendRese e SendSoft : as 3 ações de envio de mensagens (elementar, de reserva e
não-crítica)
• Receive : ação de recepção de um mensagem
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
ESPECIFICAÇÃO DE
DoRiS
AS AÇÕES PRINCIPAIS
Next =∆ ∨ ∃ t ∈ TaskSet : SendElem(t) ∨ SendRese(t)
∨ ∃ p ∈ ProcSet(Shared .proc) : SendSoft(p) ∨ ∃ msg ∈ Shared .medium : Receive(msg)
Tick =∆ NextTick ∨ NextChip
• SendElem , SendRese e SendSoft : as 3 ações
de envio de mensagens (elementar, de reserva e não-crítica)
• Receive : ação de recepção de um mensagem
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
PROPRIEDADES TEMPORAIS
(
INÍCIO)AUSÊNCIA DE COLISÃO
Send (q) =∆
∨ ∧ q ∈ TaskSet
∧ (ENABLEDSendElem(q) ∨ENABLEDSendRese(q))
∨ ∧ q ∈ ProcSet(Shared .proc) ∧ENABLEDSendSoft(q)
CollisionAvoidance =∆
∀ p, q ∈ TaskSet ∪ ProcSet(Proc) :
2(ENABLED(Send (p) ∧ Send (q)) ⇒ (p = q))
NoCollisionAvoidance =∆
∃ p, q ∈ TaskSet ∪ ProcSet(Proc) :
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
PROPRIEDADES TEMPORAIS
(
CONT.)CORREÇÃO DO ANEL CRÍTICO
HardRingCorrectness =∆
∧ ∀ t ∈ TaskSet :
∧2(Len(TaskState[taskId(t)].msg) ≤ 3)
∧23(ENABLEDSendElem(t)) ∧2(ENABLEDNextChip
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
PROPRIEDADES TEMPORAIS
(
CONT.)CORREÇÃO DO MECANISMO DE RESERVA
ReservationSafety =∆
2 ∀ chip, j ∈ Task : ∧ENABLEDSendRese(T [j])
∧ Shared .chipCount = chip ⇒ ∧ TaskState[j].res[chip] = j
∧ ∀ i ∈ Task \ {j} :
Motivação
Protocolo
Implementação
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
PROPRIEDADES TEMPORAIS
(
FIM)JUSTIÇA NO ANEL NÃO-CRÍTICO
SoftRingFairness =∆ ∧ ∀ i ∈ Proc : 2(i ∈ Shared.proc ⇒ (ProcState[i].list 6= hi ⇒ 3(i = ProcState[i].token))) ∧23(∀ i ∈ Proc \ Failed :
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
ROTEIRO
1 Motivação O problema
Ethernet e Tempo Real 2 Protocolo
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
3 IMPLEMENTAÇÃO
Sistema Operacional de Tempo Real
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
MOTIVAÇÃO PARA O USO DE
L
INUX• SO de código livre e aberto com boa aceitação nos
ambientes de pesquisa acadêmica
• Grande variedade de aplicações (multimídia, banco de
dados, sistemas embarcadas...)
LINUX NÃO É DETERMINÍSTICO
Resolução temporal, escalonamento (resolução do tick), interrupção
AVALIAÇÃO DE3PLATAFORMAS
• LINUXStd: Linux - 2.6.23.9
• LINUXPrt: Linux - 2.6.23.9 -PREEMPT-RT (rt12) • LINUXXen: Xenomai- 2.4-rc5 - Linux 2.6.19.7
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
MOTIVAÇÃO PARA O USO DE
L
INUX• SO de código livre e aberto com boa aceitação nos
ambientes de pesquisa acadêmica
• Grande variedade de aplicações (multimídia, banco de
dados, sistemas embarcadas...)
LINUX NÃO É DETERMINÍSTICO
Resolução temporal, escalonamento (resolução do tick), interrupção
AVALIAÇÃO DE3PLATAFORMAS
• LINUXStd: Linux - 2.6.23.9
• LINUXPrt: Linux - 2.6.23.9 -PREEMPT-RT (rt12) • LINUXXen: Xenomai- 2.4-rc5 - Linux 2.6.19.7
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
MOTIVAÇÃO PARA O USO DE
L
INUX• SO de código livre e aberto com boa aceitação nos
ambientes de pesquisa acadêmica
• Grande variedade de aplicações (multimídia, banco de
dados, sistemas embarcadas...)
LINUX NÃO É DETERMINÍSTICO
Resolução temporal, escalonamento (resolução do tick), interrupção
AVALIAÇÃO DE3PLATAFORMAS
• LINUXStd: Linux - 2.6.23.9
• LINUXPrt: Linux - 2.6.23.9 -PREEMPT-RT (rt12)
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIAS DE INTERRUPÇÃO E DE ATIVAÇÃO
Processos placa de rede Eventos IRQs kernel Modo usuário Modo TEth tempo t1 NA ESTAÇÃO DE MEDIÇÃOEM
• t1: chegada de um pacote enviado por ED⇒ TEth
• t2: TEth escreve na Porta Paralela ⇒ TPP • t3: TPP escalona τ ⇒ τ
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIAS DE INTERRUPÇÃO E DE ATIVAÇÃO
Latirq placa de rede Eventos IRQs kernel Modo usuário Modo TEth TPP tempo Processos t1 t2 porta paralela NA ESTAÇÃO DE MEDIÇÃOEM
• t1: chegada de um pacote enviado por ED⇒ TEth
• t2: TEth escreve na Porta Paralela ⇒ TPP
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIAS DE INTERRUPÇÃO E DE ATIVAÇÃO
Latativ placa de rede Eventos IRQs kernel Modo usuário Modo TEth TPP tempo Processos t1 t2 t3 porta paralela τ TPP Latirq NA ESTAÇÃO DE MEDIÇÃOEM
• t1: chegada de um pacote enviado por ED⇒ TEth
• t2: TEth escreve na Porta Paralela ⇒ TPP
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
METODOLOGIA EXPERIMENTAL
0 1 EM ED EC Porta Paralela DISPOSITIVO• Estação demediçãoEM: tarefa de tempo real τ
• Estação dedisparoED: envia pacotes Ethernet com uma
freqüência fixa de 20Hz para a estação EM
• Estação decargaEC: provoca carga de interrupção na
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
ESTRESSES DO
SO
DA ESTAÇÃOE
MCARGA DO PROCESSADOR E DEE/S
while "true"; do
dd if=/dev/hda2 of=/dev/null bs=1M count=1000 find / -name ”*.c” | xargs egrep include tar -cjf /tmp/root.tbz2 /usr/src/linux-xenomai cd /usr/src/linux-preempt; make clean; make done
ESTRESSES DE INTERRUPÇÕES
Fluxo de pacotes de 64 bytes na freqüência de 200kHz entre EM (servidor) e EC (cliente) (100.000 interrupções por
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
ESTRESSES DO
SO
DA ESTAÇÃOE
MCARGA DO PROCESSADOR E DEE/S
while "true"; do
dd if=/dev/hda2 of=/dev/null bs=1M count=1000 find / -name ”*.c” | xargs egrep include tar -cjf /tmp/root.tbz2 /usr/src/linux-xenomai cd /usr/src/linux-preempt; make clean; make done
ESTRESSES DE INTERRUPÇÕES
Fluxo de pacotes de 64 bytes na freqüência de 200kHz entre EM (servidor) e EC (cliente) (100.000 interrupções por
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIA DE INTERRUPÇÃO
(INÍCIO)
0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxStd- Sem carga
VM: 8.9, DP: 0.3, Min: 8.7, Max: 18.4 0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxStd- Com carga
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIA DE INTERRUPÇÃO
(CONT.)
0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxPrt- Sem carga
VM: 21.5, DP: 1.7, Min: 20.3, Max: 45.1 0.0 50.0 100.0 150.0 200.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxPrt- Com carga
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIA DE INTERRUPÇÃO
LINUXPrtOPÇÃO IRQF NODELAY0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxPrt- Sem carga
VM: 8.9, DP: 0.2, Min: 8.8, Max: 16.7 0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxPrt- Com carga
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIA DE INTERRUPÇÃO
(FIM)
0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxXen- Sem carga
VM: 9.0, DP: 0.1, Min: 8.8, Max: 11.1 0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxXen- Com carga
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIA DE ATIVAÇÃO
(INÍCIO)
0.0 5.0 10.0 15.0 20.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxStd- Sem carga
VM: 4.6, DP: 0.4, Min: 4.4, Max: 16.2 0.0 50.0 100.0 150.0 200.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxStd- Com carga
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIA DE ATIVAÇÃO
(CONT.)
0.0 5.0 10.0 15.0 20.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxPrt- Sem carga
VM: 2.1, DP: 0.2, Min: 1.2, Max: 9.4 0.0 5.0 10.0 15.0 20.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxPrt- Com carga
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LATÊNCIA DE ATIVAÇÃO
(FIM)
0.0 5.0 10.0 15.0 20.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxXen- Sem carga
VM: 2.1, DP: 0.5, Min: 1.8, Max: 8.4 0.0 5.0 10.0 15.0 20.0 0 10 20 30 40 50 60 Latência em µ s Tempo de observação em s
LinuxXen- Com carga
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
ROTEIRO
1 Motivação O problema
Ethernet e Tempo Real 2 Protocolo
Modelos de soluções
DoRiS - A Double Ring Service for RTS Especificação formal em TLA+
3 IMPLEMENTAÇÃO
Sistema Operacional de Tempo Real
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
XENOMAI
:
INTERFACERTDM (DE
KISZKA)
Modos usuário e kernel
RTDM
Controladores de dispositivos HAL
Aplicações XENOMAI
• Real Time Driver Model
• Hardware Abstraction Layer
ADEOS
Adaptative Domain Environment for Operating Systems
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
LOCALIZAÇÃO DO
RTNET
Geren. RTDM Controladores de dispositivos Aplicações HAL RTnetREALTIME NET
• Gerenciamento de
memória (rtskb)
• Emissão e recepção de
mensagens por tarefas
• ARP estático,
mecanismos de fragmentação
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
ESTRUTURA EM CAMADA DO
RT
NETVirtual NIC Pilha de rede Linux
CONFIG RTDM Gerenciamento Aplicações de tempo real RTMAC Aplicações de melhor esforço
Disciplinas (TDMA, NoMAC, DoRiS)
NIC & Hardware Núcleo RTnet (stack manager, rtskb), RTcap
Controladores de dispositivos, Loopback, HAL UDP/IP, ICMP, ARP, IP, RTcfg
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
SINCRONIZAÇÃO DO ANEL CRÍTICO
Estrutura temporalPROBLEMA:DETERMINAR O INSTANTE DE INÍCIO DOSchips
• Na emissão: latências de interrupção, rotina de emissão de mensagens e placa de rede
• No meio: latências de transmissão e de propagação
• Na recepção: latências na placa de rede (DMA) e de interrupção
SUPOSIÇÕES
• Diferenças dos tempos de propagação desprezíveis
• Diferenças entre as latências nas estações recebedores
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
MEDIDA DE
∆
E Estrutura temporalmB B C t0 t1 t2 t3 A mA ∆ ∆E ∆E mA SINCRONIZAÇÃO • Propriedades da comunicação um-para-todos • B e C recebem mAno mesmo instante t1 • Na recepção de mB, C deduz ∆E = (t3− t1) − ∆
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
RESULTADOS EXPERIMENTAIS
• 3 computadores (nServ = 3) e ∆C =500µs
• Pentium IV de 2.4 Ghz e 512 MB de memória
• Rede switched-Ethernet 100Mbps (comprimentos ' 5m)
MEDIDAS DE∆E
Média de 25µs com desvios máximos de 3µs (latências de interrupção - ' 10µs e no switch)
TAXAS DE TRANSFERÊNCIA
• 1Mbps para a comunicação crítica (determinística)
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
RESULTADOS EXPERIMENTAIS
• 3 computadores (nServ = 3) e ∆C =500µs
• Pentium IV de 2.4 Ghz e 512 MB de memória
• Rede switched-Ethernet 100Mbps (comprimentos ' 5m)
MEDIDAS DE∆E
Média de 25µs com desvios máximos de 3µs (latências de interrupção - ' 10µs e no switch)
TAXAS DE TRANSFERÊNCIA
• 1Mbps para a comunicação crítica (determinística)
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
RESULTADOS EXPERIMENTAIS
• 3 computadores (nServ = 3) e ∆C =500µs
• Pentium IV de 2.4 Ghz e 512 MB de memória
• Rede switched-Ethernet 100Mbps (comprimentos ' 5m)
MEDIDAS DE∆E
Média de 25µs com desvios máximos de 3µs (latências de interrupção - ' 10µs e no switch)
TAXAS DE TRANSFERÊNCIA
• 1Mbps para a comunicação crítica (determinística)
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
COMPARAÇÃO
NO
MAC
VERSUSDO
RIS
SEM COMUNICAÇÃO NÃO-CRÍTICA
Comunicação crítica de período de 500µs⇒desvios máximos
de 3µs em ambos os caso
COM COMUNICAÇÃO NÃO-CRÍTICA
• NoMAC⇒variabilidade de aproximadamente 160µs
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
COMPARAÇÃO
NO
MAC
VERSUSDO
RIS
SEM COMUNICAÇÃO NÃO-CRÍTICA
Comunicação crítica de período de 500µs⇒desvios máximos
de 3µs em ambos os caso
COM COMUNICAÇÃO NÃO-CRÍTICA
• NoMAC⇒variabilidade de aproximadamente 160µs
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
CONCLUSÃO
UM MESTRADO: 3FACETAS
1 Concepção de um protocolo de comunicação de tempo
real
2 Especificação e verificação formal em TLA+
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
PERSPECTIVAS
1 Acrescentar a implementação de DoRiS com o
mecanismo de reserva
2 Realizar o estudo experimental de DoRiS com cenários de
comunicação de redes industriais (falhas)
3 Gerenciamento dinâmico da composição e reconfiguração
do grupo de servidor
4 DoRiS: distribuído, descentralizado e determinístico,
compartilha um único barramento, tolerante às falhas de
Motivação Protocolo
Implementação
Sistema Operacional de Tempo Real DoRiS na camada RTnet do Xenomai
PUBLICAÇÕES
P. Regnier, G. M. Lima
Deterministic integration of hard and soft real-time communication over shared-Ethernet
Proc. of Workshop of Tempo Real, 2006
P. Regnier, G. M. Lima, L. P. Barreto
Avaliação do determinismo temporal no tratamento de interrupções em plataformas de tempo real Linux
Apêndice Elementos de bibliografia Especificação formal
ROTEIRO
4 APÊNDICE Elementos de bibliografia Especificação formalApêndice Elementos de bibliografia Especificação formal
ELEMENTOS DE BIBLIOGRAFIA
I
L. Lamport
Specifying Systems: The TLA+ language and tools for hardware and software engineers
Addison Wesley, 2002
D. P. Bovet, M. Cesati
Understanding the Linux Kernel
O’Reilly (3rd), 2005
J. Corbet and A. Rubini and G. Kroah-Hartman Linux Device Drivers
Apêndice Elementos de bibliografia Especificação formal
ELEMENTOS DE BIBLIOGRAFIA
II
J.-D. Decotignie
Ethernet-based real-time and industrial communications
Proc. IEEE (Special issue on industrial communication systems), 93(6):1102-1117, 2005
F. B. Carreiro, J. A. Fonseca and P. Pedreiras Virtual Token-Passing Ethernet - VTPE
Proc. FeT2003 5th IFAC Int. Conf. on Fieldbus Systems and their Applications, 2003
F. B. Carreiro, J. A. Fonseca and P. Pedreiras Virtual Token-Passing Ethernet - VTPE
Proc. FeT2003 5th IFAC Int. Conf. on Fieldbus Systems and their Applications, 2003
Apêndice Elementos de bibliografia Especificação formal
ELEMENTOS DE BIBLIOGRAFIA
III
J. Kiszka and B. Wagner and Y. Zhang and J. Broenink RTnet-A Flexible Hard Real-Time Networking Framework
Proc. of the 10th IEEE International Conference on Emerging Technologies and Factory Automation, 2005
I P. Gerum, K. Yaghmour et al.
Xenomai
Apêndice Elementos de bibliografia Especificação formal
ROTEIRO
4 APÊNDICE Elementos de bibliografia Especificação formalApêndice Elementos de bibliografia Especificação formal
LÓGICA
TEMPORAL DE
AÇÕES
VoltaEm TLA+, um sistema é representado por um conjunto de constantes e variáveis
DEFINIÇÕES
Estado =∆ Atribuição de valores as variáveis
Comportamento =∆ Seqüência (infinita) de estados
Predicado =∆ Fórmula que contém variáveis de
um estado só
Passo P : i → f =∆ seqüência de dois estados
conse-cutivos i e f
Transição =∆ Fórmula com valores de variáveis
dos estados i e f
Apêndice Elementos de bibliografia Especificação formal
ELEMENTOS DA LINGUAGEM
TLA+ (INÍCIO)
VoltaDEFINIÇÕES
• O operador0 (linha) define o estado no qual a variável v é considerada
v: valor de v no estadoi v0: valor de v no estadof EXEMPLOS
• Seja P : i → f um passo tal que v = 0 em i e v = 1 em f
• [v0− v ] é uma função de transição que vale 1 em P
⇒ A função de transição [v0 =v + 1] é uma ação verdadeira
Apêndice Elementos de bibliografia Especificação formal
ELEMENTOS DA LINGUAGEM
TLA+ (FIM)
VoltaOPERADOR2
Num comportamento Σ, uma ação A é verdadeira, ou seja,2[A]vars
⇔ ∀P : i → f de Σ que altera
as variáveis vars, A é ver-dadeira em P
RELAÇÃO DE SUCESSÃO
A relação de sucessão associada a um passo P : i → f é o conjunto das ações que são definidas sobre P.
Apêndice Elementos de bibliografia Especificação formal
ENVIO DE MENSAGENS ELEMENTARES
VoltaSendElem(t) ∆ = ∧ Shared.medium= {} ∧ Shared.chipTimer= 0 ∧ let i ∆ = taskId (t) flag ∆
= if ProcState[i ].list6= hi then 1 else 0 in ∧ Shared.chipCount= i
∧ let resSet ∆
= reservation(i ) in ∧ Shared′= [Shared except
!.macTimer= delta,
!.medium= {[id 7→ i,type 7→ “hard”,
res7→ resSet,procFlag7→ flag]}] ∧ TaskState′= [TaskState except
![i ].res= [j ∈ Task 7→ if j ∈ resSet then i else @[j ]], ![i ].cons= 1]
∧ ProcState′= [ProcState except
![i ].token= if flag = 0 then − 1 else @] ∧ History′= [History except !.elem= @ + 1]
Apêndice Elementos de bibliografia Especificação formal
ENVIO DE MENSAGENS DE RESERVA
VoltaSendRese(t) ∆ = ∧ Shared.medium= {} ∧ Shared.chipTimer= delta ∧ let i ∆ = taskId (t)
in ∧ TaskState[i ].res[Shared.chipCount] = i ∧ Shared′= [Shared except
!.macTimer= delta,
!.medium= {[id 7→ i,type7→ “hard”,res7→ { − 1}]}] ∧ TaskState′= [j ∈ Task 7→ [TaskState[j ] except
!.res[Shared.chipCount] = − 1]] ∧ History′= [History except !.rese= @ + 1]
∧ unchanged ProcState
Apêndice Elementos de bibliografia Especificação formal
ENVIO DE MENSAGENS NÃO-
CRÍTICAS VoltaSendSoft(p) ∆
=
∧ 2 ∗ delta ≤ Shared .chipTimer ∧ Shared .chipTimer ≤ deltaChip ∧ Shared .medium = {} ∧ let i ∆ = procId (p, Proc) lenTX ∆ = lenMsg(i ) d ∆
= Shared .chipTimer + lenTX NoMsg ∆
= i ∈ Failed ∨ d > deltaChip in ∧ i = ProcState[i ].token
∧ Shared′= [Shared except
!.macTimer = if NoMsg then Infinity else lenTX ,
!.medium = if NoMsg then @ else {[id 7→ i , type 7→ “soft”]}] ∧ ProcState′= [ProcState except
![i ].token = if NoMsg then @ else next(i , Shared .proc), ![i ].list = if d > deltaChip ∨ @ = hi then @ else Tail (@), ![i ].count = if NoMsg then @ else @ + 1]
∧ unchanged hTaskState, Historyi
Apêndice Elementos de bibliografia Especificação formal
RECEPÇÃO DE MENSAGENS NÃO-CRÍTICAS
VoltaReceive(m) ∆
=
∧ Shared.macTimer= 0
∧ case m.type= “hard” → RecvHard (m) 2 m.type = “soft” → RecvSoft(m) RecvSoft(m) ∆
= ∧ let lastSoft ∆
= ∧ 2 ∗ delta ≤ Shared.chipTimer ∧ Shared.chipTimer≤ deltaChip ∧ ∀ j ∈ Proc : ProcState[j ].token= − 1 in Shared′= [Shared except
!.medium= {},
!.macTimer= if lastSoft then Infinity else @, !.proc= if lastSoft then {} else @]
∧ ProcState′ = [j ∈ (Proc \ Shared.proc) ∪ {m.id} 7→ ProcState[j ]] @@
[j ∈ Shared.proc\ {m.id} 7→ [ProcState[j ] except !.token = next(@,Shared.proc),
!.count= @ + 1]] ∧ unchanged hTaskState,Historyi
Apêndice Elementos de bibliografia Especificação formal
RECEPÇÃO DE MENSAGENS CRÍTICAS
VoltaRecvHard(m) ∆
=
∧ case m.res6= { − 1} ∧ m.procFlag= 1
→ ∧ Shared′= [Shared except !.medium= {},
!.proc= @ ∪ {m.id}] ∧ unchanged ProcState
2 m.res6= { − 1} ∧ m.procFlag= 0
→ ∧ Shared′= [Shared except !.medium= {},
!.proc= @ \ {m.id}] ∧ ProcState′=
[i ∈ (Proc \ Shared.proc) ∪ NoRecvSet(m) 7→ ProcState[i ]] @@ [i ∈ Shared.proc\ NoRecvSet(m) 7→ [ProcState[i ] except
!.token= if m.id= ProcState[i ].token thennext(m.id,Shared.proc) else @]]
2 m.res= { − 1}
→ ∧ Shared′= [Shared except !.medium= {}]
∧ unchanged ProcState
Apêndice Elementos de bibliografia Especificação formal
RECEPÇÃO DE MENSAGENS CRÍTICAS
(FIM)
Volta∧ TaskState′=
[i ∈ NoRecvSet(m) 7→ TaskState[i ]] @@
[i ∈ Task \ NoRecvSet(m) 7→ [TaskState[i ] except !.msg= Append (@,m),
!.execTimer= if Len(TaskState[i ].msg) = 0 then pi else @, !.cons= if m.res6= { − 1} then @ + 1 else @,
!.res= if m.res = { − 1}
then[j ∈ Task 7→ if j = m.id then − 1 else @[j ]] else [j ∈ Task 7→ if j ∈ m.res then m.id else @[j ]]]] ∧ unchanged History
NoRecvSet(m) = if Shared.chipCount∆ ∈ {2,4} then {m.id,3} else {m.id}
Apêndice Elementos de bibliografia Especificação formal
PASSAGEM DO TEMPO
VoltaNextTick ∆
=
letnoRese = ∧ Shared.medium∆ = {} ∧ Shared.chipTimer= delta
∧ ∀ i ∈ Task : TaskState[i ].res[Shared.chipCount] 6= i noSoft ∆
= ∧ 2 ∗ delta ≤ Shared.chipTimer ∧ Shared.chipTimer≤ deltaChip ∧ Shared.medium= {}
∧ ∀ j ∈ Proc : ProcState[j ].token= − 1 tmp ∆
= min({TaskState[i ].execTimer: i ∈ Task } ∪ {deltaChip − Shared.chipTimer}) d = case noRese → min({delta,∆ tmp})
2 noSoft → min({tmp})
2 other → min({Shared.macTimer,tmp})
Apêndice Elementos de bibliografia Especificação formal
PASSAGEM DO TEMPO
(FIM)
Voltain ∧ d > 0
∧ Shared′= [Shared except
!.chipTimer = @ + d ,
!.macTimer = case noRese → @ 2 noSoft → Infinity 2 @ = Infinity → Infinity 2 other → @ − d ] ∧ TaskState′= [i ∈ Task 7→ [TaskState[i ] except
!.msg = if TaskState[i ].execTimer − d = 0 then Tail (@) else @, !.execTimer = if @ − d = 0
then ifLen(TaskState[i ].msg) > 1 thenpi
else Infinity
else if@ = Infinity then @ else @ − d ]] ∧ unchanged hProcState, Historyi
Apêndice Elementos de bibliografia Especificação formal
TEMPO CIRCULAR
VoltaNextChip ∆
=
∧ Shared .medium = {} ∧ Shared .chipTimer = deltaChip ∧ let Overflow ∆
= ∃ j ∈ Shared .proc : Len(ProcState[j ].list) > 14 TimeCircle ∆
= Shared .cycleCount = horiz NextCycle ∆
= Shared .chipCount = nServ in ∧ Shared′= [Shared except !.macTimer = 0,
!.chipCount = (@ % nServ ) + 1,
!.chipTimer = if Overflow then − 1 else 0, !.cycleCount = if TimeCircle then 1
else ifNextCycle then@ + 1 else @] ∧ ProcState′= [j ∈ (Proc \ Shared .proc) 7→ ProcState[j ]] @@
[j ∈ Shared .proc 7→ [ProcState[j ] except !.count = 0, !.token = if ProcState[j ].count = 0 then (@ % nServ ) + 1 else @, !.list = if NextCycle then @ ◦ list(j , Shared .cycleCount) else @]] ∧ if NextCycle then History′= [elem 7→ 0, rese 7→ 0]
else unchangedHistory ∧ unchanged TaskState