Linearizabilidade e Serializabilidade no contexto da Memória Transacional de Software


7

Eu tenho tentado apreender serializability e linearizability no contexto da memória transacional de software. No entanto, acho que ambas as noções podem ser aplicadas à memória transacional em geral.

Neste ponto, a seguir, é minha compreensão de ambos os assuntos.

Serializability

A serialização é uma propriedade global . É uma propriedade de correção das transações. Dados os kprocessos em que cada um executa uma transação Tksimultaneamente, a serialização garante que haja uma sequência de transações que possam ser executadas em sequência (ou seja, uma após a outra), de modo que o resultado final seja o mesmo que as transações sendo executadas simultaneamente. Portanto, há uma permutação da lista (T1, T2,..,Tk)que define uma lista de transações que podem ser executadas sequencialmente.

Essa propriedade faz todo sentido para mim e acho que minha definição está correta. Baseei essa definição no texto em "A arte da programação de multiprocessadores", de Herlihy e Shavit.

Linearizabilidade

Linearizabilidade é uma propriedade local de objetos simultâneos (por exemplo, uma instância de uma classe que é compartilhada entre threads). A linearidade assegura que, quando dois processos executam uma série de chamadas de método op (por exemplo, queueou dequeueem uma Queueinstância) nesse objeto compartilhado, há uma ordem sequencial dessas chamadas de método que não preserva necessariamente a ordem do programa (a ordem em que o programador as escreveu) para baixo), mas cada chamada de método parece ocorrer instantaneamente (ou seja, invocação e resposta seguem uma à outra diretamente), mantendo o resultado de cada chamada de método individualmente e, consequentemente, o objeto em seu estado.

Questão

De acordo com um artigo "On the correctness of TM"de Guerraoui e Kapalka, esta é a definição de linearizabilidade no contexto da MT:

.. uma propriedade de segurança criada para descrever objetos compartilhados, às vezes é usada como um critério correto para MT. Na terminologia da TM, linearizabilidade significa que, intuitivamente, todas as transações devem aparecer como se tivessem ocorrido em algum momento único durante sua vida útil.

Essa definição parece apenas ser serializável para mim. Mas o documento adiante define a serialização da seguinte maneira:

.. é uma das propriedades mais comumente necessárias de uma transação de banco de dados. Grosso modo, um histórico H de transações (isto é, a sequência de todas as operações executadas por todas as transações em uma determinada execução) é serializável se todas as transações confirmadas em H emitem as mesmas operações e recebem as mesmas respostas que em algum histórico sequencial S que consiste apenas das transações confirmadas em H. (um histórico seqüencial é um sem concorrência entre as transações).

Essa definição, no entanto, parece implicar que se pode reordenar as instruções das transações de maneira que elas sejam intercaladas. (Ou seja, reordene as instruções de modo que nem todas as instruções de uma transação Tapareçam em seqüência H).


Estou no pressuposto de que minhas definições pessoais acima estão corretas. Minha pergunta real é como a linearizabilidade é definida no contexto da memória transacional. Não faz sentido raciocinar sobre cada chamada de método (isto é, operação de leitura / gravação) em uma transação individualmente, pois isso quebraria a semântica da memória transacional. Também não faria sentido ter que raciocinar sobre duas transações simultâneas em suas intercalações, pois isso obviamente quebraria a serialização. A linearizabilidade significa que é possível reordenar operações individuais dentro de uma transação? Se a linearização for uma forma mais forte de serialização, não importa em que ordem as operações são executadas em uma única transação.

Em resumo: Primeiro, o meu entendimento de serializabilidade e linearizabilidade está correto? Estou confuso depois de ler uma infinidade de definições em diferentes obras. E segundo, o que significa um conjunto de transações ser linearizável?

Eu também li a pergunta que estava vinculada dentro dos comentários. Mas não me explicou minha pergunta específica.

Fontes


11
Não vejo uma pergunta. Seja qual for a sua pergunta, o seguinte ajuda? cs.stackexchange.com/questions/13441/who-needs-linearizability/…
Wandering Logic

11
Em resumo: a serialização requer que as transações sejam atômicas e pareçam executadas em alguma ordem seqüencial. A serialização não faz suposições sobre processos (threads) e sobre quais transações são emitidas por quais threads. A linearidade adiciona a restrição de que cada encadeamento gostaria de ver as transações emitidas concluídas na ordem em que foram emitidas.
Wandering Logic

Tenho lido alguns livros e artigos sobre o assunto e atualizarei minha pergunta de acordo. Também vou reformular minha pergunta exata.
Christophe De Troyer

Lógica errante: Mas isso significa que se cada processo emite apenas uma única transação, a linearizabilidade é trivialmente cumprida? Ou você quer dizer a ordem da transação e suas declarações?
Christophe De Troyer

Respostas:


4

Sobre suas definições:

