BRPI0809078A2 - Memória transacional que utiliza gravações armazenadas em buffer e ordem de serialização reforçada - Google Patents

Memória transacional que utiliza gravações armazenadas em buffer e ordem de serialização reforçada Download PDF

Info

Publication number
BRPI0809078A2
BRPI0809078A2 BRPI0809078-5A BRPI0809078A BRPI0809078A2 BR PI0809078 A2 BRPI0809078 A2 BR PI0809078A2 BR PI0809078 A BRPI0809078 A BR PI0809078A BR PI0809078 A2 BRPI0809078 A2 BR PI0809078A2
Authority
BR
Brazil
Prior art keywords
transaction
transactions
transactional memory
shadow copy
computer readable
Prior art date
Application number
BRPI0809078-5A
Other languages
English (en)
Inventor
David Detlefs
John Joseph Duffy
Michael M Magruder
Goetz Graefe
Vinod K Grover
Timothy Lawrence Harris
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of BRPI0809078A2 publication Critical patent/BRPI0809078A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Description

“MEMÓRIA TRANSACIONAL QUE UTILIZA GRAVAÇÕES ARMAZENADAS EM MEMÓRIA TEMPORÁRIA E ORDEM DE SERIALIZAÇÃO REFORÇADA.”
Antecedentes
Uma unidade de processamento do computador executa um fluxo de instrução a partir de um texto de instruções do programa. Cada instrução especifica sua sucessora; tanto a instrução subsequente como, no caso de um ramal ou chamada, alguma outra instrução. Então, um processador executa uma instrução em um tempo (os processadores “danificados” e canalizados profanam isto em sua implantação, porém preservam estas semânticas). Um programa geralmente compila um texto de programa com uma instrução de início distinta. Em um programa C, por exemplo, a primeira instrução do método "principal" é a instrução de início distinta. O "contexto do processador" que determina a seqüência de instruções executada após isto é frequentemente chamado de "encadeamento de controle" ou apenas "encadeamento". Os programas executam em um processo de sistema operacional, que fornece um espaço de endereço virtual, que permite que cada processo se comporte como se tivesse um único acesso a todas as memórias de uma máquina "virtual". O processo do sistema operacional, além do espaço do endereço virtual, também fornece vários recursos operacionais por processo, tais como descritores de arquivo, e um ou mais encadeamentos. Os programas tradicionais são de encadeamento único: eles executam em um processo com somente um único encadeamento de controle.
Um multiprocessador de memória compartilhada tem diversos processadores que compartilham o acesso à mesma memória; uma gravação por um processador pode ser observada através de uma leitura subsequente por um outro processador. Tal máquina pode ser usada através da execução de diversos programas diferentes, cada processo, em diferentes processadores. Neste modo, não é feito uso realmente de uma memória compartilhada, tendo em vista que cada um dos processos tem espaços de endereços separados. Em um outro modo, entretanto, um programa pode criar diversos encadeamentos de controle no processo que executa, e estes encadeamentos podem executar simultaneamente em múltiplos processadores, e se comunicam através da memória compartilhada. (Tal programa atual ou com múltiplo encadeamento também pode executar em um uniprocessador e, em geral, um programa pode criar mais encadeamentos do que os processadores disponíveis. Uma das tarefas do sistema operacional é programar a execução dos encadeamentos executáveis nos processadores disponíveis, dessa forma, um encadeamento em execução pode ser interrompido em uma instrução arbitrária para permitir que um outro encadeamento continue).
Esta execução de instruções intercalada simultânea pelos encadeamentos torna a programação concorrente muito difícil. Como analogia, imagine um maço de cartas que foi separado de tal modo que todas as cartas vermelhas estejam em uma pilha e todas as cartas pretas estejam em uma segunda pilha. Cada carta representa uma instrução e cada pilha representa um encadeamento. Misture as pilhas usando uma técnica de “bridge” para embaralhamento”. A ordem das cartas vermelhas não foi alterada entre si nem a das cartas pretas, porém as cartas se tornaram intercaladas. Isto é exatamente o que acontece quando os encadeamentos executam concorrentemente. Deve ficar claro também que existe um número muito grande de intercalações possíveis, cada um representando uma execução possível. O programa deve funcionar corretamente para todas as execuções possíveis.
Quando os encadeamentos executam em um ambiente computacional concorrente, exige-se que os mecanismos gerenciem como cada encadeamento interage com os recursos do sistema tal como a memória compartilhada. A memória transacional em software (STM) é um mecanismo de controle concorrente análogo às transações de banco de dados para controle do acesso à memória compartilhada em computação concorrente. Uma transação no contexto de memória transacional é uma peça de código que executa uma série de leituras e gravações na memória compartilhada, e os faz atomicamente, com toda a transação executando como se fosse o único encadeamento de controle em execução no sistema. Se a transação Tx1 observa qualquer gravação pela transação Tx2, então, isto observa todas as gravações pela Tx2. Uma localização de dados no contexto de memória transacional é o segmento específico de memória compartilhada a ser acessado, tal como um único objeto, uma linha de cache (tal como em C++), uma página, uma única palavra, etc. Um tipo de modo de bloqueio de controle concorrente em sistemas de memória transacional é o controle de concorrência otimista ou bloqueio otimista.
Com o controle de concorrência otimista, o sistema tenta progredir com o encaminhamento com um risco de que um conflito possa ser detectado posteriormente. O sistema de memória transacional desempenha a resolução automática de tais conflitos, frequentemente, através da reversão de uma das transações conflitantes e as re-executando. As operações otimistas são relativamente baratas quando comparadas às operações pessimistas, tendo em vista que somente lêem e não envolvem gravações em localizações compartilhadas (isto é, adotando bloqueio). Como o nome implica, a esperança para as operações otimistas consiste em haver poucos conflitos. Se isto for falso, então, já haverá trabalho desperdiçado, e o sistema deve, então, proceder para eliminar isto e tentar resolver o conflito.
Um caso sério que o controle de concorrência otimista não endereça explicitamente pode ocorrer em cenários de privatização. Os problemas relacionados à privatização podem ocorrer quando um programa tem encadeamentos concorrentes que executam transações que acessam as mesmas localizações de memória compartilhada e uma destas transações privatiza alguma localização de memória compartilhada. A privatização ocorre quando uma transação desempenha operações que tornam uma localização de memória compartilhada acessível somente à transação. Por exemplo, se somente a referência a algum objeto O for armazenada em alguma fila Q globalmente acessível e a transação Tx1 em execução por encadeamento T1 desempenha uma operação que remove a referência ao O da Q e a armazena em uma localização variável T1, então, Tx1 privatizou O para T1.
Com algumas implantações de STM, a privatização pode ocasionar resultados inesperados. Algumas implantações de STM tentam alcançar alto desempenho através da combinação da leitura otimista com gravação "no local", em gravações transacionais, são desempenhadas diretamente em uma localização de memória. Quando estas técnicas são usadas para implantar um programa que executa a privatização, o seguinte cenário é possível. Alguma localização global G contém um indicador exclusivo para uma estrutura de dados compartilhados. Dois encadeamentos executam transações que tentam acessar esta estrutura de dados concomitantemente. O encadeamento T1 executa a transação Tx1, que irá Ier G e, se o indicador lido for não-nulo, tenta incrementar um número inteiro na estrutura de dados à qual o indicador se refere. O encadeamento T2 executa a transação Tx2, que irá copiar G em uma variável de localização/encadeamento e ajustar G a nulo. O encadeamento T2, então, acessa a estrutura de dados através da variável do indicador de localização/encadeamento, acreditando que tenha "privatizado" com sucesso a estrutura de dados através do ajuste de G a nulo. Entretanto, com as leituras otimistas e as gravações no local, uma possível execução consiste na leitura de G por Tx1, observando um valor não-NULO. No presente contexto, Tx2 executa em sua totalidade. Tx2 grava uma localização, G, que Tx1 leu, dessa forma, Tx1 “denegri” para abortar, porém isto não será descoberto até que Tx1 tente executar. Então, Tx1 continua a execução, incrementando um campo na estrutura de dados. Isto incremento será desfeito quando Tx1 falhar na execução, porém, do ponto de vista do código não-transacional que executa após Tx2 em encadeamento com T2, tanto esta gravação quanto a gravação que desempenha a operação de "desfazer" são "inexplicáveis", não ocorrem por alguma razão e podem fazer o programa operar incorretamente.
Uma outra classe de problemas relacionados à privatização envolve "anomalias de serialização". Conforme discutido anteriormente, as transações simplificam a programação concorrente através do fornecimento ao programador a ilusão de que transações concorrentes se executam em alguma ordem serial. Em particular, se uma leitura pela transação Tx2 observa uma gravação pela transação Tx1, então, Tx2 deve ser serializada após Tx1. Uma anomalia de serialização ocorre quando as transações se completam em uma ordem diferente de sua ordem de serialização. Quando um programa emprega um idioma de privatização, isto pode fazer com que o código não-transacional que executa, em um encadeamento após uma das transações completas, observe gravações "inexplicáveis".
Sumário
Várias tecnologias e técnicas reveladas suportam gravações armazenadas em buffer e uma ordem de serialização reforçada em um sistema de memória transacional em software. É fornecido um sistema de memória transacional em software que é operável no gerenciamento de transações. É fornecido um processo de gravação armazenada em buffer que desempenha gravações para gravações para e leituras a partir de cópias-sombra de objetos e retorno de conteúdo de gravações para os objetos após validar uma transação 5 respectiva durante o restabelecimento. Quando um bloqueio de gravação é obtido primeiramente para uma transação particular, uma cópia-sombra é feita de um objeto particular. As gravações são executadas para a cópia-sombra. Após validar a transação particular durante o restabelecimento, o conteúdo é gravado a partir da cópia-sombra para o objeto particular.
É fornecido um processo de ordenação de transação que assegura que uma ordem na qual as transações são restabelecidas corresponda a uma ordem de serialização abstrata das transações. É fornecido um contador de restabelecimento de entrada que representa um primeiro número de transações que têm um processamento de restabelecimento de entrada. É fornecido um contador de restabelecimento de saída que representa um segundo número de transações que têm um processamento de restabelecimento de saída. Quando uma transação particular entra no processamento de restabelecimento, o sistema lê e incrementa atomicamente o contador de restabelecimento de entrada e atribui um valor que foi lido a partir do contador de restabelecimento de entrada como um número de tíquete para a transação particular. Quando o contador de restabelecimento de saída se corresponde ao número de tíquete para a transação particular, a transação particular sai do processamento de restabelecimento.
Este sumário foi fornecido para introduzir uma seleção de conceitos de uma forma simplificada que são descritos adicionalmente abaixo na Descrição Detalhada. Este sumário não se destina a identificar recursos-chave recursos essenciais do assunto reivindicado, nem se destina a ser usado como um auxílio na determinação do escopo do assunto reivindicado.
Breve descrição dos Desenhos
A Figura 1 é uma vista diagramática de um sistema de computador de uma implantação.
A Figura 2 é uma vista diagramática da aplicação de memória transacional em software de uma implantação que opera no sistema de computador da Figura 1.
A Figura 3 é um diagrama de fluxo de um processo de alto nível para uma implantação do sistema da Figura 1.
A Figura 4 é um diagrama de fluxo do processo para uma implantação do sistema da Figura 1 que ilustra os estágios de alto nível envolvidos no uso de gravações armazenadas em buffer com um sistema de memória transacional em software.
A Figura 5 é um diagrama de fluxo do processo para uma implantação do sistema da Figura 1 que ilustra os estágios mais detalhados envolvidos no uso de gravações armazenadas em buffer com um sistema de memória transacional em software. A Figura 6 é um diagrama de fluxo do processo para uma implantação do sistema da Figura 1 que ilustra os estágios envolvidos no rastreamento de informações sobre gravação armazenada em buffer em uma palavra da memória transacional.
A Figura 7 é um diagrama lógico que ilustra uma palavra da memória transacional que porta uma referência à cópia-sombra do objeto e o objeto em memória compartilhada.
A Figura 8 é um diagrama de fluxo do processo para uma implantação do sistema da Figura 1 que ilustra os estágios de alto nível envolvidos em assegurar o restabelecimento das transações na mesma ordem que a ordem de serialização abstrata.
A Figura 9 é um diagrama de fluxo do processo para uma implantação do sistema da Figura 1 que ilustra os estágios mais detalhados envolvidos em assegurar o restabelecimento das transações na mesma ordem que a ordem de serialização abstrata.
Descrição Detalhada
Para propósitos de promover um entendimento dos princípios da invenção, será feita no presente momento referência às modalidades ilustradas nos desenhos e será usada linguagem especifica para descrevê-las. Todavia, ficará entendido que nenhuma limitação do escopo é destinada por meio disso. Quaisquer alterações e modificações adicionais nas modalidades descritas, e quaisquer aplicações adicionais dos princípios conforme descritas no presente documento são contempladas conforme sua ocorrência natural a um indivíduo versado na técnica.
O sistema pode ser descrito no contexto geral como um sistema de memória transacional em software, porém o sistema também serve para outros propósitos além destes. Em uma implantação, uma ou mais das técnicas descritas na presente invenção podem ser implantadas como recursos de um programa de estrutura tal como o MICROSOFT® .NET Framework, ou a partir de qualquer outro tipo de programa ou serviço que forneça plataformas para desenvolvedores desenvolverem aplicativos de software. Em uma outra implantação, uma ou mais das técnicas descritas no presente documento como recursos com outros aplicativos proporcionam aplicativos de desenvolvimento que executam em ambientes concorrentes.
Em uma implantação, é fornecido um sistema de memória transacional em software que usa um processo de gravação armazenada em buffer para realizar gravações para cópias-sombra de objetos e retorno de conteúdo de gravação para os objetos após a validação de uma transação respectiva durante o restabelecimento. Em outra implantação, é fornecido um processo de ordenação de transação que assegura que uma ordem na qual as transações são restabelecidas corresponda à ordem de serialização abstrata das transações. As transações simplificam a programação concorrente proporcionando aos programadores a ilusão de que as transações executam serialmente, isoladamente. A ordem de serialização abstrata é simplesmente a ordem na qual as transações aparentam executar. Isto é determinado pelas leituras e gravações executadas pelas transações. Se Tx1 e Tx2 forem ambas transações que se restabelecem, e se uma leitura por Tx2 observa um valor gravado por Tx1, então, Tx1 deve preceder Tx2 na ordem de serialização abstrata. Se cada uma Ier um valor que a outra grava, então, podem não estar serializadas e, portanto, não podem ser restabelecidas, então, ao menos uma ser deve abortada. Se ambas se restabelecem, se cada uma deve preceder a outra, então, uma deve abortar. Através do uso do processo de gravação armazenada em buffer e/ou do processo de ordenação de transação, ao menos alguns dos problemas relacionados à privatização são evitados.
Conforme mostrado na Figura 1, um sistema de computador exemplificador para uso na implantação de uma ou mais partes do sistema inclui um dispositivo de computação, tal como dispositivo de computação 100. Em sua configuração mais básica, o dispositivo de computação 100 inclui tipicamente ao menos uma unidade de processamento 102 e uma memória 104. Dependendo da configuração e do tipo de dispositivo de computação exatos, a memória 104 pode ser volátil (tal como RAM), não-volátil (tal como ROM, memória flash, etc.) ou alguma combinação das duas. Esta configuração mais básica é ilustrada na Figura
1 pela linha tracejada 106.
Adicionalmente, o dispositivo 100 também pode ter recursos/funcionalidade adicionais. Por exemplo, o dispositivo 100 também pode incluir armazenamento adicional (removível e/ou não-removível) incluindo, mas não se limitando a, discos ou fita ópticos ou magnéticos. Tal armazenamento adicional é ilustrado na Figura 1 por armazenamento removível 108 e armazenamento não-removível 110. Os meios de armazenamento do computador incluem meios voláteis e não-voláteis, removíveis e não-removíveis implantados em qualquer método ou tecnologia para armazenamento de informações tais como instruções legíveis por computador, estrutura de dados, módulos de programa ou outros dados. A memória 104, o armazenamento removível 108 e o armazenamento não-removível 110 são todos os exemplos de meios de armazenamento do computador. Os meios de armazenamento do computador incluem, mas não se limitam a, RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento óptico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que possa ser usado para armazenar as informações desejadas e que possa ser acessado pelo dispositivo 100. Quaisquer meios de armazenamento do computador podem ser parte do dispositivo 100.
O dispositivo de computação 100 inclui uma ou mais conexões de comunicação 114 que permitem que o dispositivo de computação 100 se comunique com outros computadores/aplicativos 115. O dispositivo 100 também pode ter dispositivo(s) de entrada 112 tais como teclado, mouse, caneta, dispositivo de entrada de voz, dispositivo de entrada de toque, etc. Os dispositivos(s) de saída 111 tais como tela, alto-falantes, impressora, etc. também podem ser incluídos. Estes dispositivos são bem conhecidos na técnica e não necessitam serem discutidos no decorrer do presente documento. Em uma implantação, o dispositivo de computação 100 inclui um aplicativo de memória transacional em software 200. O aplicativo de memória transacional em software 200 será descrito em detalhes adicionais na Figura 2.
Voltando-se no presente momento à Figura 2 em referência contínua à Figura 1, aplicativo de memória transacional em software 200 que opera em um dispositivo de computação 100 é ilustrado. O aplicativo de memória transacional em software 200 é um dos programas aplicativos que residem no dispositivo de computação 100. Entretanto, ficará entendido que o aplicativo de memória transacional em software 200 pode alternativa ou adicionalmente ser incorporado como instruções executáveis por computador em um ou mais computadores e/ou em diferentes variações que as mostradas na Figura 1. Alternativa ou adicionalmente, uma ou mais partes do aplicativo de memória transacional em software 200 pode ser parte do sistema memória 104, em outros computadores e/ou aplicativos 115 ou outras variações, conforme elas ocorram, a uma técnica de software de computador.
O aplicativo de memória transacional em software 200 inclui lógica de programação 204, que é responsável por executar algumas ou todas as técnicas descritas na presente invenção. A lógica de programação 204 inclui lógica para fornecer um sistema de memória transacional em software operável para gerenciar uma pluralidade de transações 206; lógica para fornecer um processo de gravação armazenada em buffer que execute gravações para e ieituras a partir de cópias-sombra de objetos e retorno de conteúdo de gravação para os objetos após a validação de uma transação respectiva da pluralidade de transações durante o restabelecimento 208; lógica para fornecer um processo de ordenação de transação que assegure que uma ordem na qual a pluralidade de transações é restabelecida corresponda a uma ordem de serialização abstrata da pluralidade de transações 210; lógica para permitir que o processo de gravação armazenada em buffer faça uma cópia-sombra particular de um dos objetos em particular quando um bloqueio de gravação é primeiramente obtido e acesse a cópia-sombra se já houver 212; lógica para permitir que o processo de ordenação de transação use estruturas globais de dados para assegurar o restabelecimento da ordem (por exemplo, o contador de restabelecimento de entrada e o contador de restabelecimento de saída) 214; lógica para permitir que o processo de ordenação de transação permita que a transação respectiva, mediante a entrada do processamento de restabelecimento, leia e incremente atomicamente o contador de restabelecimento de entrada e atribua um valor que foi lido a partir do contador de restabelecimento de entrada como um número de tíquete para a transação respectiva 216; lógica para permitir que o processo de ordenação de transação faça a espera da transação respectiva até que o contador de restabelecimento de saída se corresponda ao número de tíquete da transação respectiva antes da transação respectiva ser permitida a proceder após o processamento de restabelecimento 218; lógica para evitar problemas relacionados à privatização através do uso do processo de gravação armazenada em buffer e/ou do processo de ordenação de transação 220; e outra lógica para operar o 5 aplicativo 222. Em uma implantação, a lógica de programação 204 é operável para ser chamada programaticamente a partir de um outro programa, tal como usando uma única chamada para um procedimento na lógica de programação 204.
Voltando-se no momento às Figuras de 3 a 9 com referência contínua às Figuras 1 e 2, os estágios para implantação de uma ou mais implantações de aplicativo de memória 10 transacional em software 200 são descritos em maiores detalhes. A Figura 3 é um diagrama de fluxo do processo de alto nível para o aplicativo de memória transacional em software 200. Em uma forma, o processo da Figura 3 é ao menos parcialmente implantado na lógica operacional do dispositivo de computação 100. O processo começa no ponto inicial 240 com o fornecimento de um sistema de memória transacional em software operável para gerenciar 15 uma pluralidade de transações (estágio 242). É fornecido um processo de gravação armazenada em buffer que executa gravações para cópias-sombra de objetos e retorno de conteúdo de gravação para objetos após a validação de uma transação respectiva da pluralidade de transações (estágio 244). É fornecido um processo de ordenação de transação que assegura que uma ordem na qual a pluralidade de transações é restabelecida corresponda 20 a uma ordem de serialização abstrata da pluralidade de transações (estágio 246). Através do fornecimento do processo de gravação armazenada em buffer e/ou do processo de ordenação de transação, aiguns probiemas relacionados à privatização podem ser evitados (estágio 248). O processo termina no ponto final 250.
A Figura 4 ilustra uma implantação dos estágios de alto nível envolvidos no uso de gravações armazenadas em buffer com um sistema de memória transacional em software. Em uma forma, o processo da Figura 4 é ao menos parcialmente implantado na lógica operacional do dispositivo de computação 100. O processo começa no ponto inicial 260 com o fornecimento de um sistema de memória transacional em software operável para gerenciar uma pluralidade de transações (estágio 262). Quando um bloqueio de gravação é primeiramente obtido para uma transação particular, uma cópia-sombra é feita de um objeto particular (estágio 264). As gravações são executadas para e as leituras a partir da cópia-sombra (estágio 266). A seguir é feita uma explicação de como as leituras são executadas em uma implantação que usa uma cópia-sombra, porém outras variações de leitura e gravação também poderiam ser usadas. Se uma leitura é feita a partir de um objeto de gravação não bloqueada, então, as leituras são feitas a partir do objeto diretamente. Se o objeto tiver a gravação bloqueada, o bloqueio (por exemplo, na palavra da memória transacional) aponta para uma cópia-sombra em algum registro de transação. Se isto ocorre no registro de alguma outra transação, então, há um conflito, e alguma ação de gerenciamento de contenção deve ser tomada. Se isto ocorre no registro da transação atual, então, as leituras são executadas a partir da cópia-sombra que a transação aponta. Após a validação da transação particular durante o restabelecimento, conteúdo é gravado a partir da cópia-sombra para o objeto particular (estágio 268). O processo termina no ponto final 270.
A Figura 5 ilustra uma implantação dos estágios mais detalhados envolvidos no uso de gravações armazenadas em buffer com um sistema de memória transacional em software. Em uma forma, o processo da Figura 5 é ao menos parcialmente implantado na lógica operacional do dispositivo de computação 100. O processo começa no ponto inicial 280 com 10 um encadeamento que executa uma transação que tenta gravar um valor V em alguma localização no objeto O (estágio 281). A transação, portanto, deseja adotar um bloqueio de gravação no objeto O (estágio 282). Se o objeto não estiver com gravação bloqueada (ponto de decisão 284), então, é obtido um bloqueio de gravação e a transação cria uma cópia-sombra e mantém uma referência parta isto (estágio 287). Se o objeto tiver gravação bloqueada 15 (ponto de decisão 284), e o bloqueio de gravação for mantido pela transação atual (ponto de decisão 285), então, a transação mantém uma referência para isto (estágio 288). Em ambos os eventos, a transação grava o valor V para a cópia-sombra do O (estágio 290). Entretanto, se o objeto tiver gravação bloqueada (ponto de decisão 284), e o bloqueio de gravação não for mantido pela transação atual, mas em vez disso for mantido por outra transação (ponto 20 de decisão 285), então, uma ação de gerenciamento de contenção é tomada (estágio 286). O processo termina no ponto final 292.
A Figura 6 ilustra uma implantação dos estágios envolvidos no rastreamento de informações sobre gravação armazenada em buffer em uma palavra de memória transacional. Em uma forma, o processo da Figure 6 é ao menos parcialmente implantado na lógica ope25 racional do dispositivo de computação 100. O processo começa no ponto inicial 310 com o fornecimento de uma palavra de memória transacional em um cabeçalho do objeto do objeto particular (estágio 312). Um tipo de bloqueio e uma versão são rastreados usando a palavra de memória transacional (estágio 314), conforme descrito em maiores detalhes na Figura 7. Em um bloqueio de estado gravado, a palavra de memória transacional mantém um indica30 dor para uma entrada de registro de gravação, que contém a cópia-sombra e um indicador para o endereço base do objeto (estágio 316). As gravações são executadas para e as leituras são executadas a partir da cópia-sombra, e o valor da cópia-sombra é gravado de volta para o objeto no processamento de restabelecimento após a transação ter sido validada (estágio 318). O processo termina no ponto final 320.
A Figura 7 é um diagrama lógico que ilustra uma palavra de memória transacional
404 que está mantendo uma referência a uma entrada de registro de gravação 408 que indica que o objeto tem a gravação bloqueada pela transação que pertence ao registro da transação 406. A entrada de registro de gravação inicia com um cabeçalho de tamanho fixo 410, que contém TMW original 412, que é o valor do TMW do objeto antes de ter a gravação bloqueada, e o objeto base 414, um retorno do indicador para o objeto de gravação bloqueada objeto. A seguir, o cabeçalho é a cópia-sombra 416, que é inicializada com os conteúdos do 5 objeto 400 seguintes ao cabeçalho do objeto 402. A transação irá gravar para e Ier a partir da sua cópia-sombra, gravando seus conteúdos atualizados de volta para o objeto 400 quando o restabelecimento da transação ocorrer. Em outra implantação, a palavra de memória transacional pode conter um indicador diretamente para a cópia-sombra; um indicador para o início da entrada de registro de gravação poderia ser recuperado através da subtra10 ção do tamanho do cabeçalho, que é uma constante. A palavra de memória transacional 404 está presente no cabeçalho do objeto 402 do objeto 400.
Quando um objeto não tem a gravação bloqueada, a palavra de memória transacional inclui um número de versão e uma lista/contagem e/ou indicador de leitores (por exemplo, leitores pessimistas). Quando um objeto tem a gravação bloqueada, uma entrada 15 de bloqueio de gravação da palavra de memória transacional também mantém o valor TMW que foi lido antes do objeto que teve a gravação bloqueada. Em uma implantação, a lista/contagem e/ou indicador de leitores incluem uma contagem do número de leitores (por exemplo, pessimista) que acessa o valor particular em um determinado instante de tempo. Em uma outra implantação, a lista/contagem e/ou indicador de leitores incluem uma lista dos 20 leitores particulares (por exemplo, pessimista) que acessam o valor particular em um determinado instante de tempo. Ainda em outra implantação, a lista/contagem e/ou indicador de leitores é simplesmente uma bandeira ou outro indicador para indicar que existem um ou mais leitores (por exemplo, pessimista) que acessam o valor particular em um determinado instante de tempo. Deverá ser observado que outros atributos da palavra de memória tran25 sacional e/ou combinações dos mesmos poderiam alternativa ou adicionalmente ser usados em outras implantações para indicar os números de versão, os bloqueios de gravação, etc. para utilização por um sistema de memória transacional para tomar decisões de controle de concorrência.
A Figura 8 ilustra uma implantação dos estágios de alto nível envolvidos em asse30 gurar que as transações se restabeleçam na mesma ordem que a ordem de serialização abstrata. Em uma forma, o processo da Figure 8 é ao menos parcialmente implantado na lógica operacional do dispositivo de computação 100. O processo começa no ponto inicial 420 com o fornecimento de um sistema de memória transacional em software operável para gerenciar uma pluralidade de transações (estágio 422). É fornecido um contador de restabe35 Iecimento de entrada que representa inúmeras transações que têm o processamento de restabelecimento de entrada (estágio 424). É fornecido um contador de restabelecimento de saída que representa inúmeras transações que têm o processamento de restabelecimento de saída (estágio 426). Quando uma transação particular entra no processamento de restabelecimento, isto lê e incrementa atomicamente o contador de restabelecimento de entrada e atribui um valor que foi lido a partir do contador de restabelecimento de entrada as a número de tíquete para a transação particular (estágio 428). Quando o contador de restabelecimento de saída se corresponde ao número de tíquete para a transação particular, a transação particular é permitida a sair do processamento de restabelecimento (estágio 430). O processo termina no ponto final 432.
A Figure 9 ilustra uma implantação dos estágios mais detalhados envolvidos em assegurar que as transações se restabeleçam na mesma ordem que a ordem de serialização abstrata. Em uma forma, o processo da Figure 9 é ao menos parcialmente implantado na lógica operacional do dispositivo de computação 100. O processo começa no ponto inicial 450 com o início da transação (estágio 452). A transação executa as leituras e gravações e fluxo de controle (estágio 453). Se a transação particular for de somente leitura (ponto de decisão 454), então, a transação de somente leitura não deve ser restringida ao restabelecimento de finalização na mesma ordem que a ordem de serialização abstrata (estágio 456) e pode proceder para validar a leitura para observar se pode ser restabelecida (estágio 471). Neste ponto, o processo termina no ponto final 472.
Se a transação não for de somente leitura (ponto de decisão 454), então, a transação deve ser restringida ao restabelecimento de finalização na mesma ordem que a ordem de serialização abstrata (estágio 458). A transação lê e incrementa atomicamente o contador global de restabelecimento de entrada e atribui um valor que foi lido a partir do contador de restabelecimento de entrada como um número de tíquete para a transação particular (estágio 460). A transação executa o processamento de restabelecimento (estágio 464). Em uma implantação, durante o processamento de restabelecimento, as seguintes etapas são executadas: (1) as leituras otimistas são validadas, assegurando que a leitura das localizações ainda não tem a gravação bloqueada e que elas mantêm os mesmos números de versão que tinham quando o TMW foi lido originalmente; e (2) cópias-sombra são gravadas de volta. A transação sai do processamento de restabelecimento somente quando o contador global de restabelecimento de saída se corresponde ao número de tíquete local e a transação incrementa o contador de restabelecimento de saída (estágio 468). Após, a saída da transação do processamento de restabelecimento, os bloqueios de leituras pessimistas e gravação são liberados (estágio 470). O processo termina no ponto final 472.
Muito embora o assunto tenha sido descrito em linguagem específica em relação aos recursos e/ou atos metodológicos, deve ficar entendido que o assunto definido nas reivindicações em anexo não está necessariamente limitado aos recursos ou atos descritos acima. Adversamente, os recursos e atos específicos descritos acima são revelados como formas de exemplo de implantação das reivindicações. Deseja-se proteger todas as modificações, alterações e equivalentes que estão inclusas no espírito das implantações conforme descrito no presente documento e/ou através das seguintes reivindicações.
Por exemplo, um indivíduo versado na técnica de software de computador irá reconhecer que as disposições do cliente e/ou servidor, conteúdo da tela de interface do usuário e/ou disposições de dados conforme descrito nos exemplos discutidos na presente invenção poderiam ser organizados diferentemente em um ou mais computadores para incluírem recursos ou opções menores ou adicionais que as retratadas nos exemplos.

