BR112015001476B1 - Método implementado por computador, sistema de computador e meio de armazenamento para fluxo contínuo livre de bloqueio para dados de código executável - Google Patents
Método implementado por computador, sistema de computador e meio de armazenamento para fluxo contínuo livre de bloqueio para dados de código executável Download PDFInfo
- Publication number
- BR112015001476B1 BR112015001476B1 BR112015001476-3A BR112015001476A BR112015001476B1 BR 112015001476 B1 BR112015001476 B1 BR 112015001476B1 BR 112015001476 A BR112015001476 A BR 112015001476A BR 112015001476 B1 BR112015001476 B1 BR 112015001476B1
- Authority
- BR
- Brazil
- Prior art keywords
- memory
- operational code
- code
- operational
- computer
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000000903 blocking effect Effects 0.000 title 1
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000000644 propagated effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 229940004975 interceptor Drugs 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
MÉTODO IMPLEMENTADO POR COMPUTADOR, SISTEMA DE COMPUTADOR E MEIO DE ARMAZENAMENTO PARA FLUXO CONTÍNUO LIVRE DE BLOQUEIO PARA DADOS DE CÓDIGO EXECUTÁVEL. Um desmontador que recebe instruções e desmonta as mesmas em vários códigos operacionais separados. O desmontador cria uma tabela identificando limites entre cada código operacional. Cada código operacional é gravado na memória de uma maneira código operacional por código operacional por atomicamente gravar blocos padrão de memória. Códigos operacionais e ponto de parada para depuração são anexados ao código operacional para criar um bloco completo de memória quando necessário. O bloco de memória pode ter trinta e dois ou sessenta e quatro bits, por exemplo. Códigos operacionais longos podem sobrepor dois ou mais blocos de memória. Códigos operacionais de ponto de parada para depuração podem ser anexados a uma segunda parte do código operacional longo para criar um bloco completo de memória. Um interceptador de falha de fluxo identifica quando uma página de dados solicitada não está disponível e recupera a página de dados.
Description
[0001] Uma condição de corrida ("race condition") ocorre quando comandos para ler e gravar dados são recebidos ao mesmo tempo. Isto também pode acontecer, por exemplo, quando um encadeamento está executando um pacote de dados executáveis a partir da memória ao mesmo tempo em que um encadeamento de gravação está distribuindo os dados para a memória. O resultado pode ser falha do computador, parada de programa, erros de leitura/gravação, ou outros problemas. Em uma solução, o encadeamento executando pode ser suspenso enquanto aguardando pelo encadeamento de gravação para proporcionar os dados. Entretanto, suspender um encadeamento pode causar problemas de performance para processos relacionados. Por exemplo, dezenas ou centenas encadeamentos podem estar executando para um processo no qual somente um ou alguns encadeamento acessam os dados, mas todos os encadeamentos podem ter que ser suspensos para aguardar a distribuição de dados cada vez que ocorre uma falha de fluxo.
[0002] Este Sumário é proporcionado para introduzir uma seleção de conceitos de uma forma simplificada, os quais são adicionalmente descritos abaixo na Descrição Detalhada. Este Sumário não é pretendido para identificar aspectos chave ou aspectos essenciais do assunto reivindicado, nem é pretendido para ser utilizado para limitar o escopo do assunto reivindicado.
[0003] Concretizações permitem código executável ser distribuído de uma maneira livre de bloqueio por desmontar o mesmo e ordenar as gravações junto à página de memória. Isto permite que o código executável permaneça em um estado consistente durante toda a distribuição de dados em fluxo contínuo. Devido à memória estar em um estado consistente, outros encadeamentos podem continuar a executar enquanto o código binário é gravado na memória. Isto permite maior escalabilidade e performance.
[0004] Concretizações adicionais permitem o fluxo contínuo de dados de código executável no modo do usuário, sem suspender todo o processo ou utilizar um componente do modo kernel.
[0005] Para adicionalmente esclarecer as vantagens acima e outras vantagens e aspectos de concretizações da presente invenção, uma descrição mais particular de concretizações da presente invenção será fornecida por referência aos desenhos anexos. É apreciado que estes desenhos representam somente concretizações típicas da invenção e, portanto, não são para ser considerados limitando o seu escopo. A invenção será descrita e explicada com especificidade e detalhes adicionais através do uso dos desenhos acompanhantes nos quais:
[0006] As FIGURAS 1A a 1D ilustram o ordenamento das gravações de memória com o passar do tempo de acordo com uma concretização.
[0007] A FIGURA 2 ilustra um sistema para transmitir continuamente livre de bloqueio dados de código executável de acordo com uma concretização.
[0008] A FIGURA 3 é um fluxograma de um processo ou método para transmitir continuamente dados de código executável de acordo com uma concretização.
[0009] A FIGURA 4 ilustra um exemplo de um ambiente de computação e de interoperabilidade adequado para proporcionar transmissão de fluxo contínuo livre de bloqueio de dados de código executável.
[00010] A solução livre de bloqueio descrita neste documento tira vantagem de dois aspectos de um processador moderno. Primeiro, o processador proporciona uma gravação com acesso à memória de trinta e dois bits ou de sessenta quatro bits. Isto garante que o processador irá ver todos os trinta e dois bits ou sessenta e quatro bits na memória. Em segundo lugar, o processador possui um código de operação (opcode) de exceção de interrupção de depuração de um byte. Este código operacional de interrupção de depuração permite ao processador tentar novamente a leitura e executar códigos operacionais a partir da memória sem causar que um encadeamento de chamada falhe.
[00011] Em uma concretização, o código é desmontado na memória antes das instruções se tornarem disponíveis para um processador. Esta desmontagem permite a criação de uma lista ordenada de gravações na memória consistindo de várias gravações separadas de trinta e dois bits ou de sessenta e quatro bits. Esta desmontagem e análise podem ser executadas em um cliente ou em um servidor. Executar esta operação no cliente economiza transmissões da rede ao custo de ciclos aumentados do processador, enquanto executar a operação no servidor significa maior transmissão da rede, mas requer menos operação do processador no nó cliente.
[00012] Quando a página da memória é alocada, toda a página é gravada com os códigos de exceção de um bit. Um indicador de falha de fluxo mantém uma lista de páginas e de localizações que foram gravadas ou que são inválidas.
[00013] Os códigos operacionais são gravados na memória utilizando os blocos de trinta e dois bits ou de sessenta e quatro bits iniciando no fim da página. Alternativamente, a árvore da montagem pode ser analisada para identificar códigos operacionais folha, os quais são códigos operacionais que são chamados por outros códigos operacionais. Os códigos operacionais folha podem ser identificados por uma transversal do gráfico de chamada de execução do código operacional. Estes códigos operacionais folha podem ser gravados primeiro na memória.
[00014] Para códigos operacionais que possuem trinta e dois bits ou menos (ou sessenta e quanto bits ou menos em outras concretizações), todos os códigos operacionais são gravados na memória de modo que o processador irá executar aas instruções com sucesso. Se o código operacional for maior do que trinta e dois bits (ou maior do que sessenta e quatro bits em outras concretizações), então o "fim" do código operacional é gravado primeiro. Por gravar o fim do código operacional primeiro, se o processador executar a instrução enquanto o código operacional ainda está sendo gravado, então o processador irá executar primeiro o código operacional de interrupção de depuração. Isto permite que o indicador de falha de fluxo termine a gravação do código operacional e de modo que o processador possa recuperar o código operacional. Se a gravação de trinta e dois bits (ou de sessenta e quatro bits) se estender mais do que um código operacional, então um código operacional de interrupção de depuração é gravado para permitir a nova tentativa. Se a gravação de trinta e dois bits (ou sessenta e quatro bits) já tiver sido gravada, então, o valor anterior é gravado, caso em que o código operacional permanece válido.
[00015] Por gravar os códigos operacionais desmontados espaçados por paradas para depuração, o processador irá encontrar um ponto de interrupção de depuração inválido ou código executável válido. Se o aplicativo executar um debug breakpoint inválido, então um interceptor de falha de fluxo como descrito neste documento irá interceptar a exceção antes de ela ser distribuída para o aplicativo. O interceptor de falha de fluxo aguarda até que a memória esteja válida e então tenta novamente o código operacional. O interceptor de falha de fluxo pode utilizar a tabela de páginas e códigos operacionais gravados para diferenciar entre um ponto de parada que ocorre como parte de falha do fluxo, o que deve ser recuperado, ou um utilizado por um depurador ou pelo aplicativo, o qual deve ser passado de volta para o aplicativo. No caso de código executável válido, o aplicativo executa o código com sucesso. Como resultado, o indicador de falha de fluxo não precisa suspender todos os encadeamentos no processo quando distribuindo os resultados de uma falha de fluxo.
[00016] As FIGURAS 1A a 1D ilustram o ordenamento das gravações de memória com o passar do tempo de acordo com uma concretização. O código de programa utilizado neste exemplo compreende as instruções: 0xAB 0xE9 0x00 0xFE 0x70 0x08 Um desmontador separa este código nos seguintes códigos operacionais: (1): 0xAB (2): 0xE9 0x00 0xFE 0x70 0x08 (3):
[00017] O primeiro código operacional tem o comprimento de um byte, o segundo código operacional tem o comprimento de cinco bytes, e códigos operacionais adicionais de vários comprimentos são identificados de uma maneira similar.
[00018] A memória 101 compreende vários blocos de trinta e dois bits 102 até 104. Em outras concretizações, os blocos de memória podem ter sessenta e quatro bits ou algum outro tamanho. A FIGURA 1A ilustra um estado original no qual toda a memória 101 é preenchida com códigos operacionais de ponto de parada para depuração com um byte 0xCC. Se um encadeamento ler instruções a partir da memória 101 nesta hora, o código operacional de ponto de parada para depuração irá causar que o indicador de fluxo tente carregar código para a memória 101 e então o encadeamento irá tentar ler o código novamente.
[00019] Na FIGURA 1B, o primeiro código operacional 0xAB foi gravado junto ao bloco de trinta e dois bits 102b. o primeiro código operacional de um byte 0xAB é gravado na memória 101 com uma gravação atômica que substitui o primeiro 0xCC. A operação de gravação precisa gravar trinta e dois bits de dados. Devido à instrução ter sido desmontada antes da gravação na memória, a operação de gravação rastreia quais bytes estão sendo gravados e sabe como preencher os trinta e quatro bits restantes do bloco 102b com 0xCC para encher todo o bloco de trinta e dois bits. Se o processador executar a primeira instrução 0xAB, ele terá sucesso. Entretanto, se o processador tentar executar a segunda instrução nesta hora, o ponto de parada para depuração 0xCC será lido e um mecanismo de nova tentativa de fala de fluxo irá assumir o controle.
[00020] O indicador de falha e fluxo agora precisa gravar o segundo código operacional (isto é, 0xE9 0x00 0xFE 0X70 0x08). O indicador de falha de fluxo sabe que a instrução anterior (0xAB) foi gravada e sabe como os blocos 102b até 104b foram gravados. O indicador de falha de fluxo também sabe o comprimento do próximo código operacional e como ele precisa ser gravado na memória 101. Em particular, o indicador de falha de fluxo sabe que o segundo código operacional de cinco bytes será gravado junto aos blocos 102b e 103b após o código operacional 0xAB. O indicador de falha de fluxo também determina que o segundo código operacional não irá encaixar dentro do espaço restante em um único bloco de trinta e dois bits 102b. Portanto, o segundo código operacional deve ser dividido entre blocos de memória 102b e 103b.
[00021] Como ilustrado na FIGURA 1C, a segunda parte do código operacional (isto é, 0x70 0x08) é gravada junto ao bloco 103c - preenchido com pontos de parada para depuração 0x00 para preencher trinta e dois bits - antes da gravação da primeira parte do código operacional. Por gravar a segunda parte do código operacional primeiro, se o processador executar o código operacional após o bloco 0xAB, então o processador irá incorrer em uma falha de depuração (0xCC) e não irá tentar executar o coletor de lixo.
[00022] Após a segunda parte do código operacional ser gravada junto ao bloco 103c, então a primeira parte (isto é, 0xE9 0x00 0xFE) pode ser gravada junto à memória 101. Como ilustrado na FIGURA 1D, esta primeira parte é gravada com o primeiro código operacional 0xAB na posição que ele foi anteriormente designado no bloco 102d. Nesta hora, o processador estará apto a executar com sucesso ambas as instruções. Este processo de instruções de gravação na memória 101 pode ser aplicado código operacional por código operacional até que toda a página esteja residente.
[00023] A FIGURA 2 ilustra um sistema para transmissão continua livre de bloqueio de dados de código executável de acordo com uma concretização. Um aplicativo executando no sistema operacional 201 tenta ler uma página de dados 202 a partir da memória. Quando uma página não residente de memória executável é chamada, isto ativa a exceção do sistema operacional 203, a qual notifica ao sistema operacional 201 que esta chamada falhou. O sistema operacional 201 envia um código de retorno de falha de leitura para o interceptador de falha de fluxo 204 antes do aplicativo ver a falha. O interceptador de falha de fluxo 204 consulta a página em sua base de dados e determina que ele precisa recuperar a página. O interceptador de falha de fluxo 204 faz uma chamada de rede para obter a página a partir do servidor de rede 205, por exemplo, e altera o acesso à memória da página de modo que ele pode gravar os dados junto à página de dados 202.
[00024] Nos sistemas existentes, o interceptador de falha de fluxo 204 precisaria suspender o processo que solicitou os dados. Se o processo não for suspenso, então outro encadeamento poderia executar dados na página 202 à medida que ela estava sendo gravada na memória e o processo falharia quando ele tentasse executar dados parciais. Após a página 202 ter sido gravada na memória, então o processo poderia ser reiniciado com o interceptador de falha de fluxo alterando a exceção do sistema operacional para "sucesso" e o aplicativo continuando a executar.
[00025] Nos sistemas existentes, esta etapa de suspender todo o processo é necessária devido ao acesso de alteração junto à página de dados 202 e aos dados de gravação para a mesma não poderem ser realizados em uma única etapa. Isto significa que dois encadeamentos no processo não podem estar executando quando você está servindo a uma falha de fluxo.
[00026] Os sistemas existentes são melhorados neste documento pela adição do desmontador 206 e pelo rastreador de página gravada/não gravada 207. O desmontador 206 é responsável por pegar o código binário retornado e desmontar o mesmo. O desmontador 206 retorna uma lista de deslocamentos que contêm os limites de cada código operacional. Como citado no exemplo da FIGURA 1, cada código operacional pode ter o comprimento de um ou mais bytes. O rastreador de página gravada/não gravada 207 contém a lista de deslocamentos gerados pelo desmontador 206 bem como uma lista destes deslocamentos que foram confirmados.
[00027] O processo não precisa ser suspenso quando utilizando o desmontador 206 e o rastreador de página gravada/não gravada 207. Ao invés disso, após o código solicitado ser retornado para o interceptador de falha de fluxo 204 a partir do servidor 205, o desmontador é chamado para gerar o mapa de deslocamentos. O mapa de deslocamentos é então armazenado pelo interceptador de falha de fluxo 204, o qual começa a gravar códigos operacionais junto à página de dados 202 de uma maneira de código operacional por código operacional como descrito acima. O interceptador de falha de fluxo 204 consulta este mapa de deslocamentos para determinar o limite de cada código operacional. O interceptador de falha de fluxo 204 pode gravar os códigos operacionais junto à página de dados 202 em qualquer ordem apropriada iniciando com o começo ou com o fim da lista de códigos operacionais.
[00028] Se ocorrer qualquer disputa, tal como se o processador executar uma instrução parcialmente preenchida, então o mecanismo de falha do sistema operacional 203 irá ser ativado. Isto irá causar que o interceptador de falha de fluxo 204 seja invocado pelo sistema operacional 201. O interceptador de falha de fluxo 204 consulta o rastreador de página gravada/não gravada 207 e grava o próprio código operacional junto à página de dados 202 ou aguarda até que o encadeamento termina a gravação de dados. O interceptador de falha de fluxo 204 então recupera a exceção.
[00029] A FIGURA 3 é um fluxograma de um processo ou método para transmitir continuamente dados de código executável de acordo com uma concretização. Na etapa 301, um processador recebe instruções compreendendo vários códigos operacionais. Cada um dos códigos operacionais pode compreender um ou mais bytes de dados. Na etapa 302, um desmontador é utilizado para desmontar as instruções em códigos operacionais separados. Na etapa 303, é criada uma tabela que identifica os limites entre cada código operacional. A tabela pode ser armazenada em um rastreador de página gravada/não gravada, por exemplo. Na etapa 304, cada código operacional é gravado na memória de uma maneira código operacional por código operacional por atomicamente gravar blocos padrão da memória. Os códigos operacionais podem ser gravados na memória por um interceptador de falha de fluxo, por exemplo.
[00030] Em algumas concretizações, códigos operacionais de ponto de parada para depuração podem ser gravados em todas as localizações de memória para inicializar a memória. Quando os códigos operacionais são gravados na memória, os códigos operacionais de ponto de parada para depuração podem ser anexados ao código operacional para criar um bloco padrão completo de memória. O bloco padrão de memória pode ter trinta e dois bits ou sessenta e quatro bits, por exemplo.
[00031] Quando um código operacional longo irá sobrepor dois ou mais blocos padrão de memória, então ele pode ser dividido em duas partes. A segunda parte do código operacional longo é gravada em um segundo bloco de memória, e então, a primeira parte do código operacional longo é gravada em um primeiro bloco de memória. Gravar o código operacional longo desta maneira irá garantir que um ponto de parada para depuração será encontrado se uma localização de memória for lida antes de todo o código operacional ser gravado. Os códigos operacionais de ponto de parada para depuração podem ser anexados à segunda parte do código operacional longo para criar um bloco padrão completo de memória. Um código operacional anterior pode ser gravado junto com a primeira parte do código operacional longo no primeiro bloco da memória.
[00032] Será entendido que as etapas 301 até 305 do processo ilustrado na FIGURA 3 podem ser executadas simultaneamente e/ou sequencialmente. Será adicionalmente entendido que cada etapa pode ser executada em qualquer ordem e pode ser executada uma vez ou repetidamente.
[00033] A FIGURA 4 ilustra um exemplo de um ambiente adequado de computador e de interoperabilidade 400 no qual os exemplos das FIGURAS 1 até 3 podem ser implementados para proporcionar fluxo contínuo livre de bloqueio de dados de código executável. O ambiente de sistema de computação 400 é somente um exemplo de um ambiente de computação adequado e não é pretendido para sugerir qualquer limitação quanto ao escopo de uso ou quanto à funcionalidade da invenção. A invenção é operacional com vários outros ambientes ou configurações de sistema de computação de propósito geral ou de propósito especial. Exemplos bem conhecidos de sistemas, ambientes e/ou de configurações de sistemas de computação que podem ser adequados para uso com a invenção incluem, mas não estão limitados a: computadores pessoais, computadores servidores, dispositivo portáteis ou laptop, dispositivos tablet, sistemas multiprocessador, sistemas baseados em microprocessador, decodificadores de sinal, eletroeletrônicos programáveis, PCs de rede, minicomputadores, computadores de grande porte, ambiente de computação distribuída que inclui qualquer um dos sistemas ou dispositivos acima, dentre outros.
[00034] A invenção pode ser descrita no contexto geral de instruções executáveis por computador, tais como módulos de programa, sendo executados por um computador. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados, e assim por diante, que executam tarefas particulares ou implementam tipos particulares de dados abstratos. A invenção também pode ser praticada em ambientes de computação distribuída onde as tarefas são executadas por dispositivos de processamento remotos que estão ligados através de uma rede de comunicações. Em um ambiente de computação distribuída, os módulos de programa podem estar localizados em meios de armazenamento do computador local e/ou remotos incluindo dispositivos de armazenamento em memória.
[00035] Com referência à FIGURA 4, um sistema ilustrativo para implementar vários aspectos da invenção pode incluir um dispositivo de computação de propósito geral na forma de um computador 400. Componentes podem incluir, mas não estão limitados a vários componentes de hardware, tais como a unidade de processamento 401, o armazenamento de dados 402, tal como uma memória do sistema, e o barramento do sistema 403 que acopla vários componentes do sistema incluindo o armazenamento de dados 402 com a unidade de processamento 401. O barramento do sistema 403 pode ser qualquer um dentre vários tipos de estruturas de barramento incluindo um barramento de memória ou controlador de memória, um barramento periférico, e um barramento local utilizando qualquer uma dentre várias arquiteturas de barramento. A título de exemplo e não de limitação, tais arquiteturas incluem o barramento da Arquitetura Padrão da Indústria (ISA), o barramento aprimorado ISA (EISA), o barramento da Arquitetura de Micro Canal (MCA), o barramento local da Associação de Padrões de Eletrônica e Vídeo (VESA), e o barramento da Interconexão de Componentes Periféricos (PCI) também conhecido como barramento Mezanino.
[00036] O computador 400 tipicamente inclui vários meios legíveis por computador 404. Os meios legíveis por computador 404 podem ser qualquer meio disponível que possa ser acessado pelo computador 400 e inclui tanto meios voláteis como não voláteis e meios removíveis e não removíveis, mas exclui sinais propagados. A título de exemplo e não de limitação, os meios legíveis por computador 404 podem compreender meio de armazenamento do computador e meio de comunicação. O meios de armazenamento do computador inclui meio volátil e não volátil, removível e não removível, implementado em qualquer método ou tecnologia para armazenamento de informação tal como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. O meio de armazenamento do computador inclui, mas não está limitado a RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento em disco ótico, cassetes magnéticos, fita magnética, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que possa ser utilizado para armazenar as informações desejadas e que possa ser acessado pelo computador 400. O meio de comunicação tipicamente incorpora instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulado tal como uma onda portadora ou outro mecanismo de transporte e inclui qualquer meio de distribuição de informação. O termo "sinal de dados modulado" significa um sinal que tem uma ou mais de suas características estabelecidas ou alteradas de uma maneira tal a codificar informação no sinal. A título de exemplo e não de limitação, o meio de comunicação inclui meio com uso de fios tal como rede com uso de fios ou conexão com fios direta, e meio sem uso de fios tal como meio acústico, RF, infravermelho e outros meios sem uso de fios. Combinações de qualquer um dos ditos acima também estão incluídas dentro do escopo de meio legível por computador. O meio legível por computador pode ser incorporado como um produto de programa de computador, tal como software armazenado no meio de armazenamento do computador.
[00037] O armazenamento de dados ou memória do sistema 402 inclui meios de armazenamento do computador na forma de memória volátil e/ou não volátil tal como memória somente para leitura (ROM) e memória de acesso aleatório (RAM). A memória 402 ou meio legível por computador 404 pode ser utilizado para armazenar páginas de dados, listas de limite de código operacional, códigos operacionais, dentre outros. Um sistema básico de entrada/saída (BIOS), contendo as rotinas básicas que ajudam a transferir informações entre os elementos dentro do computador 400, tal como durante a inicialização, tipicamente é armazenado na ROM. A RAM tipicamente contém dados e/ou módulos de programa que são imediatamente acessíveis e/ou estão sendo atualmente operados pela unidade de processamento 401. A título de exemplo e não de limitação, o armazenamento de dados 402 mantém um sistema operacional, programas aplicativos e outros módulos de programa e dados de programa. Um sistema operacional executando na unidade de processamento 402 pode suportar funções tais como exceção de sistema operacional 203, interceptador de falha de fluxo 204, desmontador 206, e/ou rastreador de página gravada/não gravada 207 (FIGURA 2).
[00038] O armazenamento de dados 402 também pode incluir outros meios de armazenamento do computador removíveis/não removíveis, voláteis/não voláteis. Somente a título de exemplo, o armazenamento de dados 402 pode ser uma unidade de disco rígido que lê ou grava a partir/junto ao meio magnético não removível, não volátil, uma unidade de disco magnético que lê/grava a partir/junto a um disco magnético removível, não volátil, e uma unidade de disco ótico que lê e/ou grava a partir/ junto a um disco ótico removível, não volátil, tal como um CD ROM ou outro meio ótico. Outros meios de armazenamento do computador removíveis/não removíveis, voláteis/não voláteis incluem, mas não estão limitados a cassetes de fita magnética, cartões de memória flash, discos versáteis digitais, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido, dentre outros. As unidades e seu meio de armazenamento do computador associado, descritos acima e ilustrados na FIGURA 4, proporcionam armazenamento de instruções legíveis por computador, de estruturas de dados, de módulos de programa e de outros dados para o computador 400.
[00039] O usuário pode entrar com comandos e informação através de uma interface com o usuário 405 ou de outros dispositivos de entrada tais como um tablet, digitalizador eletrônico, um microfone, um teclado, e/ou dispositivo de apontamento, normalmente referido como mouse, trackball ou teclado sensível ao toque. Outros dispositivos de entrada podem incluir um joystick, controle de jogo, antena de satélite, scanner, dentre outros. Adicionalmente, entradas de voz, entradas de gesto utilizando mãos ou dedos, ou outra interface com o usuário natural (NUI) também podem ser utilizados com os dispositivos de entrada apropriados, tais como microfone, câmera, tablet, teclado sensível ao toque, luva, ou outro sensor. Estes e outros dispositivos de entrada frequentemente são conectados com a unidade de processamento 401 através de uma interface de entrada do usuário 405 que é acoplada com o barramento do sistema 403, mas podem ser conectados por outra interface ou estruturas de barramento, tal como porta paralela, porta de jogo ou um barramento serial universal (USB). Um monitor 406 ou outro tipo de dispositivo de vídeo também é conectado com o barramento do sistema 403 via uma interface, tal como uma interface de vídeo. O monitor 406 também pode ser integrado com um painel de tela sensível ao toque ou coisa parecida. Observe que o monitor e/ou o painel de tela sensível ao toque pode ser fisicamente acoplado com um invólucro no qual o dispositivo de computação 400 está incorporado, tal como em um computador pessoal do tipo tablet. Em adição, computadores tal como o dispositivo de computação 400 também podem incluir ouros dispositivos periféricos de saída tais como alto-falantes e impressora, os quais podem ser conectados através de uma interface de periférico de saída ou coisa parecida.
[00040] O computador 400 pode operar em um ambiente em rede ou em nuvem utilizando conexões lógicas 407 com um ou mais dispositivos remotos, tal como um computador remoto. O computador remoto pode ser um computador pessoal, um servidor, um roteador, um PC de rede, um dispositivo par ou outro nó comum de rede, e tipicamente inclui vários ou todos os elementos descritos acima em relação ao computador 400. As conexões lógicas representadas na FIGURA 4 incluem uma ou mais redes de área local (LAN) e uma ou mais redes de longa distância (WAN), mas também podem incluir outras redes. Tais ambiente em rede são normais em escritórios, redes de computadores de grandes empresas, intranets e na Internet.
[00041] Quando utilizado em um ambiente de computação em rede ou em nuvem, o computador 400 pode ser conectado com uma rede pública ou privada através de uma interface ou adaptador de rede 407. A interface de rede 407 pode proporcionar uma conexão com um dispositivo remoto, tal como um servidor de rede 205 (FIGURA 2). Em algumas concretizações, um modem ou outro dispositivo para estabelecer comunicações através da rede. O modem, o qual pode ser interno ou externo, pode ser conectado com o barramento do sistema 403 bia a interface de rede 407 ou outro mecanismo apropriado. Um componente de interoperabilidade sem uso de fios tal como compreendendo uma interface e antena, pode ser acoplado através de um dispositivo adequado tal como um ponto de acesso ou computador par, com uma rede. Em um ambiente em rede, os módulos de programa representados em relação ao computador 400, ou partes dos mesmos, podem ser armazenados no dispositivo de armazenamento em memória remoto. Pode ser apreciado que as conexões de rede apresentadas são ilustrativas e outros dispositivos para estabelecer uma ligação de comunicação entre os computadores pode ser utilizado.
[00042] Apesar de o assunto ter sido descrito em linguagem específica para aspectos estruturais e/ou atos metodológicos, é para ser entendido que o assunto definido nas concretizações anexas não está necessariamente limitado aos aspectos específicos ou atos descritos acima. Ao invés disso, os aspectos e atos específicos descritos acima são revelados como formas ilustrativas para implementar as concretizações.
Claims (13)
1. Método implementado por computador caracterizado pelo fato de que compreende as etapas de: receber (301) instruções compreendendo uma pluralidade de códigos operacionais, cada código operacional compreendendo um ou mais bytes de dados; desmontar (302) as instruções em códigos operacionais separados; criar (303) uma tabela identificando os limites entre cada código operacional; gravar códigos operacionais de ponto de parada para depuração em todas as localizações de memória para inicializar a memória; anexar (305) códigos operacionais de ponto de parada para depuração a um código operacional para criar um bloco padrão completo de memória (101); e gravar (304) cada código operacional em memória (101) de uma maneira código operacional por código operacional ao atomicamente gravar blocos padrão de comprimento de trinta e dois bits ou sessenta e quatro bits (102-104) de memória (101).
2. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende: identificar quando um código operacional longo irá sobrepor dois ou mais blocos padrão de memória; gravar uma segunda porção do código operacional longo em um segundo bloco de memória; e gravar uma primeira porção do código operacional longo em um primeiro bloco de memória.
3. Método implementado por computador, de acordo com a reivindicação 2, caracterizado pelo fato de que ainda compreende: anexar (305) códigos operacionais de ponto de parada para depuração à segunda porção do código operacional longo para criar um bloco padrão completo de memória.
4. Método implementado por computador, de acordo com a reivindicação 3, caracterizado pelo fato de que ainda compreende: gravar um código operacional anterior e a primeira porção do código operacional longo no primeiro bloco de memória.
5. Sistema de computador caracterizado pelo fato de que compreende: um processador; memória de sistema (402); um ou mais meios de armazenamento legíveis por computador tendo um método para transmissão contínua de código executável, o processador operando para: receber (301) instruções compreendendo uma pluralidade de códigos operacionais, cada código operacional compreendendo um ou mais bytes de dados; desmontar (302) as instruções em códigos operacionais separados; criar (303) uma tabela identificando os limites entre cada código operacional; gravar códigos operacionais de ponto de parada para depuração em todas as localizações de memória para inicializar a memória; gravar (304) cada código operacional em memória (101) de uma maneira código operacional por código operacional ao atomicamente gravar blocos padrão de comprimento de trinta e dois bits ou sessenta e quatro bits (102104) de memória (101); e anexar (305) códigos operacionais de ponto de parada para depuração a um código operacional para criar um bloco padrão completo de memória (101).
6. Sistema de computador, de acordo com a reivindicação 5, caracterizado pelo fato de que o processador ainda operar para: identificar quando um código operacional longo irá sobrepor dois ou mais blocos padrão de memória; gravar uma segunda porção do código operacional longo em um segundo bloco de memória; e gravar uma primeira porção do código operacional longo em um primeiro bloco de memória.
7. Sistema de computador, de acordo com a reivindicação 6, caracterizado pelo fato de que o processador ainda opera para: anexar (305) códigos operacionais de ponto de parada para depuração à segunda porção do código operacional longo para criar um bloco padrão completo de memória.
8. Sistema de computador, de acordo com a reivindicação 6, caracterizado pelo fato de que o processador ainda operar para: gravar um código operacional anterior e a primeira porção do código operacional longo no primeiro bloco de memória.
9. Sistema de computador, de acordo com a reivindicação 5, caracterizado pelo fato de que ainda compreende: um interceptor de falha de fluxo operando para identificar quando uma página de dados solicitada não está disponível; e recuperar a página de dados a partir de uma fonte remota.
10. Sistema de computador, de acordo com a reivindicação 5, caracterizado pelo fato de que ainda compreende: um desmontador operado para desmontar as instruções em códigos operacionais separados.
11. Sistema de computador, de acordo com a reivindicação 5, caracterizado pelo fato de que ainda compreende: um rastreador de página mantendo a tabela que identifica os limites entre cada código operacional.
12. Meio de armazenamento legível por computador que exclui sinais propagados, o Meio de armazenamento legível por computador armazenando um método para transmissão contínua de dados de código executável, caracterizado pelo fato de que o método compreende: receber uma falha indicando que uma página de dados não está disponível; solicitar instruções incluindo a página de dados; receber (301) as instruções a partir de uma fonte remota, as instruções compreendendo uma pluralidade de códigos operacionais, cada código operacional compreendendo um ou mais bytes de dados; desmontar (302) as instruções em códigos operacionais separados; criar (303) uma tabela identificando os limites entre cada código operacional; gravar códigos operacionais de ponto de parada para depuração em todas as localizações de memória para inicializar a memória; identificar quando um código operacional longo irá sobrepor dois ou mais blocos de memória padrão; gravar (304) cada código operacional em memória (101) de uma maneira código operacional por código operacional ao atomicamente gravar blocos padrão de comprimento de trinta e dois bits ou sessenta e quatro bits (102-104) de memória (101); gravar uma segunda porção do código operacional longo em um segundo bloco de memória; e gravar uma primeira porção do código operacional longo em um primeiro bloco de memória.
13. Meio de armazenamento legível por computador, de acordo com a reivindicação 12, caracterizado pelo fato de que o método ainda compreende: anexar (305) códigos operacionais de ponto de parada para depuração a um código operacional para criar um bloco padrão completo de memória.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/560,216 | 2012-07-27 | ||
US13/560,216 US9436474B2 (en) | 2012-07-27 | 2012-07-27 | Lock free streaming of executable code data |
US2014018812 | 2014-01-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112015001476A2 BR112015001476A2 (pt) | 2017-07-04 |
BR112015001476B1 true BR112015001476B1 (pt) | 2022-06-28 |
Family
ID=48985821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112015001476-3A BR112015001476B1 (pt) | 2012-07-27 | 2013-07-26 | Método implementado por computador, sistema de computador e meio de armazenamento para fluxo contínuo livre de bloqueio para dados de código executável |
Country Status (11)
Country | Link |
---|---|
US (2) | US9436474B2 (pt) |
EP (1) | EP2877918B1 (pt) |
JP (1) | JP6328632B2 (pt) |
KR (1) | KR102042304B1 (pt) |
CN (1) | CN104508626B (pt) |
AU (2) | AU2013295686B2 (pt) |
BR (1) | BR112015001476B1 (pt) |
CA (1) | CA2878558C (pt) |
MX (1) | MX347111B (pt) |
RU (1) | RU2639235C2 (pt) |
WO (1) | WO2014018812A1 (pt) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9747189B2 (en) | 2015-11-12 | 2017-08-29 | International Business Machines Corporation | Breakpoint for predicted tuple processing time in a streaming environment |
CN107797821B (zh) * | 2016-09-05 | 2021-10-08 | 上海宝存信息科技有限公司 | 重试读取方法以及使用该方法的装置 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768575A (en) * | 1989-02-24 | 1998-06-16 | Advanced Micro Devices, Inc. | Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions |
JPH0395629A (ja) | 1989-09-08 | 1991-04-22 | Fujitsu Ltd | データ処理装置 |
JPH03216734A (ja) * | 1990-01-22 | 1991-09-24 | Hitachi Micro Comput Eng Ltd | データ処理方法及び中央処理装置 |
JPH05312838A (ja) * | 1992-05-12 | 1993-11-26 | Iwatsu Electric Co Ltd | ロジック・アナライザ |
GB9412434D0 (en) * | 1994-06-21 | 1994-08-10 | Inmos Ltd | Computer instruction compression |
US6009508A (en) * | 1994-06-21 | 1999-12-28 | Sgs-Thomson Microelectronics Limited | System and method for addressing plurality of data values with a single address in a multi-value store on FIFO basis |
CN101211255B (zh) * | 1994-12-02 | 2012-07-04 | 英特尔公司 | 对复合操作数进行压缩操作的处理器、设备和计算系统 |
US6212574B1 (en) | 1997-04-04 | 2001-04-03 | Microsoft Corporation | User mode proxy of kernel mode operations in a computer operating system |
US5946484A (en) * | 1997-05-08 | 1999-08-31 | The Source Recovery Company, Llc | Method of recovering source code from object code |
US6061772A (en) * | 1997-06-30 | 2000-05-09 | Sun Microsystems, Inc. | Split write data processing mechanism for memory controllers utilizing inactive periods during write data processing for other transactions |
US6282698B1 (en) * | 1998-02-09 | 2001-08-28 | Lucent Technologies Inc. | Detecting similarities in Java sources from bytecodes |
US6119115A (en) | 1998-03-12 | 2000-09-12 | Microsoft Corporation | Method and computer program product for reducing lock contention in a multiple instruction execution stream processing environment |
EP0955578A1 (en) * | 1998-05-04 | 1999-11-10 | International Business Machines Corporation | Method and device for carrying out a function assigned to an instruction code |
US6077312A (en) * | 1998-05-06 | 2000-06-20 | International Business Machines Corporation | Apparatus, program product and method of debugging utilizing a context sensitive breakpoint |
US6253309B1 (en) | 1998-09-21 | 2001-06-26 | Advanced Micro Devices, Inc. | Forcing regularity into a CISC instruction set by padding instructions |
US6397273B2 (en) | 1998-12-18 | 2002-05-28 | Emc Corporation | System having an enhanced parity mechanism in a data assembler/disassembler for use in a pipeline of a host-storage system interface to global memory |
US6408382B1 (en) * | 1999-10-21 | 2002-06-18 | Bops, Inc. | Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture |
US20030023960A1 (en) * | 2001-07-25 | 2003-01-30 | Shoab Khan | Microprocessor instruction format using combination opcodes and destination prefixes |
US7444500B1 (en) | 2000-08-14 | 2008-10-28 | General Software, Inc. | Method for executing a 32-bit flat address program during a system management mode interrupt |
US6708326B1 (en) * | 2000-11-10 | 2004-03-16 | International Business Machines Corporation | Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence |
US20040059641A1 (en) * | 2002-06-25 | 2004-03-25 | Lucas Brown | System and method for creating user selected customized digital data compilations |
US7917734B2 (en) | 2003-06-30 | 2011-03-29 | Intel Corporation | Determining length of instruction with multiple byte escape code based on information from other than opcode byte |
US7581082B2 (en) | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
US7506206B2 (en) * | 2005-06-07 | 2009-03-17 | Atmel Corporation | Mechanism for providing program breakpoints in a microcontroller with flash program memory |
US20070006189A1 (en) * | 2005-06-30 | 2007-01-04 | Intel Corporation | Apparatus, system, and method of detecting modification in a self modifying code |
US7761864B2 (en) * | 2005-08-09 | 2010-07-20 | Intermec Ip Corp. | Method, apparatus and article to load new instructions on processor based devices, for example, automatic data collection devices |
US20070079177A1 (en) * | 2005-09-30 | 2007-04-05 | Charles Spirakis | Process monitoring and diagnosis apparatus, systems, and methods |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
US20070168736A1 (en) * | 2005-12-19 | 2007-07-19 | Ottavi Robert P | Breakpoint groups |
US8584109B2 (en) * | 2006-10-27 | 2013-11-12 | Microsoft Corporation | Virtualization for diversified tamper resistance |
US8037459B2 (en) * | 2007-07-31 | 2011-10-11 | International Business Machines Corporation | Recovery from nested exceptions in an instrumentation routine |
US8185783B2 (en) | 2007-11-22 | 2012-05-22 | Microsoft Corporation | Split user-mode/kernel-mode device driver architecture |
CN102077195A (zh) * | 2008-05-08 | 2011-05-25 | Mips技术公司 | 具有紧凑指令集架构的微处理器 |
US8423961B2 (en) | 2008-06-06 | 2013-04-16 | Microsoft Corporation | Simulating operations through out-of-process execution |
US8103912B2 (en) * | 2008-09-07 | 2012-01-24 | EADS North America, Inc. | Sequencer and test system including the sequencer |
KR101581001B1 (ko) * | 2009-03-30 | 2015-12-30 | 삼성전자주식회사 | 프로그램의 동적 분석 방법 및 그 장치 |
US9274796B2 (en) * | 2009-05-11 | 2016-03-01 | Arm Finance Overseas Limited | Variable register and immediate field encoding in an instruction set architecture |
CN101853148B (zh) | 2009-05-19 | 2014-04-23 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
US20120079459A1 (en) * | 2010-09-29 | 2012-03-29 | International Business Machines Corporation | Tracing multiple threads via breakpoints |
US9176738B2 (en) * | 2011-01-12 | 2015-11-03 | Advanced Micro Devices, Inc. | Method and apparatus for fast decoding and enhancing execution speed of an instruction |
US9053233B2 (en) * | 2011-08-15 | 2015-06-09 | Freescale Semiconductor, Inc. | Method and device for controlling debug event resources |
GB2501299A (en) * | 2012-04-19 | 2013-10-23 | Ibm | Analysing computer program instructions to determine if an instruction can be replaced with a trap or break point. |
US8990627B2 (en) * | 2012-05-23 | 2015-03-24 | Red Hat, Inc. | Leveraging page fault and page reclaim capabilities in debugging |
US9342284B2 (en) * | 2013-09-27 | 2016-05-17 | Intel Corporation | Optimization of instructions to reduce memory access violations |
US9619346B2 (en) * | 2013-10-31 | 2017-04-11 | Assured Information Security, Inc. | Virtual machine introspection facilities |
-
2012
- 2012-07-27 US US13/560,216 patent/US9436474B2/en active Active
-
2013
- 2013-07-26 EP EP13748402.8A patent/EP2877918B1/en active Active
- 2013-07-26 MX MX2015001127A patent/MX347111B/es active IP Right Grant
- 2013-07-26 WO PCT/US2013/052153 patent/WO2014018812A1/en active Application Filing
- 2013-07-26 CN CN201380039991.8A patent/CN104508626B/zh active Active
- 2013-07-26 RU RU2015102341A patent/RU2639235C2/ru active
- 2013-07-26 AU AU2013295686A patent/AU2013295686B2/en active Active
- 2013-07-26 CA CA2878558A patent/CA2878558C/en active Active
- 2013-07-26 KR KR1020157002060A patent/KR102042304B1/ko active IP Right Grant
- 2013-07-26 BR BR112015001476-3A patent/BR112015001476B1/pt active IP Right Grant
- 2013-07-26 JP JP2015524457A patent/JP6328632B2/ja active Active
-
2016
- 2016-09-06 US US15/257,794 patent/US9841976B2/en active Active
-
2018
- 2018-07-13 AU AU2018205196A patent/AU2018205196B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP2877918B1 (en) | 2022-02-16 |
CA2878558C (en) | 2020-11-03 |
WO2014018812A1 (en) | 2014-01-30 |
CN104508626B (zh) | 2017-06-13 |
AU2018205196A1 (en) | 2018-08-02 |
US20160371083A1 (en) | 2016-12-22 |
KR102042304B1 (ko) | 2019-11-07 |
AU2013295686A1 (en) | 2015-01-29 |
JP2015524591A (ja) | 2015-08-24 |
CA2878558A1 (en) | 2014-01-30 |
AU2018205196B2 (en) | 2019-07-25 |
RU2639235C2 (ru) | 2017-12-20 |
JP6328632B2 (ja) | 2018-05-23 |
MX2015001127A (es) | 2015-04-08 |
EP2877918A1 (en) | 2015-06-03 |
AU2013295686B2 (en) | 2018-04-19 |
RU2015102341A (ru) | 2016-08-10 |
US9436474B2 (en) | 2016-09-06 |
US20140032883A1 (en) | 2014-01-30 |
KR20150040277A (ko) | 2015-04-14 |
US9841976B2 (en) | 2017-12-12 |
BR112015001476A2 (pt) | 2017-07-04 |
MX347111B (es) | 2017-04-12 |
CN104508626A (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021523444A (ja) | クロスレベル追跡マッピングによる実行制御 | |
US8813038B2 (en) | Data race detection | |
US8281318B2 (en) | Systems and methods for inter process communication based on queues | |
BR112015019099B1 (pt) | Método implementado por computador para gerar uma pilha de chamadas assíncronas e sistema de computador | |
BR112014031353B1 (pt) | Facilidade de assistência de processador | |
US10180799B2 (en) | Efficient retrieval of memory values during trace replay | |
Hayden et al. | Kitsune: Efficient, general-purpose dynamic software updating for C | |
CN110168508B (zh) | 监测断点出现的存储器位置的方法、计算机系统和介质 | |
US11366740B2 (en) | Debugging shared memory errors | |
KR20210021464A (ko) | 예약된 태그 필드 비트를 사용하는 캐시 기반 트레이스 리플레이 중단점 | |
US10853224B2 (en) | Indexing and searching a time-travel trace for arbitrary length/arbitrary alignment values | |
US20230124327A1 (en) | Cross-thread memory indexing in time-travel debugging traces | |
Jiang et al. | DRDDR: a lightweight method to detect data races in Linux kernel | |
BR112015001476B1 (pt) | Método implementado por computador, sistema de computador e meio de armazenamento para fluxo contínuo livre de bloqueio para dados de código executável | |
Hirt et al. | Oracle JRockit: The Definitive Guide | |
US11068378B2 (en) | Memory value exposure in time-travel debugging traces | |
Altekar et al. | Dcr: Replay debugging for the datacenter | |
US20200142807A1 (en) | Debugger with hardware transactional memory | |
Kwon et al. | Lightweight migration for web applications with framework separation | |
Li | FACULTY OF SCIENCE DEPARTMENT OF COMPUING |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B25A | Requested transfer of rights approved |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US) |
|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B06A | Patent application procedure suspended [chapter 6.1 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/07/2013, OBSERVADAS AS CONDICOES LEGAIS |