modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · classificação de...
TRANSCRIPT
![Page 2: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/2.jpg)
Conteúdo
• Modelos básicos de concorrência – Classificação
– Características
– Comparação
• Modelos híbridos de concorrência – Definição
– Classificação
– Características
– Exemplos
![Page 3: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/3.jpg)
Concorrência e paralelismo
• Concorrência – Propriedade de programas em que mais de uma linha de
execução (ou computação) ocorre simultaneamente • Fazem progresso, mas não necessariamente ao mesmo tempo • Potencialmente interagindo entre si • Competem por recursos
• Paralelismo – Propriedade de sistemas em que pelo menos duas
computações podem ser realizadas ao mesmo tempo
• Problema – Processo vs processador
• Caso típico: Tarefas concorrentes >> processadores
![Page 4: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/4.jpg)
Gerenciamento de tarefas concorrentes
• Gerenciamento de tarefas concorrentes – Preemptivo
• Tarefas concorrentes são executadas de forma intercalada • Tarefas podem ser interrompidas antes do término • Escalonador decide qual o tempo e a ordem de execução de tarefas
– Cooperativo • Tarefas concorrentes passam o fluxo de controle entre si de forma explícita • Tarefas não podem ser interrompidas (atômicas)
• Gerenciamento de contexto de tarefas (ou gerenciamento de pilha) – Automático
• Contexto local de uma tarefa concorrente é mantido durante toda a computação
– Sobrecarga de troca de contexto
– Manual • Contexto local é perdido entre tarefas concorrentes
– Deve ser explicitamente gerenciado pelo programador
![Page 5: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/5.jpg)
Classificação de modelos básicos de concorrência
• Baseados em threads / processos – Natural para o programador
• Fluxos de controle concorrentes
– Gerenciamento de pilha automático • Pilha de procedimentos é guardada e restaurada automaticamente durante a troca de
contexto pelo escalonador
– Gerenciamento de tarefas preemptivo
• Orientados a eventos – Natural para o processador
• Modelo de interrupções de hardware
– Máquinas de estado • Contexto global
– Gerenciamento de tarefas cooperativo – Gerenciamento de pilha manual
• Troca de mensagens assíncronas – Eventos
![Page 6: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/6.jpg)
Classificação de modelos básicos de concorrência
• Caso especial: Multitarefa cooperativa – Também chamados de threads leves
• Threads em nível de usuário, Corotinas, Fibras
– Gerenciamento de pilha automático – Gerenciamento de tarefas cooperativo – Multitarefa cooperativa simétrica
• Provê uma única operação para troca explícita de controle entre tarefas concorrentes (Transfer, SwitchTo)
– Multitarefa cooperativa assimétrica • Operação para passar o controle para uma tarefa (resume) • Operação para retornar o controle para a tarefa que a
chamou (yield)
![Page 7: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/7.jpg)
Classificação de modelos básicos de concorrência
Sta
ck m
an
ag
emen
t
Task management
Preemptive Cooperative
Au
tom
atic
M
anu
al
Event-driven
Cooperative
multithreading Multithreaded
* A. Adya, J. Howell, M. Theimer, W. J. Bolosky and J. R. Douceur. Cooperative Task Management Without Manual Stack Management. (2002)
![Page 8: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/8.jpg)
Multitarefa Preemptiva
CPU1
CPU2
Thread1
Thread2
Thread3
Troca de contexto
SO ou VM
Quantum
Operação bloqueante
![Page 9: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/9.jpg)
Eventos
Tarefa 1
Tarefa 2
Tarefa 3
CPU
Evento
![Page 10: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/10.jpg)
Multitarefa cooperativa
Corotina1
Corotina2
Corotina3
CPU
Resume / Transfer Yield / Transfer
![Page 11: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/11.jpg)
Estudo de caso: Servidores web – Thread única
– Múltiplas threads
– Orientado a eventos
* Pai, V. et al.: Flash: An efficient and portable web server. (1999)
Aceita conexão
Ler requisição
Abrir arquivo
Enviar cabeçalho
Ler/enviar arquivo
Aceita conexão
Ler requisição
Abrir arquivo
Enviar cabeçalho
Ler/enviar arquivo
Aceita conexão
Ler requisição
Abrir arquivo
Enviar cabeçalho
Ler/enviar arquivo
Escalonador (nível do usuário)
![Page 12: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/12.jpg)
Dualidade thread-evento Orientados Procedimento (threads)
Orientados a mensagens (eventos)
Chamada de procedimento ↔ Mandar mensagem e aguardar resposta
Escalonador ↔ Loop de mensagens
Retorno de procedimento ↔ Mandar resposta
Continuação de procedimento ↔ Tratador de mensagens
Variáveis de condição e travas ↔ Aguardando mensagens
* Lauer, H.C., Needham, R.M.: On the duality of operating system structures. (1979)
![Page 13: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/13.jpg)
Críticas sobre threads • Escalonador escondido
– Política fixa e geral • Prioridades
– Deadlocks, livelocks e starvation
– Condições de corrida
• Sobrecarga de concorrência – Criação – Troca de contexto – Sincronização
• Esgotamento de Vazão – Degradação grosseira
* Ousterhout, J.: Why threads are a bad idea (for most purposes). (1996)
![Page 14: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/14.jpg)
Críticas sobre eventos
• Paralelismo real • Operações não-bloqueantes
– Tratadores de eventos devem ser atômicos e não podem bloquear
• Inversão de controle – Fluxo de controle é definido pela
ordem se execução dos eventos e não pelo escalonador do sistema
– Complexidade de manutenção e depuração
• Fluxo de controle é expresso de forma mais natural com threads – Chamada e retorno de
procedimentos
* Behren, R., Condit, J., and Brewer, E.: . Why events are a bad idea (for high-concurrency servers). (2003)
![Page 15: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/15.jpg)
Modelos básicos de concorrência (resumo)
Baseados em threads
• Preempção
• Sincronização
• Operações bloqueantes
• Natural para o programador – Porém introduz problemas de
sincronização
• Prioriza latência
Orientados a eventos
• Cooperação
• Inversão de controle – Perda da pilha local
• Natural para o computador – Modelo de interrupções
• Prioriza vazão
![Page 16: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/16.jpg)
Concorrência Híbrida • Modelos de concorrência
que combinam thread e eventos – Paralelismo real
• Ambiente de programação: – Orientado a eventos
• Há inversão de controle • Permitem múltiplos loops
concorrentes
– Baseado em threads • Threads no nível de usuário • Compartilham
cooperativamente um pool de threads
– Baseado em estágios • Mescla entre os dois modelos • Pipelines
Threads
Representação
intermediária
Chamadas
de sistema
Abstração de thread
Loop de eventos
Tratadores
de eventos
Abstração de eventos
* Li, P., Zdancewic, S.: Combining events and threads for scalable network services implementation and evaluation of monadic, application-level concurrency primitives. (2007)
![Page 17: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/17.jpg)
Modelos híbridos de concorrência
![Page 18: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/18.jpg)
Concorrência híbrida orientada a eventos
• Ambiente orientado a eventos com múltiplos loops concorrentes – Sem operações
bloqueantes
• Fila de eventos compartilhada
• Escalonador – Sincronização de eventos – Controla o consumo de
eventos
• Simétricos ou assimétricos
Programmer
Runtime
Event
handler...
Event
handler
Event
handler
Scheduler
Event loop
Event loop ...
Event queue
![Page 19: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/19.jpg)
Eventos híbridos: Algumas abordagens
• Libasync-smp – Sincronização por cores de eventos
• Eventos de mesma cor não podem executar concorrentemente
• Cores são atribuídas manualmente pelo programador
– Pool de thread estático (tipicamente uma por CPU)
• InContext – Sincronização por níveis de permissão (ou contextos)
• Contexto local, somente leitura e escrita
– Controle dos níveis é feito através de travas
![Page 20: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/20.jpg)
Concorrência híbrida baseada em threads
• Ambiente de programação baseado em threads – Em nível de usuário
• Trechos entre chamadas de sistema são convertidas em eventos atômicos – Compartilham um pool de thread
de kernel cooperativamente
• Suporte a operações bloqueantes através de wrappers – Inversão de controle é escondida
• Escalonador executa no nível do usuário
Programmer
Runtime
User
thread
User
thread
User
thread...
Event queue
Scheduler
Event loop
Event loop ...
Blocking call
Thread abstraction
Blocking call
![Page 21: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/21.jpg)
Threads híbridas: Algumas abordagens • Capriccio
– User threads em C (API Posix threads) – Corotinas para empacotar chamadas bloqueantes – Sincronização por bloqueio – Pool de threads de kernel pré-alocado e estático
• Scala Actors – Usa o modelo de atores para oferecer threads e eventos no mesmo ambiente – Atores compartilham um pool de threads dinâmico – Atores podem efetuar chamadas bloqueantes – Isolamento de memória – São especificados como threads
• Conversão para o modelo de eventos via continuações
• Concorrência híbrida monádica – Abordagem funcional similar ao Capriccio – Usa o conceito de monads de continuação de Haskell para esconder a inversão
de controle (continuações) – Sincronização por bloqueio
![Page 22: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/22.jpg)
Concorrência em estágios
• Arquitetura para concorrência massiva
• Aplicação é dividida em estágios – Pipeline
– Comunicam-se via fila de eventos
– Cada estágio é auto-contido
– Implementados com abstrações de threads
• Sincronização – Intra-estágio e inter-estágios
Programmer
Runtime
Stage ...
Scheduler
Event loop
Event loop ...
Scheduler
Event queue
Event loop
Event loop ...
Stage
Blocking calls
Thread abstraction
![Page 23: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/23.jpg)
SEDA: Staged Event-Driven Architecture
• Tratador de eventos – Implementa a lógica do
estágio
• Escalonador ciente de recursos – Controladores continuamente
monitoram o estágio e ajustam parâmetros do escalonador • Tamanho do pool
– Política por estágio
• Estágios podem bloquear – Usam múltiplas threads
• Sincronização dentro do estágio ainda é necessária
StageEvent
Handler
Thread Pool
...Event Queue
Dispatch
Events
Controllers
SchedulerMonitor state
Adjust
parameters
![Page 24: Modelos de concorrêncianoemi/pc-12/aula4/aula4-modelosdeconcorrenci… · Classificação de modelos básicos de concorrência •Caso especial: Multitarefa cooperativa –Também](https://reader034.vdocuments.com.br/reader034/viewer/2022051908/5ffbc7869a08ec4393157a81/html5/thumbnails/24.jpg)
Referências
• Welsh, M., Culler, D., Brewer, E.: Seda: an architecture for well-conditioned, scalable internet services. (2001)
• Dabek, F., Zeldovich, N., Kaashoek, F., Mazieres, D., Morris, R.: Event-driven programming for robust software. (2002)
• Ururahy C., Rodriguez N., I.R.: Alua: flexibility for parallel programming. (2002) • Behren, R.V., Condit, J., Zhou, F., Necula, G.C., Brewer, E.: Capriccio: Scalable
threads for internet services. (2003) • Haller, P., Odersky, M.: Actors that unify threads and events. (2007) • Li, P., Zdancewic, S.: Combining events and threads for scalable network services
implementation and evaluation of monadic, application-level concurrency primitives. (2007)
• Upadhyaya, G., Pai, V.S., Midkiff, S.P.: Expressing and exploiting concurrency in networked applications with aspen (2007)
• Han, B., Luan, Z., Zhu, D., Ren, Y., Chen, T., Wang, Y., Wu, Z.: An improved staged event driven architecture for Master-Worker network computing. (2009)
• Yoo, S., Lee, H., Killian, C., Kulkarni, M.: Incontext: simple parallelism for distributed applications. (2011)