Claims (20)

1.Meio legível por computador, CARACTERIZADO pelo fato de que possui instruções executáveis por computador para fazer com que um computador execute as etapas que compreendem: fornecer um sistema de memória transacional em software operável para gerenciar uma pluralidade de transações; fornecer um processo de gravação armazenada em buffer que executa gravações para e leituras a partir de cópias-sombra de objetos e retorno de conteúdo de gravação aos objetos após a validação de uma transação respectiva da pluralidade de transações durante o restabelecimento; e fornecer um processo de ordenação de transação que assegura que uma ordem na qual a pluralidade de transações está restabelecida se corresponda a uma ordem de serialização abstrata da pluralidade de transações.
2.Meio legível por computador, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o processo de gravação armazenada em buffer é operável para fazer uma cópia-sombra particular de um dos objetos em particular quando um bloqueio de gravação é primeiramente obtido.
3.Meio legível por computador, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o processo de gravação armazenada em buffer é operável para acessar a cópia-sombra particular para um dos objetos em particular se a cópiasombra particular já existir
4.Meio legível por computador, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o processo de ordenação de transação é operável para usar uma estrutura global de dados para assegurar que a ordem na qual as transações estão restabelecidas se corresponda à ordem de serialização abstrata.
5.Meio legível por computador, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que a estrutura global de dados inclui um contador de restabelecimento de entrada e um contador de restabelecimento de saída, o contador de restabelecimento de entrada representa um primeiro número de transações que tem o processamento de restabelecimento de entrada, e o contador de restabelecimento de saída representa um segundo número de transações que tem o processamento de restabelecimento de saída.
6.Meio legível por computador, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que quando a transação respectiva entra no processamento de restabelecimento, a transação respectiva lê e incrementa atomicamente o contador de restabelecimento de entrada, e atribui um valor que fio lido a partir do contador de restabelecimento de entrada como um número de tíquete para a transação respectiva.
7.Meio legível por computador, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que a transação respectiva espera até que o contador de restabelecimento de saída se corresponda ao número de tíquete da transação respectiva antes que se permita que a transação respectiva proceda após o processamento de restabelecimento.
8.Meio legível por computador, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o uso do processo de gravação armazenada em buffer e do processo de ordenação de transação assegura que os problemas relacionados à privatização sejam evitados.
9.Método para fornecer gravações armazenadas em buffer em um sistema de memória transacional em software, CARACTERIZADO pelo fato de que compreende as etapas de: fornecer um sistema de memória transacional em software operável para gerenciar uma pluralidade de transações; quando um bloqueio de gravação é primeiramente obtido para uma transação particular, fazer uma cópia-sombra de um objeto particular; executar gravações para e leituras a partir da cópia-sombra; e após validar a transação particular durante o restabelecimento, gravar o conteúdo a partir da cópia-sombra para o objeto particular.
10.Método, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que o objeto particular tem uma palavra de memória transacional em um cabeçalho do objeto, a palavra de memória transacional é operável para rastrear um tipo de bloqueio e uma versão.
11.Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que a palavra de memória transacional representa um indicador para a cópia-sombra.
12.Método, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que a transação particular é permitida a sair do processamento de restabelecimento em uma mesma ordem que a transação particular fora serializada.
13.Método, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que a transação particular não sai do processamento de restabelecimento até que um número de tíquete da transação particular se corresponda a um contador global que identifica uma próxima transação que deve ser permitida o restabelecimento.
14.Meio legível por computador, CARACTERIZADO pelo fato de que possui instruções executáveis por computador para fazer com que um computador execute as etapas citadas na reivindicação 9.
15.Método para assegurar que as transações em um sistema de memória transacional em software estejam restabelecidas em ordem de serialização, CARACTERIZADO pelo fato de que compreende as etapas de: fornecer um sistema de memória transacional em software operável para gerenciar uma pluralidade de transações; fornecer um contador de restabelecimento de entrada que representa um primeiro número de transações que tem o processamento de restabelecimento de entrada; fornecer um contador de restabelecimento de saída que representa um segundo número de transações que tem o processamento de restabelecimento de saída; quando uma transação particular da pluralidade de transações entra no processamento de restabelecimento, Ier e incrementar atomicamente o contador de restabelecimento de entrada e atribuir um valor que foi lido a partir do contador de restabelecimento de entrada as a número de tíquete para a transação particular; e quando o contador de restabelecimento de saída se corresponde ao número de tíquete para a transação particular, restabelecer a transação particular.
16.Método, de acordo com a reivindicação 15, CARACTERIZADO pelo fato de que um processo de gravação armazenada em buffer é usado para executar gravações para e leituras a partir das cópias-sombra de objetos até que a transação particular se restabeleça.
17.Método, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de uma cópia-sombra de um objeto particular é feita quando um bloqueio de gravação é primeiramente obtido.
18.Método, de acordo com a reivindicação 17, CARACTERIZADO pelo fato de que as gravações são executadas para e as leituras são executadas a partir da cópia-sombra do objeto particular.
19.Método, de acordo com a reivindicação 18, CARACTERIZADO pelo fato de que o conteúdo é gravado a partir da cópia-sombra para o objeto particular após a transação particular ser validada durante o restabelecimento.
20.Meio legível por computador, CARACTERIZADO pelo fato de que possui as instruções executáveis por computador para fazer com que um computador execute as etapas citadas na reivindicação 15.
BRPI0809078-5A 2007-04-11 2008-03-13 Memória transacional que utiliza gravações armazenadas em buffer e ordem de serialização reforçada BRPI0809078A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/786.174 2007-04-11
US11/786,174 US7908255B2 (en) 2007-04-11 2007-04-11 Transactional memory using buffered writes and enforced serialization order
PCT/US2008/056873 WO2008127821A1 (en) 2007-04-11 2008-03-13 Transactional memory using buffered writes and enforced serialization order

