Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de...
Transcript of Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de...
Programacao Concorrente e ParalelaMemoria Transacional
Noemi Rodriguez
2016
Noemi Rodriguez Programacao Concorrente e Paralela
Motivacao
dificuldades de se trabalhar com memoria compartilhada elocks
deadlocks e serializacao
sincronizacao wait-free: solucoes especıficas para cadaestrutura de dados
listas, filas, tabelas de hash, ...
Noemi Rodriguez Programacao Concorrente e Paralela
Memoria Transacional
uso de construcoes similares as de transacoes de bancos dedados
extensao de Java (descrita por Herlihy&Shavit):
void transfer (account from, int amount) {
atomic {
if (from.balance() >= amount) {
from.withdraw(amount);
this.deposit(amount);
}
}
propriedades ACID
atomicidade, consistencia, isolamento, durabilidade
Noemi Rodriguez Programacao Concorrente e Paralela
Transacao – Conceito
Noemi Rodriguez Programacao Concorrente e Paralela
Implementacao
propostas de implementacao por hardware e software
Noemi Rodriguez Programacao Concorrente e Paralela
Implementacao
um lock “guarda-chuva” pedido em todos os trechos atomicosseria uma implementacao conceitualmente correta?
e como compreensao semantica?
Noemi Rodriguez Programacao Concorrente e Paralela
Implementacao
uso de logging como em BDs
uso de marcacoes e objetos intermediarios
polıticas otimistas e pessimistas
Noemi Rodriguez Programacao Concorrente e Paralela
Objetos Atomicos – Indirecao
descritor de objeto atomico:
Noemi Rodriguez Programacao Concorrente e Paralela
Objetos Atomicos – Indirecao
instrucoes do tipo compareAndSet usadas para substituicaofinal
Noemi Rodriguez Programacao Concorrente e Paralela
Objetos Atomicos – Exemplo
Noemi Rodriguez Programacao Concorrente e Paralela
Memoria transacional – Implementacoes
Haskell
...
C++11
Noemi Rodriguez Programacao Concorrente e Paralela
C++11
especificacao de transacoes (Draft Specification ofTransactional Memory Constructs for C++)
construcoes tem comportamento bem definido apenas paraprogramas sem condicoes de corrida.
novas palavras chave transaction atomic,transaction relaxed e transaction cancel
tambem transaction safe e transaction unsafe
(atributos de funcoes)
Noemi Rodriguez Programacao Concorrente e Paralela
C++11 – atomic transactions
transaction atomic
isolamento rıgido
atomicidade: ou tem efeito por completo ou nao tem efeitoalgum
diversas restricoes sobre codigo protegido
Noemi Rodriguez Programacao Concorrente e Paralela
C++11 – relaxed transactions
transaction relaxed
executa sem observar alteracoes realizadas por outrastransacoes durante sua execucao
podem executar acoes irrevogaveis
Noemi Rodriguez Programacao Concorrente e Paralela
Exemplo em C++11
Noemi Rodriguez Programacao Concorrente e Paralela
Exemplo em C++11
Noemi Rodriguez Programacao Concorrente e Paralela
C++11 – Modelo de Memoria
2 operacoes estao em conflito se uma delas modifica umaposicao de memoria e a outra acessa ou modifica a mesmaposicao
a execucao de um programa contem uma condicao de corridase contem operacoes conflitantes em threads distintos, pelomenos uma das quais nao e uma operacao atomica, enenhuma acontece antes da outra
data-race free
Um programa e dito livre de condicoes de corrida se nenhuma desuas execucoes contem uma condicao de corrida
Noemi Rodriguez Programacao Concorrente e Paralela
Memoria Transacional – condicoes de espera – proposta
retry: aborta transacao e volta a tentar quando algum dosvalores lidos no trecho tiver sido alterado
public void enq (T x) {
atomic {
if (count == items.length)
retry;
items [tail] = x;
if (++tail == items.length)
tail = 0;
++count;
}
}
Noemi Rodriguez Programacao Concorrente e Paralela
Memoria Transacional – Dificuldades (1)
implementacoes por hardware: nao adotadas
implementacoes por software:
custo altoretry: problemas semelhantes aos dos monitores com testesimplıcitos:
quando tentar de novo?
dificuldades com entrada e saıda
Noemi Rodriguez Programacao Concorrente e Paralela
Memoria Transacional – Dificuldades (1)
API e apropriada?
o mundo e transacional...?capacidade de rollback nao necessariamente ligada aconcorrenciaacoes irreversıveis como comunicacao com outra thread ou E/Srollback em caso de falhas: como detectar motivos da falha?
biblioteca .NETBack in January Joe Duffy, Microsoft’s best knownresearcher on parallel and concurrent programming,cited four reasons why he becomes disillusioned withSTM in his Brief Retrospective on TransactionalMemory.(http://www.infoq.com/news/2010/05/STM-Dropped)
Noemi Rodriguez Programacao Concorrente e Paralela
Referencias
M. Herlihy, N. Shavit. The Art of MultiprocessorProgramming. Morgan Kaufmann, 2008.
Maurice Herlihy, Victor Luchango, Mark Moir, and III WilliamN. Scherer. Software transactional memory for dynamic-sizeddata structures. PODC 2003: 92-101, Jul 2003.
Ali-Reza Adl-Tabatabai and others (eds). Draft Specificationof Transactional Language Constructs for C++. 02/2012.
Hans-J. Boehm. Transactional memory should be animplementation technique, not a programming interface. InProceedings of the First USENIX conference on Hot topics inparallelism (HotPar’09). 2009.
A. Skyrme and N. Rodriguez. From locks to transactionalmemory: Lessons learned from porting a real-worldapplication. In the 8th ACM SIGPLAN Workshop onTransactional Computing, 2013.
Noemi Rodriguez Programacao Concorrente e Paralela