31

Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Métodos de Sincronização

Eduardo Ferreira dos Santos

Ciência da Computação

Centro Universitário de Brasília � UniCEUB

Maio, 2017

1 / 31

Page 2: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Sumário

1 Sistemas multiprogramáveis

2 Mecanismos de sincronização

3 Modelos de sistema de tempo real

2 / 31

Page 3: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Sistemas multiprogramáveis

1 Sistemas multiprogramáveis

2 Mecanismos de sincronização

3 Modelos de sistema de tempo real

3 / 31

Page 4: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Sistemas multiprogramáveis

Programação concorrente

Na programação concorrente existe mais de uma tarefa sendoexecutada ao mesmo tempo. Ex.: Fatorial

No caso de múltiplas tarefas é necessário haver comunicação entreelas.

Memória compartilhada As tarefas compartilham área de memória;

Troca de mensagens Sinais trocados entre processos.

4 / 31

Page 5: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Sistemas multiprogramáveis

Exclusão mútua [Tanenbaum and Machado Filho, 1995]

Solução: impedir que mais de um processo acesse o dado ao mesmotempo.Deve ser executada somente quando um dos processos estiveracessando o recurso compartilhado;A parte do código onde o acesso ao recurso é feito é chamada deregião crítica.

Figura 1.1: Região crítica5 / 31

Page 6: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Sistemas multiprogramáveis

Semáforo Arduíno

/∗∗ Example to demonst ra te th r ead d e f i n i t i o n , semaphores , and th r ead s l e e p .∗/

#i n c l u d e <NilRTOS . h>5

// The LED i s a t t a ched to p i n 13 on Ardu ino .c on s t u int8_t LED_PIN = 13 ;

// Dec l a r e a semaphore w i th an i n i t a l c oun t e r v a l u e o f z e r o .10 SEMAPHORE_DECL( sem , 0) ;

//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−/∗∗ Thread 1 , t u rn the LED o f f when s i g n a l l e d by th r ead 2 .∗/

15 // Dec l a r e a s t a c k wi th 128 by t e s beyond con t e x t sw i t c h and i n t e r r u p t needs .NIL_WORKING_AREA(waThread1 , 128) ;

// Dec l a r e the th r ead f u n c t i o n f o r t h r ead 1 .NIL_THREAD(Thread1 , a rg ) {

20 wh i l e (TRUE) {

// Wait f o r s i g n a l from th r ead 2 .ni lSemWait (&sem) ;

25 // Turn LED o f f .d i g i t a lW r i t e (LED_PIN , LOW) ;

}}

6 / 31

Page 7: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Sistemas multiprogramáveis

Semáforo Arduíno II

//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−/∗∗ Thread 2 , t u rn the LED on and s i g n a l t h r ead 1 to tu rn the LED o f f .∗/

5 // Dec l a r e a s t a c k wi th 128 by t e s beyond con t e x t sw i t c h and i n t e r r u p t needs .NIL_WORKING_AREA(waThread2 , 128) ;

// Dec l a r e the th r ead f u n c t i o n f o r t h r ead 2 .NIL_THREAD(Thread2 , a rg ) {

10pinMode (LED_PIN , OUTPUT) ;

wh i l e (TRUE) {// Turn LED on .

15 d i g i t a lW r i t e (LED_PIN , HIGH) ;

// S l e ep f o r 200 m i l l i s e c o n d s .n i l T h d S l e e pM i l l i s e c o n d s (200) ;

20 // S i g n a l t h r ead 1 to tu rn LED o f f .n i l S emS i g n a l (&sem) ;

// S l e ep f o r 200 m i l l i s e c o n d s .n i l T h d S l e e pM i l l i s e c o n d s (200) ;

25 }}

7 / 31

Page 8: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Sistemas multiprogramáveis

Semáforo Arduíno III

//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−/∗∗ Threads s t a t i c t ab l e , one e n t r y pe r t h r ead . A th r ead ' s p r i o r i t y i s∗ dete rm ined by i t s p o s i t i o n i n the t a b l e w i th h i g h e s t p r i o r i t y f i r s t .

5 ∗∗ These t h r e ad s s t a r t w i th a n u l l argument . A th r ead ' s name may a l s o∗ be n u l l to save RAM s i n c e the name i s c u r r e n t l y not used .∗/

NIL_THREADS_TABLE_BEGIN( )10 NIL_THREADS_TABLE_ENTRY( " thread1 " , Thread1 , NULL , waThread1 , s i z e o f ( waThread1 ) )

NIL_THREADS_TABLE_ENTRY( " thread2 " , Thread2 , NULL , waThread2 , s i z e o f ( waThread2 ) )NIL_THREADS_TABLE_END( )//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−v o i d s e tup ( ) {

