• Nenhum resultado encontrado

Mem´oria Transacional

N/A
N/A
Protected

Academic year: 2022

Share "Mem´oria Transacional"

Copied!
20
0
0

Texto

(1)

Mem´ oria Transacional

Programa¸c˜ao Concorrente – 2012

(2)

Motiva¸c˜ ao

dificuldades de se trabalhar com mem´oria compartilhada e locks

deadlocks e serializa¸c˜ao sincroniza¸c˜aowait-free

requer hardware espec´ıfico

compareAndSetemultiCompareAndSet

usado para opera¸c˜oestotais(sem espera por condi¸oes) solu¸c˜oes espec´ıficas para cada estrutura de dados

listas, filas, tabelas de hash, ...

(3)

Locks – dificuldades

programador pode facilmente se perder com:

locks de menos locks demais locks erradas

locks pedidas na ordem errada tratamento de erros

sinaliza¸c˜oes perdidas e erros emretries

(4)

Composicionalidade

dificuldade de composi¸c˜ao

exemplo cl´assico: transferˆencia banc´aria

from.lock(); to.lock();

from.withdraw( amount ); to.deposit( amount );

from.unlock(); to.unlock()

(5)

Mem´ oria Transacional

uso de constru¸c˜oes similares `as de transa¸c˜oes de bancos de dados

transa¸c˜oes lineariz´aveis

extens˜ao 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, consistˆencia, isolamento, durabilidade

(6)

Implementa¸c˜ ao

um lock “guarda-chuva” pedido em todos os trechos atˆomicos seria uma implementa¸c˜ao conceitualmente correta?

propostas de implementa¸c˜ao por hardware uso de logging como em BDs

uso de marca¸c˜oes e objetos intermedi´arios pol´ıticas otimistas

(7)

Objetos Atˆ omicos – Indire¸c˜ ao

descritor de objeto atˆomico:

(8)

Objetos Atˆ omicos – Indire¸c˜ ao

instru¸c˜oes do tipo compareAndSetusadas para substitui¸c˜ao final

(9)

Objetos Atˆ omicos – Exemplo

(10)

Objetos Atˆ omicos – transa¸c˜ ao ativa

o que acontece se uma transa¸c˜ao encontra um objeto com transa¸c˜ao ativa?

H&S prop˜oem o uso de um gerente de transa¸c˜oes com chamadashouldAbort

encapsula¸ao de pol´ıticas comobackoff, idade de transa¸oes, etc

(11)

Mem´ oria Transacional – condi¸c˜ oes de espera

retry: aborta transa¸c˜ao e volta a tentar quandoalgum dos valores 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;

} }

(12)

Mem´ oria Transacional – escolha

constru¸c˜aoorelse: espera por alguma condi¸c˜ao atomic {

x = q0.deq(); /* se chamar retry tenta o outro */

} orElse { x = q1.deq();

}

(13)

Mem´ oria transacional – Implementa¸c˜ oes

linguagem Fortress proposta pela Sun biblioteca .Net

Back in January Joe Duffy, Microsoft’s best known researcher on parallel and concurrent programming, cited four reasons why he becomes disillusioned with STM in his Brief Retrospective on Transactional Memory.

(http://www.infoq.com/news/2010/05/STM- Dropped)

C++11

(14)

Mem´ oria Transacional – Dificuldades

implementa¸c˜oes por hardware: n˜ao adotadas implementa¸c˜oes por software:

custo alto

retry: problemas semelhantes aos dos monitores com testes impl´ıcitos:

quando tentar de novo?

dificuldades com entrada e sa´ıda API ´e apropriada?

o mundo ´e transacional...?

capacidade de rollback n˜ao necessariamente ligada a concorrˆencia

oes irrevers´ıveis como comunica¸ao com outra thread ou E/S rollback em caso de falhas: como detectar motivos da falha?

(15)

C++11

especifica¸c˜ao de transa¸c˜oes (Draft Specification of Transactional Memory Constructs for C++)

constru¸c˜oes tˆem comportamento bem definidoapenas para programas sem condi¸c˜oes de corrida.

novas palavras chave transaction atomic, transaction relaxede transaction cancel

tamb´em transaction safee transaction unsafe (atributos de fun¸oes)

(16)

C++11 – atomic transactions

transaction atomic isolamento r´ıgido

atomicidade: ou tem efeito por completo ou n˜ao tem efeito algum

diversas restri¸c˜oes sobre c´odigo protegido

__transaction_atomic { stmt1

__transaction_cancel;

} stmt2

(17)

C++11 – relaxed transactions

transaction relaxed

executa sem observar altera¸c˜oes realizadas por outras transa¸c˜oes durante sua execu¸c˜ao

podem executar a¸c˜oesirrevog´aveis void sched_wait (void) {

int no_active_lp = FALSE;

while (no active lp == FALSE) {

__transaction_relaxed {if (lpcount == 0) { no_active_lp = TRUE;

} } }

(18)

C++11 – Modelo de Mem´ oria

2 opera¸c˜oes est˜ao em conflito se uma delas modifica uma posi¸c˜ao de mem´oria e a outra acessa ou modifica a mesma posi¸c˜ao

a execu¸c˜ao de um programa cont´em umacondi¸c˜ao de corrida se cont´em opera¸c˜oes conflitantes em threads distintos, pelo menos uma das quais n˜ao ´e uma opera¸c˜ao atˆomica, e nenhuma acontece antes da outra

data-race free

Um programa ´e dito livre de condi¸c˜oes de corridase nenhuma de suas execu¸c˜oes cont´em uma condi¸c˜ao de corrida

(19)

C++11 – Modelo de mem´ oria

As opera¸c˜oes de um thread s˜ao ordenadas por uma rela¸c˜ao

“sequenced before” consistente com a semˆantica single-threaded.

A biblioteca de C++11 define algumas opera¸c˜oes como opera¸c˜oes de sincroniza¸c˜ao(opera¸c˜oes sobre locks e sobre vari´aveisatˆomicas).

Algumas opera¸c˜oes de sincroniza¸c˜ao fazem com que um thread se sincronize com outro (por exemplo, libera¸c˜ao e aquisi¸c˜ao de locks)

happens before

Se A ´e sequenced before B, ent˜ao A acontece antes de B Se A sincroniza com uma opera¸c˜ao B, ent˜ao A acontece antes de B

Se existe uma opera¸c˜ao B tal que A acontece antes de B e B

(20)

Referˆ encias

M. Herlihy, N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008.

Maurice Herlihy, Victor Luchango, Mark Moir, and III William N. Scherer. Software transactional memory for dynamic-sized data structures. PODC 2003: 92-101, Jul 2003.

Ali-Reza Adl-Tabatabai and others (eds). Draft Specification of Transactional Language Constructs for C++. 02/2012.

Hans-J. Boehm and Sarita V. Adve. 2012. You don’t know jack about shared variables or memory models. Commun.

ACM 55, 2 (February 2012), 48-54.

http://doi.acm.org/10.1145/2076450.2076465.

Referências

Documentos relacionados

Se está atualmente a tomar uma dose baixa de ácido acetilsalicílico para prevenir ataques cardíacos ou acidente vascular cerebral, não deve parar de tomar ácido acetilsalicílico

Com isso, alguns objetivo foram tra¸ cados tais como: o estudo te´ orico e a implementa¸ c˜ ao num´ erica de m´ etodos aplicados ` a resolu¸ c˜ ao de Sistemas de Equa¸ c˜ oes n˜