Publications (1)

Publication Number Publication Date
BRPI0809078A2 true BRPI0809078A2 (pt) 2014-09-09

Family

ID=39854682

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0809078-5A BRPI0809078A2 (pt) 2007-04-11 2008-03-13 Memória transacional que utiliza gravações armazenadas em buffer e ordem de serialização reforçada

Country Status (7)

Country Link
US (1) US7908255B2 (pt)
EP (1) EP2150900B1 (pt)
JP (1) JP2010524133A (pt)
CN (1) CN101652761B (pt)
BR (1) BRPI0809078A2 (pt)
TW (1) TWI352312B (pt)
WO (1) WO2008127821A1 (pt)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8396937B1 (en) * 2007-04-30 2013-03-12 Oracle America, Inc. Efficient hardware scheme to support cross-cluster transactional memory
US7945741B2 (en) * 2007-07-09 2011-05-17 International Business Machines Corporation Reservation required transactions
US8065490B2 (en) * 2007-09-28 2011-11-22 Intel Corporation Hardware acceleration of strongly atomic software transactional memory
US8230409B2 (en) * 2007-09-28 2012-07-24 International Business Machines Corporation Code optimization when using multiple reader locks and a non-reader lock
US8140497B2 (en) * 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US8769514B2 (en) * 2008-06-27 2014-07-01 Microsoft Corporation Detecting race conditions with a software transactional memory system
US8073778B2 (en) * 2008-09-11 2011-12-06 Linden Research, Inc. Scalable distributed transaction manager for multi-host transactions
US10210018B2 (en) * 2008-12-24 2019-02-19 Intel Corporation Optimizing quiescence in a software transactional memory (STM) system
US9274855B2 (en) 2008-12-24 2016-03-01 Intel Corporation Optimization for safe elimination of weak atomicity overhead
US20100228929A1 (en) * 2009-03-09 2010-09-09 Microsoft Corporation Expedited completion of a transaction in stm
US8595446B2 (en) * 2009-11-25 2013-11-26 Oracle America, Inc. System and method for performing dynamic mixed mode read validation in a software transactional memory
US9477515B2 (en) 2009-12-15 2016-10-25 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8095824B2 (en) * 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8521995B2 (en) * 2009-12-15 2013-08-27 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US8443155B2 (en) * 2009-12-31 2013-05-14 Facebook, Inc. Lock-free concurrent object dictionary
JP5691246B2 (ja) * 2010-05-27 2015-04-01 富士通株式会社 データベース二重化システム、情報処理装置及びデータベース二重化方法
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8407195B2 (en) * 2011-03-07 2013-03-26 Microsoft Corporation Efficient multi-version locking for main memory databases
US9158596B2 (en) 2011-03-18 2015-10-13 Oracle International Corporation Partitioned ticket locks with semi-local spinning
US9396329B2 (en) * 2011-10-17 2016-07-19 Intel Corporation Methods and apparatus for a safe and secure software update solution against attacks from malicious or unauthorized programs to update protected secondary storage
WO2013130548A2 (en) * 2012-02-27 2013-09-06 University Of Virginia Patent Foundation Method of instruction location randomization (ilr) and related system
US9396227B2 (en) * 2012-03-29 2016-07-19 Hewlett Packard Enterprise Development Lp Controlled lock violation for data transactions
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
JP5971713B2 (ja) * 2012-09-20 2016-08-17 株式会社東芝 Icカード
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
KR20150111937A (ko) 2013-01-30 2015-10-06 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 비휘발성 메모리 기록 메커니즘
US9411533B2 (en) * 2013-05-23 2016-08-09 Netapp, Inc. Snapshots and versioning of transactional storage class memory
US9201609B2 (en) 2013-05-23 2015-12-01 Netapp, Inc. Efficient replication of changes to a byte-addressable persistent memory over a network
CN104572506B (zh) * 2013-10-18 2019-03-26 阿里巴巴集团控股有限公司 一种并发访问内存的方法及装置
CA2830605A1 (en) * 2013-10-22 2015-04-22 Ibm Canada Limited - Ibm Canada Limitee Code versioning for enabling transactional memory region promotion
WO2016115737A1 (en) 2015-01-23 2016-07-28 Hewlett-Packard Development Company, L.P. Aligned variable reclamation
CN107918620B (zh) * 2016-10-10 2022-04-19 阿里巴巴集团控股有限公司 一种数据库的写入方法及装置、电子设备
US12020242B2 (en) * 2018-08-07 2024-06-25 International Business Machines Corporation Fair transaction ordering in blockchains
US11921691B2 (en) * 2022-06-20 2024-03-05 Google Llc Low latency demultiplexer for propagating ordered data to multiple sinks

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
JP3497886B2 (ja) * 1994-05-10 2004-02-16 富士通株式会社 サーバ間データ連携装置
US6347349B1 (en) * 1998-12-28 2002-02-12 International Business Machines Corp. System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction
US6360231B1 (en) * 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
US6754737B2 (en) * 2001-12-24 2004-06-22 Hewlett-Packard Development Company, L.P. Method and apparatus to allow dynamic variation of ordering enforcement between transactions in a strongly ordered computer interconnect
WO2003060705A2 (en) * 2002-01-11 2003-07-24 Sun Microsystems, Inc. Lock-free implementation of dynamic-sized shared data structure
US7542986B2 (en) * 2002-03-26 2009-06-02 Hewlett-Packard Development Company, L.P. System and method for maintaining order for a replicated multi-unit I/O stream
US7685583B2 (en) * 2002-07-16 2010-03-23 Sun Microsystems, Inc. Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory
US7587615B2 (en) * 2003-09-12 2009-09-08 International Business Machines Corporation Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7685365B2 (en) * 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory
US7536517B2 (en) * 2005-07-29 2009-05-19 Microsoft Corporation Direct-update software transactional memory
US20070198979A1 (en) * 2006-02-22 2007-08-23 David Dice Methods and apparatus to implement parallel transactions