A ideia básica de serialização ( ) está correta. No entanto, ele não precisa se restringir à sua suposição de que : Todo processo pode emitir quantas transações quiser.SReach (process) executes a transaction

Seu entendimento da ( ) está completamente errado. Primeiro, para os e , a ordem do programa entre transações emitidas por um único processo deve ser preservada. Além disso, você não pode reordenar nenhuma operação dentro de uma transação.LRSRLR

Explicação de e :SRLR

Ambos e exigem todas as transações para se comportar como se eles foram executados em alguma ordem sequencial , o que significa que em tal ordem sequencial, todas as operações retornam os mesmos valores e os estados finais de banco de dados é o mesmo daqueles quando as transações estão sendo executadas simultaneamente.SRLRHreads

Como mencionado anteriormente, para e , a ordem do programa entre transações emitidas por um único processo deve ser preservada.SRLR

O texto acima fornece a definição de . No entanto, requer ainda mais a ordem sequencial obedecer o chamado tempo real ordem (parcial) entre as transações: Se uma transação extremidades antes de uma outra transação começa , então devem ser encomendados antes em .SRLRHT1 T2 T1T2H

Observe que não impõe a ordem em tempo real. Ou seja, é mais forte que .SRLRSR

Sobre propriedade global e propriedade local:

Não sei se é chamado de propriedade global (por favor me dê alguma referência, se tiver certeza disso). No entanto, o termo "propriedade local" tem um significado especial.SR

Uma propriedade de um sistema concorrente é dito ser local, se o sistema como um todo satisfaz sempre que cada indivíduo objeto satisfaz .PPP

É sabido que é local [1] enquanto não é.LRSR

ADICIONADO: Sobre LR e serialização estrita (SSR)

Conforme mencionado pela @Wandering Logic, o LR é originalmente definido para objetos, não para transações. Citado de [1] ;

A linearidade pode ser vista como um caso especial de serialização estrita, em que as transações são restritas para consistir em uma única operação aplicada a um único objeto.

Atualmente, no entanto, muitos autores usaram para transações. Por exemplo, em seu artigo seminal [2], Shavit e Touitou usaram o termo para transações. Quando usado para transações, é igual a .LRLRLRSSR

Obrigado @Wandering Logic pelas discussões .


[1] Linearizabilidade: uma condição de correção para objetos simultâneos . Por M. P. Herlihy e J. M. Wing. ACM Transactions on Programming Languages ​​and Systems, vol. 12, nº 3, julho de 1990.

[2] Memória transacional de software . Por Nir Shavit e Dan Touitou. Distrib. Comput. (1997) 10: 99-116.


1

Sua definição de serializabilidade está correta e equivalente à definição de Guerraoui e Kapalka que você cita. A definição de Guerraoui e Kapalka, como a sua, requer que todas as instruções dentro da transação pareçam executar e executar em ordem. Ou seja: o resultado final é como se você tivesse executado as transações atomicamente e em alguma ordem seqüencial. (A implementação pode ser otimizada com algum esquema de execução simultâneo, paralelo e fora de ordem, mas o resultado deve parecer como se você executasse todas as transações em alguma ordem sequencial e sem intercalação.)Tk

A serialização fala sobre o comportamento das transações sem levar em consideração os processos ou threads que emitiram essas transações. (Na sua definição, você tem exatamente tantos processos quanto transações, e cada processo emite exatamente uma transação.)

A linearidade leva em consideração o fato de que cada encadeamento emitirá várias transações, e esperamos que essas transações sejam executadas e concluídas na ordem em que solicitamos.

Um sistema de memória transacional é estritamente serializável se o resultado final de qualquer execução for o mesmo que se as transações de todos os processos fossem executadas atomicamente em alguma ordem sequencial, e as transações emitidas por cada processo individual aparecerem nessa sequência na ordem especificada por o programa desse processo.

(Esta é a definição de consistência sequencial de Lamport, "Como criar um computador multiprocessador que execute corretamente programas multiprocessos", IEEE T Comp 28 (9): 690-691, 1979 , mas modificada para falar sobre transações em vez de operações de memória. Herlihy e Wing chamam essa propriedade de estrita serialização .)

O artigo original de Herlihy e Wing que define linearizabilidade era sobre operações em objetos, não transações. Mas, o seguinte conecta os dois conceitos:

A linearidade pode ser vista como um caso especial de serialização estrita, em que as transações são restritas para consistir em uma única operação aplicada a um único objeto.

(Herlihy, Maurice; Wing, Jeanette: Linearizabilidade: uma condição de correção para objetos concorrentes . ACM T. Prog. Lang. E Sys. 12 (3): 463-492, 1990)


Parece que temos um entendimento diferente da linearidade. Na sua resposta, você usou o termo "atomicamente" várias vezes. Significa "tudo ou nada" ou "instantaneamente"?
precisa saber é o seguinte

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.