pppp ppp pppp ppp pppp ppp ppppp pppppppp pppp ppppp ppppp pppppppppp ppppp ppppppppppppp ppppppp ppppppppppppppp pppppppp ppppppppppppppppp pppppppp pppppppppppppppppppp

1 o /03/11 Raz˜ ao de ser da disciplina; objetivos e metodologia; apresenta¸c˜ao breve dos conte´ udos de cada unidade do curso; os crit´erios de avalia¸c˜ao.. Os n´ umeros

Demonstra¸c˜ao. Designamos esse tipo de ponto fixo de n´o repulsivo. Analogamente, se a derivada da fun¸c˜ao F tiver o valor entre 0 e 1, as sequˆencias que come¸carem

Tendo em mente o problema de se obter um integral que satisfizesse um Teorema da Divergˆ encia bem geral, e que adicionalmente dispusesse de uma f´ ormula de mudan¸ca de vari´ aveis

u t Note que o resultado acima, assim como sua demonstra¸c˜ ao, se generaliza facilmente para qualquer *-homomorfismo de uma ´ algebra de Banach com involu¸c˜ ao para uma

gerenciamento de processos Task / Thread: task ´ e um ambiente de execu¸ c˜ ao (com espa¸ co de mem´ oria, capacidades) para um ou mais threads (que executados). comunica¸ c˜