Also Published As

Publication number Publication date
CN101652761B (zh) 2012-12-12
EP2150900A1 (en) 2010-02-10
US7908255B2 (en) 2011-03-15
US20080256073A1 (en) 2008-10-16
WO2008127821A1 (en) 2008-10-23
EP2150900B1 (en) 2019-05-01
TW200849097A (en) 2008-12-16
JP2010524133A (ja) 2010-07-15
EP2150900A4 (en) 2011-11-02
CN101652761A (zh) 2010-02-17
TWI352312B (en) 2011-11-11

Similar Documents

Publication Publication Date Title
BRPI0809078A2 (pt) Memória transacional que utiliza gravações armazenadas em buffer e ordem de serialização reforçada
Friedman et al. A persistent lock-free queue for non-volatile memory
TWI431474B (zh) 在交換式記憶體中之平行巢狀交換
KR101203297B1 (ko) 직접 업데이트 소프트웨어 트랜잭션 메모리
US7792805B2 (en) Fine-locked transactional memory
US8086827B2 (en) Mechanism for irrevocable transactions
US8595446B2 (en) System and method for performing dynamic mixed mode read validation in a software transactional memory
US20180046401A1 (en) Efficient Copy-on-Write Transactions on Persistent Memory
US7899997B2 (en) Systems and methods for implementing key-based transactional memory conflict detection
US9268698B1 (en) Method and system for maintaining context event logs without locking in virtual machine
Feldman et al. A wait-free multi-word compare-and-swap operation
US10282230B2 (en) Fair high-throughput locking for expedited grace periods
US10929201B2 (en) Method and system for implementing generation locks
BRPI0718463A2 (pt) Ordem de comprometimento de transação de software e gerenciamento de conflito
JP2010524133A5 (pt)
US8244682B2 (en) Saving snapshot of a knowledge base without blocking
US20110078385A1 (en) System and Method for Performing Visible and Semi-Visible Read Operations In a Software Transactional Memory
US20090249357A1 (en) Systems and methods for inter process communication based on queues
US10303383B1 (en) System and method for implementing non-blocking, concurrent hash tables
Derrick et al. Verifying correctness of persistent concurrent data structures
US7904668B2 (en) Optimistic semi-static transactional memory implementations
JP6881579B2 (ja) データロードプログラム、データロード方法およびデータロード装置
Pirkelbauer et al. A portable lock-free bounded queue
BRPI0805218A2 (pt) esquema de omissão de trava por hardware hìbrida de retirada prévia-posterior
Kim et al. µsnap: Embracing traditional programming models for persistent memory through os support

Legal Events

Date Code Title Description
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE AS 5A, 6A E 7A ANUIDADES.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2343 DE 01-12-2015 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.