BR112017001965B1 - Método de alocação de memória, aparelho e sistema de computador - Google Patents

Método de alocação de memória, aparelho e sistema de computador Download PDF

Info

Publication number
BR112017001965B1
BR112017001965B1 BR112017001965-5A BR112017001965A BR112017001965B1 BR 112017001965 B1 BR112017001965 B1 BR 112017001965B1 BR 112017001965 A BR112017001965 A BR 112017001965A BR 112017001965 B1 BR112017001965 B1 BR 112017001965B1
Authority
BR
Brazil
Prior art keywords
memory
data
mirrored
mirror
stored
Prior art date
Application number
BR112017001965-5A
Other languages
English (en)
Other versions
BR112017001965A2 (pt
Inventor
Xiuqi Xie
Xishi Qiu
Original Assignee
Huawei Technologies Co., Ltd
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
Priority claimed from CN201410471145.XA external-priority patent/CN104252419B/zh
Application filed by Huawei Technologies Co., Ltd filed Critical Huawei Technologies Co., Ltd
Publication of BR112017001965A2 publication Critical patent/BR112017001965A2/pt
Publication of BR112017001965B1 publication Critical patent/BR112017001965B1/pt

Links

Abstract

Trata-se de um método de alocação de memória, aparelho e sistema de computador. O método inclui: obter (101) memória espelhada desocupada em uma memória espelhada inicial, em que a memória espelhada inicial é indicada por uma faixa de endereço de memória espelhada que é fornecida por um BIOS de um sistema de computador ao um OS do sistema de computador durante inicialização do OS; realizar detecção (102) em dados que exigem alocação de memória; e, ao detectar que os dados são dados a serem armazenados na memória espelhada, alocar (103), a partir da memória espelhada desocupada, a memória espelhada aos dados a serem armazenados na memória espelhada. O método de alocação de memória pode encontrar de modo preciso a memória espelhada, e alocar a memória espelhada aos dados que precisam ser armazenados na memória espelhada. Portanto, esse método garante eficiência de uso da memória espelhada limitada.

Description

CAMPO DA TÉCNICA
[0001] A presente invenção refere-se ao campo de tecnologias de computador e, em particular, a um aparelho e método de alocação de memória.
ANTECEDENTES
[0002] A confiabilidade de memória tem grande impacto na confiabilidade de um sistema de computador. Portanto, a confiabilidade de memória precisa ser aperfeiçoada. Atualmente, o espelhamento de memória é geralmente usado na técnica anterior para aperfeiçoar a confiabilidade de memória.
[0003] Um princípio operacional de uma tecnologia de espelhamento de memória é conforme o seguinte: Duas áreas de memória são planejadas em hardware. Uma é usada como memória primária, e a outra é usada como memória espelhada. Quando em execução, um sistema operacional realiza duas cópias de dados na memória, que são armazenadas respectivamente na memória primária e na memória espelhada. Portanto, para os dados na memória, há dois conjuntos de dados de reserva completos. O espelhamento de memória completo exige que haja cópias para todos os dados na memória. Quando um sistema de servidor é executado normalmente, um original é usado. Quando um hospedeiro de uma cópia falhar, a outra cópia é usada no lugar. Dessa maneira, uma perda de dados causada por uma falha de canal de memória é evitada de modo eficaz, e a confiabilidade de servidor é bastante aperfeiçoada. Entretanto, a memória física dupla é necessária para implantar essa função, e a utilização de capacidade real é de apenas 50%. Devido a custos muito altos, na verdade, poucos produtos usam espelhamento de memória completo.
[0004] Na técnica anterior, surge uma tecnologia de espelhamento de memória parcial. A tecnologia pode usar uma parte de memória em um sistema de computador (por exemplo, uma área de um segmento ou diversos segmentos de endereços de memória) como memória espelhada. Entretanto, na técnica anterior, a memória espelhada reside apenas em uma camada de hardware, e o sistema operacional não está ciente da camada de hardware. Quando a memória espelhada na camada de hardware muda, a memória espelhada não pode ser encontrada de modo preciso no sistema operacional e, consequentemente, os dados não podem ser armazenados de modo preciso na memória espelhada. Além disso, um tamanho da memória espelhada é limitado. Ao alocar a memória espelhada para os dados, o sistema de computador aloca a memória espelhada apenas para dados que são primeiramente gerados. Após a memória espelhada estar completamente ocupada, nenhuma memória espelhada pode ser alocada para outros dados que necessitam ser alocados na memória espelhada.
[0005] O Pedido de Patente US US2010115330A1 revela um método para gerenciar uma arquitetura de memória redundante para um sistema de manuseio de informações (IHS) que pode incluir fornecer memória redundante para uma porção de memória de sistema em que a memória redundante é configurada para espelhar dados armazenados na porção de memória de sistema. O método pode adicionalmente incluir reportar um parâmetro associado à porção de memória de sistema para um sistema operacional do IHS e executar um programa a partir da porção de memória de sistema.
DESCRIÇÃO RESUMIDA
[0006] Em comparação com a técnica anterior, em que um sistema operacional não pode estar ciente de uma mudança de memória espelhada e não pode alocar a memória espelhada para os dados que necessitam ser alocados na memória espelhada se um tamanho da memória espelhada é limitado, um método de alocação de memória fornecido por uma modalidade da presente invenção pode encontrar de modo preciso memória espelhada, e alocar a memória espelhada para dados que necessitam ser armazenados na memória espelhada. Esse método garante elevada utilização da memória espelhada limitada e aperfeiçoa a confiabilidade de sistema. Uma modalidade da presente invenção fornece adicionalmente um aparelho correspondente.
[0007] Um primeiro aspecto da presente invenção fornece um método de alocação de memória, em que o método é aplicado a um sistema de computador, e o sistema de computador inclui um recurso de memória, um sistema de entrada/saída básico BIOS, e um sistema operacional OS, em que o recurso de memória inclui memória espelhada inicial, e quando o sistema operacional é executado, o método inclui: obter memória espelhada desocupada na memória espelhada inicial, em que a memória espelhada inicial é memória espelhada indicada por uma faixa de endereço de memória espelhada que é fornecida pelo BIOS ao OS durante a inicialização do OS; realizar detecção em dados que exigem alocação de memória; e ao detectar que os dados são dados a serem armazenados na memória espelhada, alocar, a partir da memória espelhada desocupada, a memória espelhada aos dados a serem armazenados na memória espelhada.
[0008] Com referência ao primeiro aspecto, em um primeiro modo de implantação possível, antes de realizar a detecção em dados que exigem alocação de memória, o método inclui adicionalmente: definir um identificador de espelho para dados de kernel e dados de usuário críticos, em que os dados de usuário críticos são dados especificados de usuário que exigem armazenamento espelhado; a realização da detecção em dados que exigem alocação de memória inclui: detectar se os dados que exigem alocação de memória portam o identificador de espelho; e ao detectar que os dados são dados a serem armazenados na memória espelhada, alocar, a partir da memória espelhada desocupada, a memória espelhada aos dados a serem armazenados na memória espelhada, inclui: ao detectar que os dados que exigem alocação de memória portam o identificador de espelho, determinar que os dados que exigem alocação de memória sejam os dados de kernel ou os dados de usuário críticos, e alocar, a partir da memória espelhada desocupada, a memória espelhada aos dados de kernel ou os dados de usuário críticos.
[0009] Com referência ao primeiro modo de implantação possível do primeiro aspecto, em um segundo modo de implantação possível, o método inclui adicionalmente: quando os dados que exigem alocação de memória são os dados de usuário críticos, determinar se os dados de um mesmo processo são armazenados na memória espelhada inicial, em que os dados do mesmo processo são dados gerados antes dos dados de usuário críticos pelo mesmo processo que gera os dados de usuário críticos; e se os dados do mesmo processo não forem armazenados na memória espelhada original, migrar os dados do mesmo processo para a memória espelhada inicial.
[0010] Com referência ao primeiro aspecto ou ao primeiro ou segundo modos de implantação possíveis do primeiro aspecto, em um terceiro modo de implantação possível, a alocação, a partir da memória espelhada desocupada, da memória espelhada para os dados a serem armazenados na memória espelhada, inclui: determinar uma área de recurso de memória pré-planejada à qual os dados a serem armazenados na memória espelhada pertencem; e alocar, a partir da memória espelhada desocupada da área de recurso de memória pré-planejada à qual os dados pertencem, a memória espelhada para os dados a serem armazenados na memória espelhada.
[0011] Com referência ao primeiro aspecto ou ao primeiro ou segundo modos de implantação possíveis do primeiro aspecto, em um quarto modo de implantação possível, após a alocação, a partir da memória espelhada desocupada, da memória espelhada para os dados a serem armazenados na memória espelhada, o método inclui adicionalmente: definir um sinalizador de ocupação para uma faixa de endereço da memória espelhada que é alocada para os dados a serem armazenados na memória espelhada.
[0012] Um segundo aspecto da presente invenção fornece um aparelho de alocação de memória, em que o aparelho é aplicado a um sistema de computador, e o sistema de computador inclui um recurso de memória, um sistema de entrada/saída básico BIOS, e um sistema operacional OS, em que o recurso de memória inclui memória espelhada inicial, e quando o sistema operacional é executado, o aparelho inclui: uma unidade de obtenção, configurada para obter memória espelhada desocupada na memória espelhada inicial, em que a memória espelhada inicial é memória espelhada indicada por uma faixa de endereço de memória espelhada que é fornecida pelo BIOS ao OS durante a inicialização do OS; uma unidade de detecção, configurada para realizar detecção em dados que exigem alocação de memória; e uma unidade de alocação, configurada para alocar, a partir da memória espelhada desocupada obtida pela unidade de obtenção, quando a unidade de detecção detectar que os dados são dados a serem armazenados na memória espelhada, a memória espelhada aos dados a serem armazenados na memória espelhada.
[0013] Com referência ao segundo aspecto, em um primeiro modo de implantação possível, o aparelho inclui adicionalmente: uma primeira unidade de definição, configurada para definir um identificador de espelho para dados de kernel e dados de usuário críticos antes de a unidade de detecção realizar a detecção quanto a dados que exigem alocação de memória, em que os dados de usuário críticos são dados especificados de usuário que exigem armazenamento espelhado; em que a unidade de detecção é configurada para detectar se os dados que exigem alocação de memória portam o identificador de espelho definido pela primeira unidade de definição; e a unidade de alocação é configurada para determinar, quando a unidade de detecção detectar que os dados que exigem alocação de memória portam o identificador de espelho, que os dados que exigem alocação de memória são os dados de kernel ou os dados de usuário críticos, e alocar, a partir da memória espelhada desocupada, a memória espelhada aos dados de kernel ou os dados de usuário críticos.
[0014] Com referência ao primeiro modo de implantação possível do segundo aspecto, em um segundo modo de implantação possível, o aparelho inclui adicionalmente: uma unidade de determinação, configurada para determinar, quando os dados que exigem alocação de memória são os dados de usuário críticos, se os dados de um mesmo processo são armazenados na memória espelhada inicial, em que os dados do mesmo processo são dados gerados antes dos dados de usuário críticos pelo mesmo processo que gera os dados de usuário críticos; e uma unidade de migração, configurada para migrar os dados do mesmo processo para a memória espelhada inicial quando a unidade de determinação determinar que os dados do mesmo processo não são armazenados na memória espelhada.
[0015] Com referência ao segundo aspecto ou ao primeiro ou segundo modos de implantação possíveis do segundo aspecto, em um terceiro modo de implantação possível, a unidade de alocação inclui: uma subunidade de determinação, configurada para determinar uma área de recurso de memória pré-planejada à qual os dados a serem armazenados na memória espelhada pertencem; e uma subunidade de alocação, configurada para alocar, a partir da memória espelhada desocupada da área de recurso de memória pré-planejada que é determinada pela subunidade de determinação e à qual os dados pertencem, a memória espelhada aos dados a serem armazenados na memória espelhada.
[0016] Com referência ao segundo aspecto ou ao primeiro ou segundo modos de implantação possíveis do segundo aspecto, em um quarto modo de implantação possível, o aparelho inclui adicionalmente: uma segunda unidade de definição, configurada para definir, após a unidade de alocação alocar a memória espelhada, um sinalizador de ocupação para uma faixa de endereço da memória espelhada que é alocada aos dados a serem armazenados na memória espelhada. Um terceiro aspecto da presente invenção fornece um sistema de computador que inclui: uma memória configurada para armazenar instruções legíveis por computador, caracterizado pelo fato de que a memória compreende memória espelhada e a memória espelhada é indicada por uma faixa de endereço de memória espelhada que é fornecida por um sistema de entrada/saída básico (BIOS) para um sistema operacional (OS) durante a inicialização do OS; um processador configurado para ler as instruções legíveis por computador a partir da memória para: detectar se dados que exigem alocação de memória portam um identificador de espelho, em que o identificador de espelho é definido em dados de kernel e dados de usuário críticos, e os dados de usuário críticos são dados especificados de usuário, em dados de usuário, que exigem armazenamento espelhado; e alocar uma parte desocupada da memória espelhada para os dados que exigem alocação de memória quando detectar que os dados que exigem alocação de memória portam o identificador de espelho. Com referência ao terceiro aspecto da presente invenção, em um primeiro modo de implantação possível, o processador é configurado adicionalmente para: determinar se dados de um mesmo processo são armazenados na memória espelhada quando os dados que exigem alocação de memória são os dados de usuário críticos, em que os dados do mesmo processo são dados gerados antes dos dados de usuário críticos pelo mesmo processo que gera os dados de usuário críticos; e migrar os dados do mesmo processo para a memória espelhada quando os dados do mesmo processo não são armazenados na memória espelhada original. Com referência ao terceiro aspecto da presente invenção ou ao primeiro modo de implantação possível, em um segundo modo de implantação possível, o processador é configurado para: determinar uma área de recurso de memória pré-planejada à qual os dados que exigem alocação de memória pertencem, em que cada área corresponde a um ou mais segmentos de memória espelhada; e alocar uma parte desocupada de memória espelhada que corresponde à área de recurso de memória pré-planejada à qual os dados que exigem alocação de memória pertencem aos dados a serem armazenados na memória espelhada. Com referência ao terceiro aspecto da presente invenção ou ao primeiro modo de implantação possível ou ao segundo modo de implantação possível, em um terceiro modo de implantação possível, o processador é configurado adicionalmente para definir um sinalizador de ocupação para uma faixa de endereço da memória espelhada alocada. Um quarto aspecto da presente invenção fornece um sistema de computador que inclui: uma memória configurada para armazenar instruções legíveis por computador, caracterizado pelo fato de que a memória compreende memória espelhada e a memória espelhada é indicada por uma faixa de endereço de memória espelhada que é fornecida por um sistema de entrada/saída básico (BIOS) para um sistema operacional (OS) durante a inicialização do OS; um processador configurado para ler as instruções legíveis por computador a partir da memória para: realizar detecção em dados que exigem alocação de memória; e determinar uma área de memória pré-planejada que corresponde aos dados que exigem alocação de memória, e alocar uma parte desocupada de um ou mais segmentos de memória espelhada que correspondem à área de memória pré-planejada à qual os dados pertencem aos dados que exigem alocação de memória ao detectar que os dados que exigem alocação de memória são os dados a serem armazenados na memória espelhada. Com referência ao quarto aspecto da presente invenção, em um primeiro modo de implantação possível, o processador é configurado para determinar um nó que corresponde aos dados que exigem alocação de memória, e alocar uma parte desocupada de memória espelhada do nó que corresponde aos dados que exigem alocação de memória aos dados que exigem alocação de memória. Com referência ao primeiro modo de implantação possível do quarto aspecto, em um segundo modo de implantação possível, todos os nós são planejados de acordo com uma arquitetura de acesso de memória não uniforme (NUMA), e cada nó compreende um ou mais segmentos de memória espelhada. Com referência ao segundo modo de implantação possível do quarto aspecto, em um terceiro modo de implantação possível, cada segmento de memória espelhada é rastreado e gerenciado por uma zona de gerenciamento de memória espelhada, MIRROR ZONE, e cada nó corresponde a uma ou mais MIRROR ZONEs
[0017] Uma modalidade da presente invenção fornece um método de alocação de memória. O método é aplicado a um sistema de computador, e o sistema de computador inclui um recurso de memória, um sistema de entrada/saída básico BIOS, e um sistema operacional OS, em que o recurso de memória inclui memória espelhada inicial. Quando o sistema operacional é executado, o método inclui: obter memória espelhada desocupada na memória espelhada inicial, em que a memória espelhada inicial é memória espelhada indicada por uma faixa de endereço de memória espelhada que é fornecida pelo BIOS ao OS durante inicialização do OS; realizar detecção em dados que exigem alocação de memória; e ao detectar que os dados são dados a serem armazenados na memória espelhada, alocar, a partir da memória espelhada desocupada, a memória espelhada aos dados a serem armazenados na memória espelhada. Em comparação à técnica anterior, em que um sistema operacional não pode estar ciente de uma mudança de memória e não pode alocar a memória espelhada aos dados que necessitam ser alocados na memória espelhada se um tamanho da memória espelhada é limitado, no método de alocação de memória fornecido por essa modalidade da presente invenção, visto que o BIOS fornece a faixa de endereço de memória espelhada ao OS, o método pode encontrar de modo preciso a memória espelhada, e alocar a memória espelhada aos dados que necessitam ser armazenados na memória espelhada. Portanto, esse método garante a eficiência de uso da memória espelhada limitada e aperfeiçoa a confiabilidade de sistema.
[0018] Em comparação com o estado da técnica (US2010/0115330A1), o método pode identificar de forma precisa os dados que precisam ser armazenados na memória espelhada. Portanto, este método permite o uso eficiente de memória espelhada limitada. Adicionalmente, pode ser visto que após os dados atuais serem armazenados na memória espelhada, os dados anteriores gerados pelo mesmo processo são migrados da memória não espelhada para a memória espelhada, com os dados anteriores sendo armazenados na memória não espelhada antes. Portanto, o método garante que os dados que são gerados por um mesmo processo sejam armazenados na mesma memória, especialmente os dados críticos gerados por um processo crítico podem ser todos armazenados na memória espelhada. Em outras palavras, o método pode identificar de forma precisa os dados que realmente precisam ser armazenados na memória espelhada, enquanto garante que nenhum dado crítico seja deixado, garantindo assim o uso eficiente de memória espelhada limitada.
BREVE DESCRIÇÃO DOS DESENHOS
[0019] Para descrever as soluções técnicas nas modalidades da presente invenção ou na técnica anterior mais claramente, a seguir é uma introdução breve dos desenhos anexos exigidos para descrever as modalidades ou a técnica anterior. Aparentemente, os desenhos anexos na descrição a seguir mostram meramente algumas modalidades da presente invenção e um indivíduo de habilidade comum na técnica ainda pode derivar outros desenhos a partir desses desenhos anexos sem esforços criativos.
[0020] A Figura 1 é um diagrama esquemático de uma arquitetura de um sistema de computador de acordo com uma modalidade da presente invenção;
[0021] A Figura 2 é um diagrama esquemático de um método de alocação de memória de acordo com uma modalidade da presente invenção;
[0022] A Figura 3 é um diagrama esquemático de um aparelho de alocação de memória de acordo com uma modalidade da presente invenção;
[0023] A Figura 4 é um diagrama esquemático de um aparelho de alocação de memória de acordo com outra modalidade da presente invenção;
[0024] A Figura 5 é um diagrama esquemático de um aparelho de alocação de memória de acordo com outra modalidade da presente invenção;
[0025] A Figura 6 é um diagrama esquemático de um aparelho de alocação de memória de acordo com outra modalidade da presente invenção;
[0026] A Figura 7 é um diagrama esquemático de um aparelho de alocação de memória de acordo com outra modalidade da presente invenção; e
[0027] A Figura 8 é um diagrama esquemático de um dispositivo de alocação de memória de acordo com uma modalidade da presente invenção.
DESCRIÇÃO DAS MODALIDADES
[0028] Uma modalidade da presente invenção fornece um método de alocação de memória, que pode encontrar, de modo preciso, memória espelhada, e alocar a memória espelhada em dados que necessitam ser armazenados na memória espelhada. Portanto, esse método garante eficiência de uso da memória espelhada limitada e aperfeiçoa confiabilidade de sistema. Uma modalidade da presente invenção fornece adicionalmente um aparelho e um sistema correspondente. As descrições detalhadas são fornecidas posteriormente de maneira separada.
[0029] Para fazer com que uma pessoa versada na técnica entenda melhor as soluções técnicas na presente invenção, o que vem a seguir descreve de maneira clara e completa as soluções técnicas nas modalidades da presente invenção com referência aos desenhos anexos nas modalidades da presente invenção. Aparentemente, as modalidades descritas são meramente uma parte, em vez de todas as modalidades da presente invenção. Todas as outras modalidades obtidas por um indivíduo de habilidade comum na técnica com base nas modalidades da presente invenção sem esforços criativos devem ser abrangidas pelo escopo de proteção da presente invenção.
[0030] Referindo-se à Figura 1, uma arquitetura de um sistema de computador fornecido por uma modalidade da presente invenção pode incluir uma camada de recurso de hardware, um sistema de entrada/saída básico (Sistema de Entrada Saída Básico, BIOS), um sistema operacional (Sistema Operacional, OS) e uma camada de aplicativo de usuário. A camada de recurso de hardware pode incluir recursos de hardware, tais como um processador, memória e um sistema de entrada/saída. A camada de aplicativo de usuário pode incluir vários aplicativos de serviço. O sistema operacional nessa modalidade da presente invenção pode ser um sistema Linux.
[0031] A memória pode incluir memória espelhada. Durante a inicialização do sistema operacional, o BIOS relata informações de memória ao OS. As informações de memória podem ser faixas de endereço de memória de vários tipos, incluindo uma faixa de endereço de memória espelhada. Por exemplo, as seguintes informações podem ser incluídas, e podem ser expressas em uma forma de um mapa e820: e820: mapa de RAM física fornecido pelo BIOS: [mem 0x0000000000000000-0x000000000009a7ff] usável [mem 0x000000000009a800-0x000000000009ffff] reservada [mem 0x00000000000e4b60-0x00000000000fffff] reservada [mem 0x0000000000100000-0x000000003fffffff] espelho (1 MB a 1 GB) [mem 0x0000000040000000-0x00000000bf78ffff] usável (1 GB a 3.063 MB) [mem 0x00000000bf790000-0x00000000bf79dfff] dados de ACPI [mem 0x00000000bf79e000-0x00000000bf7cffff] NVS de ACPI [mem 0x00000000bf7d0000-0x00000000bf7dffff] reservada [mem 0x00000000bf7ec000-0x00000000bfffffff] reservada [mem 0x00000000e0000000–0x00000000efffffff] reservada [mem 0x00000000fee00000–0x00000000fee00fff] reservada [mem 0x00000000fff00000–0x00000000ffffffff] reservada [mem 0x0000000100000000-0x00000002ffffffff] usável (4 GB a 12 GB) [mem 0x0000000300000000-0x000000033fffffff] espelho (12 GB a 13 GB) [mem 0x0000000340000000-0x00000005ffffffff] usável (13 GB a 24 GB) [mem 0x0000000600000000-0x000000063fffffff] espelho (24 GB a 25 GB) [mem 0x0000000640000000-0x0000000bffffffff] usável (25 GB a 36 GB) [mem 0x0000000900000000-0x000000093fffffff] espelho (36 GB a 37 GB) [mem 0x0000000940000000-0x0000000c3fffffff] usável (37 GB a 48 GB)...
[0032] A memória que corresponde a faixas de endereço marcadas com espelhos é memória espelhada. Nessa modalidade da presente invenção, as faixas de endereço da memória espelhada são (1 M a 1 G), (12 G a 13 G), (24 G a 25 G) e (36 G a 37 G).
[0033] O sistema operacional pode criar uma zona de gerenciamento de memória espelhada MIRROR ZONE de acordo com as informações de memória relatadas pelo BIOS. A MIRROR ZONE é usada para rastrear e gerenciar áreas de memória espelhada, e seu modo de organização é o mesmo que aquele de uma zona de gerenciamento de memória normal. Pode haver uma pluralidade de MIRROR ZONEs, e a pluralidade de MIRROR ZONEs constituem uma lista de ZONE. Por exemplo, para a memória espelhada nessa modalidade da presente invenção, pode haver quatro MIRROR ZONEs: (1 M a 1 G), (12 G a 13 G), (24 G a 25 G) e (36 G a 37 G), e podem ser numerados sequencialmente MIRROR_ZONE1, MIRROR_ZONE2, MIRROR_ZONE3 e MIRROR_ZONE4. De acordo com uma arquitetura de acesso de memória não uniforme (Arquitetura de Acesso de Memória não Uniforme, NUMA), memória 48GB pode ser particionada em quatro nós: (0 M a 12 G), (13 G a 24 G), (25 G a 36 G) e (37 G a 48G). As quatro MIRROR ZONEs pertencem respectivamente aos quatro nós. Durante a alocação de memória espelhada, a memória espelhada de um nó local é alocada preferencialmente, de modo que uma longa latência causada por acesso de memória entre nó seja evitada.
[0034] Quando a memória é alocada aos dados de kernel, um novo identificador _GFP_MIRROR pode ser usado como um identificador para alocar preferencialmente memória espelhada a um kernel. Quando a memória é alocada a dados de usuário, um identificador _GFP_MIRROR pode ser especificado para alocar preferencialmente memória espelhada; ou a definição pode ser que memória espelhada é alocada preferencialmente aos dados de kernel por padrão. Por exemplo, um valor padrão de GFP_KERNEL é alterado, de modo que a memória espelhada seja preferencialmente alocada por padrão: #define GFP_KERNEL (_GFP_WAIT | _GFP_IO | _GFP_FS | _GFP_MIRROR)
[0035] Um processo de alocar preferencialmente memória espelhada aos dados de kernel é conforme o seguinte:
[0036] (1) Quando iniciado, o OS determina se um recurso de alocar preferencialmente memória espelhada é suportado (se há memória de um tipo MIRROR em um diagrama de distribuição de memória relatado pelo BIOS, isso indica que o recurso é suportado).
[0037] (2) Se o recurso for suportado, o OS cria uma ou mais MIRROR ZONEs de acordo com informações de memória relatadas pelo BIOS, e adiciona a uma ou mais MIRROR ZONEs a uma lista de ZONE de todos os nós, de modo que cada nó possa escolher realizar alocação de memória na MIRROR ZONE.
[0038] (3) alloc_pages() é um alocador de página mais básico, e toda alocação de memória é finalmente concluída pelo alocador de página. O alocador de página é responsável por alocar uma ou mais (potência integral de 2) páginas contínuas em uma zona de página especificada (ZONE). Por exemplo, se um identificador _GFP_MIRROR for definido, a memória é preferencialmente alocada a partir da MIRROR ZONE.
[0039] (4) Durante alocação de memória, a memória é preferencialmente alocada a partir da MIRROR ZONE. Se a memória do tipo MIRROR for insuficiente, a memória é alocada a partir de uma zona normal.
[0040] (5) Se uma quantidade de memória espelhada no sistema for excessivamente pequena e insuficiente para armazenar todos os dados de kernel, a definição de memória espelhada de alocação pode ser desabilitada por padrão, e alterada para alocação manual de memória espelhada. Por exemplo, para algumas unidades importantes que têm maiores exigências de confiabilidade, um identificador _GFP_MIRROR pode ser especificado manualmente durante a alocação de memória.
[0041] (6) Quando liberada após o uso, a memória espelhada é liberada para a MIRROR ZONE correspondente.
[0042] Nessa modalidade da presente invenção, esse recurso pode ser usado sem mudar interfaces e usar modos de funções de alocação de memória, tais como alloc_pages(), e sem modificar numerosas unidades existentes.
[0043] Preferencialmente, alocar memória espelhada aos dados de um processo de usuário
[0044] Para um novo processo:
[0045] (1) Um processo é criado.
[0046] (2) Um descritor de processo é modificado, e um identificador de alocação de memória espelhada MIRROR_FIRST é definido no descritor de processador. Na presente invenção, esse identificador pode ser definido usando-se uma chamada de sistema ou um comando de modo de usuário.
[0047] (3) Durante alocação de memória, se MIRROR_FIRST é definido, a memória espelhada é preferencialmente usada, e a memória é alocada preferencialmente a partir de uma MIRROR ZONE. De outra maneira, a memória normal é usada, e a memória é alocada a partir de uma NORMAL ZONE. Se a memória espelhada for insuficiente, a memória normal é alocada.
[0048] (4) Quando um subprocesso é criado, a definição do identificador MIRROR_FIRST é herdada por padrão.
[0049] Para um processo em execução:
[0050] (1) Um identificador MIRROR_FIRST do processo é definido usando-se uma interface /proc ou uma chamada do sistema, de modo que durante a alocação de memória do processo, a memória espelhada seja alocada preferencialmente.
[0051] (2) Enquanto isso, os dados na memória normal previamente alocada são migrados para a memória espelhada.
[0052] Referindo-se à Figura 2, uma modalidade da presente invenção fornece um método de alocação de memória.
[0053] O método é aplicado a um sistema de computador, e o sistema de computador inclui um recurso de memória, um sistema de entrada/saída básico BIOS e um sistema operacional OS, em que o recurso de memória inclui memória espelhada inicial. Quando o sistema operacional é executado, o método inclui:
[0054] 101. Obter memória espelhada desocupada na memória espelhada inicial, em que a memória espelhada inicial é memória espelhada indicada por uma faixa de endereço de memória espelhada que é fornecida pelo BIOS ao OS durante inicialização do OS.
[0055] 102. Realizar a detecção em dados que exigem alocação de memória.
[0056] 103. Ao detectar que os dados é dados a serem armazenados na memória espelhada, alocar, a partir da memória espelhada desocupada, a memória espelhada para os dados a serem armazenados na memória espelhada.
[0057] Essa modalidade da presente invenção fornece um método de alocação de memória. O método é aplicado a um sistema de computador, e o sistema de computador inclui um recurso de memória, um sistema de entrada/saída básico BIOS e um sistema operacional OS, em que o recurso de memória inclui memória espelhada inicial. Quando o sistema operacional é executado, o método inclui: obter memória espelhada desocupada na memória espelhada inicial, em que a memória espelhada inicial é memória espelhada indicada por uma faixa de endereço de memória espelhada que é fornecida pelo BIOS ao OS durante inicialização do OS; realizar detecção quanto a dados que exigem alocação de memória; e ao detectar que os dados são dados a serem armazenados na memória espelhada, alocar, a partir da memória espelhada desocupada, a memória espelhada aos dados a serem armazenados na memória espelhada. Em comparação à técnica anterior em que um sistema operacional não pode estar ciente de uma mudança de memória e não pode alocar a memória espelhada aos dados que necessitam ser alocados na memória espelhada se um tamanho da memória espelhada é limitado, no método de alocação de memória fornecido por essa modalidade da presente invenção, visto que o BIOS fornece a faixa de endereço de memória espelhada ao OS, o método pode encontrar de modo preciso a memória espelhada, e alocar a memória espelhada aos dados que necessitam ser armazenados na memória espelhada. Portanto, esse método garante a eficiência de uso da memória espelhada limitada e aperfeiçoa a confiabilidade de sistema.
[0058] Opcionalmente, com base na modalidade que corresponde à Figura 2, em um primeiro modo de implantação opcional do método de alocação de memória fornecido por essa modalidade da presente invenção, antes de realizar a detecção em dados que exigem alocação de memória, o método pode incluir adicionalmente: definir um identificador de espelho para dados de kernel e dados de usuário críticos, em que os dados de usuário críticos são dados especificados de usuário que exigem armazenamento espelhado; a realização de detecção em dados que exigem alocação de memória pode incluir: detectar se os dados que exigem alocação de memória portam o identificador de espelho; e a alocação, a partir da memória espelhada desocupada, da memória espelhada para os dados a serem armazenados na memória espelhada ao detectar que os dados são dados a serem armazenados na memória espelhada, pode incluir: ao detectar que os dados que exigem alocação de memória portam o identificador de espelho, determinar que os dados que exigem alocação de memória sejam os dados de kernel ou os dados de usuário críticos, e alocar, a partir da memória espelhada desocupada, a memória espelhada aos dados de kernel ou os dados de usuário críticos.
[0059] Nessa modalidade da presente invenção, a memória espelhada é alocada para todos os dados de kernel. Para dados de usuário, as definições podem ser realizadas de acordo com uma exigência de usuário. Se o usuário especifica que um determinado tipo de dados são dados de usuário críticos, um identificador de espelho é definido para esse tipo de dados, e a memória espelhada é alocada para esse tipo de dados.
[0060] Opcionalmente, com base no primeiro modo de implantação opcional, em um segundo modo de implantação opcional do método de alocação de memória fornecido por essa modalidade da presente invenção, o método pode incluir adicionalmente: quando os dados que exigem alocação de memória são os dados de usuário críticos, determinar se os dados de um mesmo processo são armazenados na memória espelhada inicial, em que os dados do mesmo processo são dados gerados antes dos dados de usuário críticos pelo mesmo processo que gera os dados de usuário críticos; e se os dados do mesmo processo não forem armazenados na memória espelhada original, migrar os dados do mesmo processo para a memória espelhada inicial.
[0061] Essa modalidade da presente invenção é destinada para um caso em que um sinalizador de espelho é definido para um processo contínuo. Por exemplo, o usuário está editando um documento do Word. Após uma parte do documento ser editada, o usuário especifica que o documento do Word são dados de usuário críticos. Portanto, para a parte editada de dados nesse documento do Word, memória normal é alocada. Para uma parte editada após o usuário especificar que o documento de Word são dados de usuário críticos, a memória espelhada é alocada. Desse modo, dados prévios na memória normal também podem ser migrados para a memória espelhada.
[0062] Opcionalmente, com base na modalidade que corresponde à Figura 2 ou qualquer modo de implantação opcional, em um terceiro modo de implantação opcional do método de alocação de memória fornecido por essa modalidade da presente invenção, a alocação, a partir da memória espelhada desocupada, da memória espelhada aos dados a serem armazenados na memória espelhada, pode incluir: determinar uma área de recurso de memória pré-planejada à qual os dados a serem armazenados na memória espelhada pertencem; e alocar, a partir de memória espelhada desocupada da área de recurso de memória pré-planejada à qual os dados pertencem, a memória espelhada para os dados a serem armazenados na memória espelhada.
[0063] Essa modalidade da presente invenção é destinada para um caso em que a memória espelhada é distribuída em diferentes nós NUMA. A memória espelhada é alocada dentro de um nó local, de modo que uma longa latência causada por acesso de memória de entre nó possa ser evitada.
[0064] Opcionalmente, com base na modalidade que corresponde à Figura 2 ou qualquer modo de implantação opcional, em um quarto modo de implantação opcional do método de alocação de memória fornecido por essa modalidade da presente invenção, após a alocação, a partir da memória espelhada desocupada, da memória espelhada para os dados a serem armazenados na memória espelhada, o método pode incluir adicionalmente: definir um sinalizador de ocupação para uma faixa de endereço da memória espelhada que é alocada para os dados a serem armazenados na memória espelhada.
[0065] Nessa modalidade da presente invenção, após a memória espelhada ser ocupada, um sinalizador é definido para a faixa de endereço da memória espelhada ocupada. Desse modo, quando a alocação de memória é realizada, a memória espelhada desocupada pode ser encontrada rapidamente.
[0066] Referindo-se à Figura 3, a modalidade da presente invenção fornece um aparelho de alocação de memória 20. O aparelho é aplicado a um sistema de computador, e o sistema de computador inclui um recurso de memória, um sistema de entrada/saída básico BIOS, e um sistema operacional OS, em que o recurso de memória inclui memória espelhada inicial. Quando o sistema operacional é executado, o aparelho 20 inclui: uma unidade de obtenção 201, configurada para obter memória espelhada desocupada na memória espelhada inicial, em que a memória espelhada inicial é memória espelhada indicada por uma faixa de endereço de memória espelhada que é fornecida pelo BIOS ao OS durante a inicialização do OS; uma unidade de detecção 202, configurada para realizar detecção em dados que exigem alocação de memória; e uma unidade de alocação 203, configurada para alocar, a partir da memória espelhada desocupada obtida pela unidade de obtenção 201, quando a unidade de detecção 202 detectar que os dados são dados a serem armazenados na memória espelhada, a memória espelhada para os dados a serem armazenados na memória espelhada.
[0067] Essa modalidade da presente invenção fornece um aparelho de alocação de memória. O aparelho é aplicado a um sistema de computador, e o sistema de computador inclui um recurso de memória, um sistema de entrada/saída básico BIOS, e um sistema operacional OS, em que o recurso de memória inclui memória espelhada inicial. Quando o sistema operacional é executado, o aparelho 20 inclui: uma unidade de obtenção 201 obtém memória espelhada desocupada na memória espelhada inicial, em que a memória espelhada inicial é memória espelhada indicada por uma faixa de endereço de memória espelhada que é fornecida pelo BIOS ao OS durante inicialização do OS; uma unidade de detecção 202 realiza detecção em dados que exigem alocação de memória; e uma unidade de alocação 203 aloca, a partir da memória espelhada desocupada obtida pela unidade de obtenção 201, quando a unidade de detecção 202 detecta que os dados são dados a serem armazenados na memória espelhada, a memória espelhada aos dados a serem armazenados na memória espelhada. Em comparação à técnica anterior em que um sistema operacional não pode estar ciente de uma mudança de memória e não pode alocar a memória espelhada a dados que necessitam ser alocados na memória espelhada se um tamanho da memória espelhada é limitado, no aparelho de alocação de memória fornecido por essa modalidade da presente invenção, visto que o BIOS fornece a faixa de endereço de memória espelhada ao OS, o aparelho pode encontrar de modo preciso a memória espelhada, e alocar a memória espelhada aos dados que necessitam ser armazenados na memória espelhada. Portanto, esse método garante eficiência de uso da memória espelhada limitada e aperfeiçoa a confiabilidade de sistema.
[0068] Opcionalmente, com base na modalidade que corresponde à Figura 3, referindo-se à Figura 4, em outro modo de implantação do aparelho de alocação de memória fornecido por essa modalidade da presente invenção, o aparelho 20 inclui adicionalmente: uma primeira unidade de definição 204, configurada para definir um identificador de espelho para dados de kernel e dados de usuário críticos antes da unidade de detecção 202 realizar detecção quanto a dados que exigem alocação de memória, em que os dados de usuário críticos são dados especificados de usuário que exigem armazenamento espelhado; em que a unidade de detecção 202 é configurada para detectar se os dados que exigem alocação de memória portam o identificador de espelho definido pela primeira unidade de definição 204; e a unidade de alocação 203 é configurada para determinar, quando a unidade de detecção 202 detectar que os dados que exigem alocação de memória portam o identificador de espelho, que os dados que exigem alocação de memória são os dados de kernel ou os dados de usuário críticos, e alocar, a partir da memória espelhada desocupada, a memória espelhada para os dados de kernel ou os dados de usuário críticos.
[0069] Opcionalmente, com base na modalidade que corresponde à Figura 4, referindo-se à Figura 5, em outro modo de implantação do aparelho de alocação de memória fornecido por essa modalidade da presente invenção, o aparelho 20 inclui adicionalmente: uma unidade de determinação 205, configurada para determinar, quando os dados que exigem alocação de memória são os dados de usuário críticos definidos pela primeira unidade de definição 204, se os dados de um mesmo processo são armazenados na memória espelhada inicial, em que os dados do mesmo processo são dados gerados antes dos dados de usuário críticos pelo mesmo processo que gera os dados de usuário críticos; e uma unidade de migração 206, configurada para migrar os dados do mesmo processo para a memória espelhada inicial quando a unidade de determinação 205 determinar que os dados do mesmo processo não são armazenados na memória espelhada.
[0070] Opcionalmente, com base na modalidade que corresponde à Figura 3, referindo-se à Figura 6, em outro modo de implantação do aparelho de alocação de memória fornecido por essa modalidade da presente invenção, a unidade de alocação 203 inclui: uma subunidade de determinação 2031, configurada para determinar uma área de recurso de memória pré-planejada à qual os dados a serem armazenados na memória espelhada pertencem; e uma subunidade de alocação 2032, configurada para alocar, a partir da memória espelhada desocupada da área de recurso de memória pré- planejada que é determinada pela subunidade de determinação 2031 e à qual os dados pertencem, a memória espelhada para os dados a serem armazenados na memória espelhada.
[0071] Opcionalmente, com base na modalidade que corresponde à Figura 3, referindo-se à Figura 7, em outro modo de implantação do aparelho de alocação de memória fornecido por essa modalidade da presente invenção, o aparelho 20 inclui adicionalmente: uma segunda unidade de definição 207, configurada para definir, após a unidade de alocação 203 alocar a memória espelhada, um sinalizador de ocupação para uma faixa de endereço da memória espelhada que é alocada para os dados a serem armazenados na memória espelhada.
[0072] A Figura 8 é um diagrama estrutural esquemático de um dispositivo de alocação de memória 40 de acordo com uma modalidade da presente invenção. O dispositivo de alocação de memória 40 pode incluir um dispositivo de entrada/saída 410, um processador 430 e uma memória 440.
[0073] A memória 440 pode incluir uma memória apenas de leitura e uma memória de acesso aleatório, e fornecer uma instrução e dados ao processador 430. Uma parte da memória 440 pode incluir adicionalmente uma memória de acesso aleatória não volátil (NVRAM).
[0074] A memória 440 armazena os elementos a seguir, estruturas de dados ou módulos executáveis, ou seus subconjuntos, ou seus conjuntos de extensão: as instruções de operação, que incluem várias instruções de operação, usadas para realizar várias operações; e um sistema operacional, que inclui vários programas de sistema, usados para implantar vários serviços básicos e processar tarefas com base em hardware.
[0075] O dispositivo de alocação de memória é aplicado a um sistema de computador, e o sistema de computador inclui um recurso de memória, um sistema de entrada/saída básico BIOS e um sistema operacional OS, em que o recurso de memória inclui memória espelhada inicial. Nessa modalidade da presente invenção, quando o sistema operacional é executado, o processador 430 realiza as operações a seguir invocando-se uma instrução de operação armazenada na memória 440 (a instrução de operação pode ser armazenada no sistema operacional): obter memória espelhada desocupada na memória espelhada inicial, em que a memória espelhada inicial é memória espelhada indicada por uma faixa de endereço de memória espelhada que é fornecida pelo BIOS ao OS durante a inicialização do OS; realizar detecção em dados que exigem alocação de memória; e ao detectar que os dados são dados a serem armazenados na memória espelhada, alocar, a partir da memória espelhada desocupada, a memória espelhada aos dados a serem armazenados na memória espelhada.
[0076] Nessa modalidade da presente invenção, o BIOS do dispositivo de alocação de memória 40 fornece uma faixa de endereço de memória espelhada ao OS, de modo que a memória espelhada possa ser encontrada de modo preciso. Além disso, a memória espelhada é alocada para dados que necessitam ser armazenados na memória espelhada, de modo que a eficiência de uso da memória espelhada limitada seja garantida e que a confiabilidade de sistema seja aperfeiçoada.
[0077] O processador 430 controla uma operação do dispositivo de alocação de memória 40. O processador 430 também pode ser denominado uma CPU (Unidade de Processamento Central, unidade de processamento central). A memória 440 pode incluir uma memória apenas de leitura e uma memória de acesso aleatório, e fornecer uma instrução e dados ao processador 430. Uma parte da memória 440 pode incluir adicionalmente uma memória de acesso aleatória não volátil (NVRAM). Em uma aplicação específica, os componentes do dispositivo de alocação de memória 40 são acoplados em conjunto usando- se um sistema de barramento 450. O sistema de barramento 450 pode incluir adicionalmente um barramento de potência, um barramento de controle, um barramento de sinal de situação, e similares, além de um barramento de dados. Entretanto, para uma descrição clara, vários barramentos na figura são marcados como o sistema de barramento 450.
[0078] Os métodos revelados pelas modalidades anteriores da presente invenção podem ser aplicados ao processador 430 ou implantados pelo processador 430. O processador 430 pode ser um chip de circuito integrado e ter uma capacidade de processamento de sinal. Em um processo de implantação, cada etapa dos métodos anteriores pode ser concluída usando-se um circuito lógico integrado de hardware no processador 430 ou uma instrução em uma forma de software. O processador 430 pode ser um processador de propósito geral, um processador de sinal digital (DSP), um circuito integrado de aplicação específica (ASIC), uma matriz de portas programável em campo (FPGA) ou outro dispositivo lógico programável, dispositivo lógico de transistor ou de porta discreta ou componente de hardware discreto. O processador pode implantar ou executar métodos, etapas e diagramas de bloco lógicos revelados nas modalidades da presente invenção. O processador de propósito geral pode ser um microprocessador ou o processador pode ser qualquer processador convencional ou similar. As etapas dos métodos revelados com referência às modalidades da presente invenção podem ser executadas diretamente e concluídas por meio de um processador de decodificação de hardware, ou podem ser executadas e concluídas usando-se uma combinação de módulos de hardware e software em um processador de decodificação. Os módulos de software podem ser localizados em um meio de armazenamento maduro na técnica, tal como uma memória de acesso aleatória, uma memória flash, uma memória apenas de leitura, uma memória apenas de leitura programável, uma memória programável apagável eletricamente ou um registro. O meio de armazenamento é localizado na memória 440, e o processador 430 lê informações na memória 440 e conclui as etapas nos métodos anteriores em combinação com hardware do processador.
[0079] Opcionalmente, o processador 430 é configurado adicionalmente para: definir um identificador de espelho para dados de kernel e dados de usuário críticos, em que os dados de usuário críticos são dados especificados de usuário que exigem armazenamento espelhado; detectar se os dados que exigem alocação de memória portam o identificador de espelho; e ao detectar que os dados que exigem alocação de memória portam o identificador de espelho, determinar que os dados que exigem alocação de memória sejam os dados de kernel ou os dados de usuário críticos, e alocar, a partir da memória espelhada desocupada, a memória espelhada para os dados de kernel ou os dados de usuário críticos.
[0080] Opcionalmente, o processador 430 é configurado adicionalmente para: quando os dados que exigem alocação de memória são os dados de usuário críticos, determinar se os dados de um mesmo processo são armazenados na memória espelhada inicial, em que os dados do mesmo processo são dados gerados antes dos dados de usuário críticos pelo mesmo processo que gera os dados de usuário críticos; e se os dados do mesmo processo não forem armazenados na memória espelhada original, migrar os dados do mesmo processo para a memória espelhada inicial.
[0081] Opcionalmente, o processador 430 é configurado especificamente para: determinar uma área de recurso de memória pré- planejada à qual os dados a serem armazenados na memória espelhada pertencem; e alocar, a partir de memória espelhada desocupada da área de recurso de memória pré-planejada à qual os dados pertencem, a memória espelhada aos dados a serem armazenados na memória espelhada.
[0082] Opcionalmente, o processador 430 é configurado adicionalmente para: após a memória espelhada ser alocada a partir da memória espelhada desocupada para os dados a serem armazenados na memória espelhada, definir um sinalizador de ocupação para uma faixa de endereço da memória espelhada que é alocada aos dados a serem armazenados na memória espelhada.
[0083] Uma pessoa de habilidade comum na técnica pode entender que todas ou algumas das etapas dos métodos nas modalidades podem ser implantadas por um programa que instrui um hardware relevante (tal como um processador). O programa pode ser armazenado em um meio de armazenamento legível por computador. A mídia de armazenamento pode incluir: uma ROM, uma RAM, um disco magnético ou disco óptico.
[0084] O método de alocação de memória e aparelho fornecidos pelas modalidades da presente invenção, são descritos em detalhes acima. Os princípios e modos de implantação da presente invenção são descritos no presente documento através de exemplos específicos. A descrição sobre as modalidades é meramente fornecida para ajudar no entendimento dos métodos e ideias centrais da presente invenção. Além disso, uma pessoa de habilidade comum na técnica pode realizar variações e modificações na presente invenção em termos dos modos de implantação específicos e escopos de aplicação de acordo com as ideias da presente invenção. Portanto, o conteúdo do relatório descritivo não deve ser interpretado como uma limitação da presente invenção.

Claims (11)

1. Método de alocação de memória realizado por um dispositivo de computador que tem um processador rodando um sistema operacional (OS), CARACTERIZADO pelo fato de que o método compreende: obter informações de memória identificando uma ou mais faixas de endereço de memória contínua configuradas como uma memória espelhada; receber dados de processo a serem armazenados de um processo rodando no dispositivo de computador, em que os dados de processo incluem um identificador de alocação de memória espelhada; detectar (102) se o identificador de alocação de memória espelhada associado ao processo indica que os dados de processo são para serem espelhados; então alocar (103), uma primeira porção da memória espelhada para os dados de processo em resposta à determinação de que o identificador de alocação de memória espelhada indica que os dados de processo são para serem espelhados; gravar os dados de processo para a primeira porção da memória espelhada; determinar se os dados gerados anteriormente pelo processo são armazenados em uma memória não-espelhada; e migrar os dados gerados anteriormente pelo processo para a memória espelhada em resposta à determinação de que os dados gerados anteriormente pelo processo são armazenados na memória não-espelhada.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a obtenção das informações de memória identificando uma ou mais faixas de endereço de memória contínua configuradas como a memória espelhada compreende obter as informações de memória a partir de um sistema de entrada/saída básico (BIOS) do dispositivo de computador durante inicialização do sistema operacional.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que antes de determinar se o identificador de alocação de memória espelhada associado ao processo indica que os dados de processo são para serem espelhados, recuperar o identificador de alocação de memória espelhada a partir dos dados de processo, em que os dados de processo incluem um descritor de processo do processo que tem o identificador de alocação de memória espelhada.
4. Método de alocação de memória realizado por um dispositivo de computador que tem um processador rodando um sistema operacional (OS), CARACTERIZADO pelo fato de que o método compreende: obter informações de memória identificando uma ou mais faixas de endereço de memória contínua configuradas como uma memória espelhada; receber dados de kernel a serem armazenados, em que os dados de kernel são gerados por um kernel do sistema operacional; determinar se um identificador __GFP_MIRROR está incluído em um identificador GFP_KERNEL; alocar uma porção da memória espelhada aos dados de kernel em resposta à determinação de que o identificador __GFP_MIRROR está incluído no identificador GFP_KERNEL; e gravar os dados de kernel para a porção alocada da memória espelhada.
5. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que a obtenção das informações de memória identificando uma ou mais faixas de endereço de memória contínua configuradas como a memória espelhada compreende obter as informações de memória a partir de um sistema de entrada/saída básico (BIOS) do dispositivo de computador durante inicialização do sistema operacional.
6. Dispositivo de computador, compreendendo: uma memória (440) configurada para armazenar instruções e dados, CARACTERIZADO pelo fato de que a memória armazenando instruções e dados, em que a memória tem uma ou mais faixas de endereço de memória contínua configuradas como uma memória espelhada; e um processador (430) acoplado à memória e configurado para ler e executar as instruções armazenadas na memória (440) para: obter informações de memória identificando as uma ou mais faixas de endereço de memória contínua configuradas como a memória espelhada; receber dados de processo a serem armazenados a partir de um processo rodando no dispositivo de computador, em que os dados de processo incluem um identificador de alocação de memória espelhada; detectar se o identificador de alocação de memória espelhada associado ao processo indica que os dados de processo são para serem espelhados; então alocar uma primeira porção da memória espelhada aos dados de processo em resposta à determinação de que o identificador de alocação de memória espelhada indica que os dados de processo são para serem espelhados; gravar os dados de processo para a primeira porção da memória espelhada; determinar se dados gerados anteriormente pelo processo são armazenados em uma memória não-espelhada; e migrar os dados gerados anteriormente pelo processo para a memória espelhada em resposta à determinação de que os dados gerados anteriormente pelo processo são armazenados na memória não-espelhada.
7. Dispositivo de computador, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que compreende adicionalmente um sistema de entrada/saída básico (BIOS), e em que para obter as informações de memória identificando a uma ou mais faixas de endereço de memória contínua configuradas como a memória espelhada, o processador (430) é configurado adicionalmente para obter as informações de memória a partir do BIOS durante inicialização de um sistema operacional que roda no dispositivo de computador.
8. Dispositivo de computador, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que antes de determinar se o identificador de alocação de memória espelhada associado ao processo indica que os dados de processo são para serem espelhados, o processador (430) é configurado adicionalmente para recuperar o identificador de alocação de memória espelhada a partir dos dados de processo, em que os dados de processo incluem um descritor de processo do processo que tem o identificador de alocação de memória espelhada.
9. Dispositivo de computador, compreendendo: uma memória (440) configurada para armazenar instruções e dados, CARACTERIZADO pelo fato de que a memória compreende uma ou mais faixas de endereço de memória contínua configuradas como uma memória espelhada; e um primeiro processador (430) acoplado à memória e configurado para ler e executar as instruções armazenadas na memória (440) para: obter informações de memória identificando a uma ou mais faixas de endereço de memória contínua configuradas como a memória espelhada; receber dados de kernel a serem armazenados, em que os dados de kernel são gerados por um kernel de um sistema operacional rodando no dispositivo de computador; determinar se um identificador __GFP_MIRROR está incluído em um identificador GFP_KERNEL; alocar uma porção da memória espelhada aos dados de kernel em resposta à determinação de que o identificador __GFP_MIRROR está incluído no identificador GFP_KERNEL; e gravar os dados de kernel para a porção alocada da memória espelhada.
10. Dispositivo de computador, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que o dispositivo de computador compreende múltiplos nós cada um compreendendo uma memória e um processador, e os múltiplos nós são organizados de acordo com uma arquitetura de acesso de memória não uniforme (NUMA), e em que a porção da memória espelhada alocada pelo primeiro processador está localizada em um nó local compreendendo o primeiro processador.
11. Dispositivo de computador, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que compreende adicionalmente um sistema de entrada/saída básico (BIOS), em que para obter as informações de memória identificando a uma ou mais faixas de endereço de memória contínua configuradas como a memória espelhada, o primeiro processador é configurado para obter as informações de memória a partir do BIOS durante inicialização do sistema operacional.
BR112017001965-5A 2014-09-16 2015-09-16 Método de alocação de memória, aparelho e sistema de computador BR112017001965B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201410471145.X 2014-09-16
CN201410471145.XA CN104252419B (zh) 2014-09-16 2014-09-16 一种内存分配的方法及装置
PCT/CN2015/089796 WO2016041501A1 (zh) 2014-09-16 2015-09-16 一种内存分配的方法及装置

Publications (2)

Publication Number Publication Date
BR112017001965A2 BR112017001965A2 (pt) 2017-11-21
BR112017001965B1 true BR112017001965B1 (pt) 2023-06-06

Family

ID=

Similar Documents

Publication Publication Date Title
US10990303B2 (en) Memory allocation method and apparatus
EP2985702B1 (en) Data processing method and device, and computer system
WO2018010654A1 (zh) 一种虚拟机热迁移的方法、装置及系统
US11340945B2 (en) Memory congestion aware NUMA management
US10534720B2 (en) Application aware memory resource management
EP3121731A1 (en) Memory management method and device
JP2021534524A (ja) 高信頼性フォールトトレラントコンピュータアーキテクチャ
BR112016014367B1 (pt) Método de processamento de recurso, sistema operacional, e dispositivo
CN112673341A (zh) 具有可配置存储的NVMe直接虚拟化
JP5915378B2 (ja) ストレージ装置およびストレージ装置の制御方法
US10310986B1 (en) Memory management unit for shared memory allocation
BR112017002780B1 (pt) Método e aparelho de acesso de arquivo, e sistema de armazenamento
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US20160098302A1 (en) Resilient post-copy live migration using eviction to shared storage in a global memory architecture
US20140310493A1 (en) Migrating data across storages with dissimilar allocation sizes
US20160239325A1 (en) Virtual device timeout by memory offlining
US10061528B2 (en) Disk assignment for multiple distributed computing clusters in a virtualized computing environment
US10922137B2 (en) Dynamic thread mapping
KR102474582B1 (ko) 가상화 클러스터 환경의 비바람직한 호스트 서버 상에서 더티 가상 머신의 실행을 방지하는 방법 및 시스템
BR112017001965B1 (pt) Método de alocação de memória, aparelho e sistema de computador
US11163680B2 (en) Dynamic write-back to non-volatile memory
US11941422B2 (en) Virtual non-uniform memory access (NUMA) locality table for NUMA systems
US20160004444A1 (en) Method and apparatus for applying storage functionality to each subsidiary volume
US20240192976A1 (en) Virtual Non-Uniform Memory Access (NUMA) Locality Table for NUMA Systems
US20240028361A1 (en) Virtualized cache allocation in a virtualized computing system