Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de...

21
Programa¸c˜ ao Concorrente e Paralela Mem´ oria Transacional Noemi Rodriguez 2016 Noemi Rodriguez Programa¸c˜ ao Concorrente e Paralela

Transcript of Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de...

Page 1: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Programacao Concorrente e ParalelaMemoria Transacional

Noemi Rodriguez

2016

Noemi Rodriguez Programacao Concorrente e Paralela

Page 2: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 3: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 4: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Transacao – Conceito

Noemi Rodriguez Programacao Concorrente e Paralela

Page 5: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Implementacao

propostas de implementacao por hardware e software

Noemi Rodriguez Programacao Concorrente e Paralela

Page 6: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 7: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Implementacao

uso de logging como em BDs

uso de marcacoes e objetos intermediarios

polıticas otimistas e pessimistas

Noemi Rodriguez Programacao Concorrente e Paralela

Page 8: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Objetos Atomicos – Indirecao

descritor de objeto atomico:

Noemi Rodriguez Programacao Concorrente e Paralela

Page 9: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Objetos Atomicos – Indirecao

instrucoes do tipo compareAndSet usadas para substituicaofinal

Noemi Rodriguez Programacao Concorrente e Paralela

Page 10: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Objetos Atomicos – Exemplo

Noemi Rodriguez Programacao Concorrente e Paralela

Page 11: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Memoria transacional – Implementacoes

Haskell

...

C++11

Noemi Rodriguez Programacao Concorrente e Paralela

Page 12: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 13: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 14: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 15: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Exemplo em C++11

Noemi Rodriguez Programacao Concorrente e Paralela

Page 16: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

Exemplo em C++11

Noemi Rodriguez Programacao Concorrente e Paralela

Page 17: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 18: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 19: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 20: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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

Page 21: Programa˘c~ao Concorrente e Paralelanoemi/pcp-16/aula11/trans.pdf · Mem oria Transacional uso de constru˘c~oes similares as de transa˘coes de bancos de dados extens~ao de Java

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