15 // S t a r t N i l RTOS.n i l S y sB e g i n ( ) ;

}//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−// Loop i s the i d l e t h r ead . The i d l e t h r ead must not i n voke any

20 // k e r n e l p r i m i t i v e ab l e to change i t s s t a t e to not r unnab l e .v o i d l o op ( ) {

// Not used .}

8 / 31

Page 9: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Sistemas multiprogramáveis

Troca de mensagens

Somente entre dois processos;

Os processos precisam ter a execução sincronizada.

Figura 1.2: Troca de mensagens [Chagas, 2016]

9 / 31

Page 10: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Sistemas multiprogramáveis

Observações

Qualquer programa concorrente pode ser implementado com qualqueruma das duas técnicas:

1 Memória compartilhada;2 Troca de mensagens.

No quesito tempo, em geral o mecanismo de memória compartilhada émais e�ciente [FARINES and MELO, 2000];

Programar a sincronização e comunicação das tarefas garante acorretude lógica, mas não garante a corretude temoral;A corretude temporal depende de:

Escalonamento das tarefas;Capacidade do hardware de cumprir os requisitos temporais.

10 / 31

Page 11: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

1 Sistemas multiprogramáveis

2 Mecanismos de sincronização

3 Modelos de sistema de tempo real

11 / 31

Page 12: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Tratadores, sensores e atuadores

Para garantir o atendimento das restrições temporais normalmente énecessário algum tipo de componente especial;

Utilização de tratadores de dispositivos (device drivers);

Sistemas embarcados (Embedded Systems): integração entre aaplicação e os periféricos utilizados;

Tratadores de interrupção: altera o mecanismo de interrupção paragarantir o atendimento das restrições temporais;

Isolar um estímulo externo que vai iniciar uma tarefa: sensores;

Dado um estímulo ou um comando, o atuador executa algum tipo detarefa, principalmente interagindo com o meio. Ex.: Portas ecomportas.

12 / 31

Page 13: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Temporizadores

De�nição: mecanismo de contagem do tempo.

Sistemas de tempo real quase sempre precisam realizar tarefas queenvolvem a leitura do tempo;

Mecanismo implantado no hardware que gera uma interrupção combase no tempo: temporizador de hardware;

Quando o temporizador de hardware gera uma interrupção o STRprecisa atualizar os temporizadores lógicos;

13 / 31

Page 14: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Granularidade

De�nição: intervalo mínimo de tempo medido pelo temporizador. Ex.:A cada 100ms, a cada 1s, etc.

O que acontece com o STR se a granularidade for de 100ms e umatarefa precisa ser executada a cada 1250 ms?

Qualquer temporização realizada pelo STR será sempre umaaproximação que depende da granularidade do sistema;

Quais são os fatores que afetam a contagem de tempo pelotemporizador?

14 / 31

Page 15: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Métricas de desempenho

Como saber se um sistema operacional é mais ou menos apropriadopara aplicações de tempo real?

Tempo de chaveamento entre duas tarefas;Latência até o início do tratador de interrupção;

Tempo para salvar o contexto atual;

Tempo de desvio para o tratador de interrupção.

Tempo de resposta das chamadas de sistema (SYSCALL).

O desempenho de um sistema de tempo real está ligado aoatendimento das restrições temporais e não à velocidade de execução;

Onde inserir o mecanismo de tratamento das restrições de tempo?

Importância do teste de escalonabilidade.

15 / 31

Page 16: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Troca de contexto

Figura 2.1: Troca de contexto [Galvin et al., 2013]16 / 31

Page 17: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Tratamento de interrupções

Figura 2.2: Tratamento de interrupções no kernel [FARINES and MELO, 2000]

17 / 31

Page 18: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Múltiplos tratadores de interrupção

Figura 2.3: Tempo de resposta de um tratador simples[FARINES and MELO, 2000]

18 / 31

Page 19: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Exemplo de uma SYSCALL

Lembre-se: o processador só pode rodar um programa de cada vez!

Figura 2.4: Copiando o conteúdo para um arquivo [Galvin et al., 2013]

19 / 31

Page 20: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Execução da SYSCALL

Figura 2.5: Fluxo de execução da chamada read[Tanenbaum and Machado Filho, 1995] 20 / 31

Page 21: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Execução da SYSCALL (passos)

1 Armazena os bytes;2 Carrega no bu�er;3 Gera o descritor de arquivo (fd);4 Chama a rotina da biblioteca (call);5 Executa a instrução TRAP. Nesse momento a chamada é �promovida�

ao modo kernel;6 Passa a instrução para um endereço especí�co do kernel;7 Ativa o endereço especí�co para a chamada (registradores);8 Rotina de tratamento das chamadas de sistema;9 Retorna para a instrução TRAP. Podem também bloquear o programa

que a chamou;10 Retorna ao programa do usuário;11 Limpa a pilha.

21 / 31

Page 22: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Avaliação de um STR [FARINES and MELO, 2000]

É possível desativar todos aqueles mecanismos que tornam ocomportamento temporal menos previsível, sendo memória virtual oexemplo típico?Os tratadores de dispositivo atendem as requisições conforme asprioridades da aplicação ou simplesmente pela ordem de chegada?A mesma questão pode ser feita com respeito aos módulos do sistemaresponsáveis pela alocação de memória e pelo sistema de arquivos.O kernel do sistema pode ser interrompido a qualquer momento para aexecução de um tratador de interrupção?Uma thread executando código do kernel pode ser preemptada poroutra thread de prioridade mais alta, quando esta outra desejaexecutar código da aplicação?Uma thread executando código do kernel pode ser preemptada poroutra thread de prioridade mais alta, quando esta outra deseja fazeruma chamada de sistema?

22 / 31

Page 23: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Mecanismos de sincronização

Avaliação de um STR (cont.) [FARINES and MELO, 2000]

Qual o tempo necessário para chavear o contexto entre duas threadsda mesma tarefa?

Qual o tempo necessário para chavear o contexto entre duas threadsde tarefas diferentes?

Qual a latência até o início da execução de um tratador deinterrupções?

Qual o tempo de execução de cada chamada de sistema?

Qual o maior intervalo de tempo contínuo no qual as interrupçõespermanecem desabilitadas?

No caso do sistema permitir várias threads executaremsimultaneamente código do kernel, qual o pior caso de bloqueioassociado com as estruturas de dados?

23 / 31

Page 24: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Modelos de sistema de tempo real

1 Sistemas multiprogramáveis

2 Mecanismos de sincronização

3 Modelos de sistema de tempo real

24 / 31

Page 25: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Modelos de sistema de tempo real

Modelo geral

Normalmente os sistemas de tempo real são reativos e baseados naabordagem estímulo-resposta;Processos separados para cada tipo de sensor e atuador.

Figura 3.1: Modelo geral de programação para sistemas de tempo real[Chagas, 2016]

25 / 31

Page 26: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Modelos de sistema de tempo real

Notações [Chagas, 2016]

Desenvolver um projeto é basicamente realizar a transformações entrediferentes notações em diferentes estágios.

Nos níveis mais altos, as transformações não são bem de�nidas.

Informal Linguagem corrente.Estruturada Representação grá�ca, Componentes bem de�nidos,

Interconexões bem de�nidas.Formal Base matemática e Descrições precisas.

26 / 31

Page 27: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Modelos de sistema de tempo real

Principais atividades do projeto

1 Seleção da plataforma (hardware e SO)2 Identi�car os estímulos (sensores) /respostas (atuadores).3 Analisar restrições temporais (timing) para cada estímulo (restrições

de tempo).4 Alocar estímulo e processamento a processos concorrentes.5 Projeto de processos (concorrentes), de acordo com a arquitetura do

sistema.

27 / 31

Page 28: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Modelos de sistema de tempo real

Principais atividades do projeto (cont.)

6 Projetar os algoritmos para fazer o processamento necessário

Figura 3.2: Algoritmo de sensores [Chagas, 2016]

7 Projeto de dados8 Teste de escalabilidade

28 / 31

Page 29: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Modelos de sistema de tempo real

Considerações

Coordenação de processos (semáforos, regiões críticas);Pode ser difícil realizar análises para avaliar se as restrições temporaisserão atendidas;Linguagens OO podem não ser e�cientes para implementar um STR;Os processos podem executar com diferentes velocidades.

Figura 3.3: Exclusão mútua em bu�er circular [Chagas, 2016]29 / 31

Page 30: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Modelos de sistema de tempo real

Chagas, F. (2016).Notas de aula do Prof. Fernando Chagas.

FARINES, J. M. and MELO, R. (2000).Sistemas de Tempo Real, volume 1.IME-USP.

Galvin, P. B., Gagne, G., and Silberschatz, A. (2013).Operating system concepts.John Wiley & Sons, Inc.

Tanenbaum, A. S. and Machado Filho, N. (1995).Sistemas operacionais modernos, volume 3.Prentice-Hall.

30 / 31

Page 31: Métodos de Sincronização...Sistemas multiprogramáveis Semáforo Arduíno / Example to demonstrate thread definition , semaphores , and thread sleep . / #include h

Modelos de sistema de tempo real

OBRIGADO!!!

PERGUNTAS???

31 / 31