Dez anos de tijolos em movimento JAVA - gerenciamento de memória do sistema operacional

Conceitos de gerenciamento de memória de computador

O gerenciamento de memória do computador refere-se ao processo de gerenciamento do sistema operacional para alocar, usar e liberar recursos de memória no sistema do computador . A memória é um recurso importante para armazenar programas e dados em um sistema de computador. O objetivo do gerenciamento de memória é maximizar a utilização da memória e melhorar o desempenho e a eficiência do sistema.
O gerenciamento de memória inclui:
1. Alocação de memória : O gerenciamento de memória é responsável por alocar espaço de memória disponível para processos ou aplicativos. Ele controla quais blocos de memória estão livres e quais estão alocados, e os aloca conforme necessário. Algoritmos comuns de alocação de memória incluem primeiro ajuste, melhor ajuste e pior ajuste.
2. Mapeamento de memória : O gerenciamento de memória mapeia o espaço de endereço virtual de um processo para endereços reais na memória física. Dessa forma, cada processo pode acessar de forma independente seu próprio espaço de memória sem interferir na memória de outros processos.
3. Proteção de memória : O gerenciamento de memória protege a memória de um processo contra acesso ilegal ou adulteração por outros processos, definindo direitos de acesso, isolamento de espaço de endereço e outros mecanismos. Isso garante a segurança e estabilidade do sistema.
4. Recuperação de memória : Quando o processo termina ou a memória alocada não é mais necessária, o gerenciamento de memória é responsável por recuperar o espaço de memória e marcá-lo como livre para posterior alocação de memória.

conceito de endereço lógico de endereço físico

O endereço físico refere-se ao endereço real da memória no sistema do computador, que corresponde à unidade de armazenamento no hardware do computador. O endereço físico é gerenciado e usado diretamente pelo hardware, e o sistema operacional não pode acessar ou controlar diretamente o endereço físico. Porque o endereço físico é tratado e gerenciado pela unidade de gerenciamento de memória (MMU) ou controlador de memória no hardware .
Um MMU é um componente de hardware localizado entre a unidade central de processamento (CPU) e a memória física de um computador. É responsável por converter endereços lógicos (usados ​​pelo sistema operacional e aplicativos) em endereços físicos correspondentes e controlar o acesso à memória.
Quando a CPU emite uma solicitação de acesso à memória, a MMU converte o endereço lógico em um endereço físico de acordo com o relacionamento de mapeamento entre o endereço lógico e a tabela de páginas (ou tabela de segmentos). A MMU então passa o endereço físico ao controlador de memória para o acesso real à memória.
O controlador de memória é o componente de hardware responsável pela comunicação com os módulos de memória física. Ele seleciona o local da memória para leitura ou gravação com base no endereço físico e lida com detalhes relacionados à transferência de memória, como leitura e gravação de dados, armazenamento em cache de dados e assim por diante.
Portanto, o endereço físico é controlado e acessado diretamente pela MMU e pelo controlador de memória no hardware, e o sistema operacional gerencia e usa o espaço de endereço físico através da cooperação com o hardware.

O espaço de endereço lógico refere-se ao espaço de endereço da memória virtual usado por um processo ou programa. O endereço lógico é relativo ao processo e é o endereço utilizado pelo programa em tempo de execução. O espaço de endereço lógico é atribuído a cada processo pelo sistema operacional e é mapeado para a memória física real no espaço de endereço físico em tempo de execução.

O sistema operacional usa uma unidade de gerenciamento de memória (MMU) para mapear endereços lógicos para endereços físicos. A MMU é responsável por converter o endereço lógico do processo no endereço físico correspondente. Esse mapeamento pode ser realizado por meio de estruturas de dados como tabelas de páginas e tabelas de segmentos, e essas estruturas de dados registram a correspondência entre endereços lógicos e endereços físicos.

O espaço de endereço lógico pode ser muito maior que o espaço de memória física real, o que é obtido por meio da tecnologia de memória virtual. A tecnologia de memória virtual permite que um sistema operacional armazene parte dos dados e códigos de um processo em disco e só os carregue na memória física quando necessário. Isso fornece um espaço de endereço maior, permite que o sistema execute mais processos ao mesmo tempo e pode gerenciar melhor os recursos de memória.
Realocação de memória, conceito de proteção de memória

A realocação refere-se ao processo de conversão do endereço usado no programa de um endereço relativo (como um deslocamento) em um endereço físico real quando o programa é executado ou carregado. Em sistemas de computador, os programas costumam usar endereços relativos para se referir a dados ou instruções na memória. O mecanismo de realocação o converte em um endereço físico real calculando a soma do endereço relativo e do endereço base, para que o programa possa acessar corretamente os dados e instruções na memória.

Proteção de memória (proteção de memória) refere-se ao mecanismo de hardware e sistema operacional para proteger a memória do processo contra acesso ilegal ou adulteração. A proteção da memória pode ser dividida nos seguintes aspectos:

  1. Permissões de acesso: o sistema operacional pode definir permissões de acesso para cada processo ou região de memória, como permissões somente leitura, leitura-gravação ou execução. Isto pode limitar o acesso do processo à memória e evitar operações ilegais.

  2. Isolamento do espaço de endereço: Cada processo possui seu próprio espaço de endereço virtual independente, de modo que cada processo só pode acessar sua própria memória, mas não a memória de outros processos. Esse isolamento protege a segurança dos dados e do código entre processos.

  3. Tratamento de exceções: o sistema operacional pode detectar e tratar exceções, como acesso ilegal à memória ou acesso fora dos limites. Quando ocorre um erro de acesso à memória, o sistema operacional pode encerrar o processo ou tomar medidas apropriadas para proteger a estabilidade e segurança do sistema.

Através de mecanismos de realocação e proteção de memória, o sistema operacional pode garantir que os programas possam acessar a memória corretamente e protegê-la contra acesso ilegal e danos. Isso é fundamental para o bom funcionamento do sistema e a execução dos aplicativos.

**

Gerenciamento de partição para gerenciamento de memória

**
O gerenciamento de partição do gerenciamento de memória refere-se à divisão da memória do computador em diferentes áreas, e cada área é usada para armazenar diferentes programas ou dados. Essa divisão pode melhorar a utilização da memória e a eficiência do gerenciamento.
Os principais métodos de gerenciamento de partição para gerenciamento de memória incluem:

  1. Particionamento Fixo: Nesta abordagem, a memória é dividida em partições ou regiões de tamanho fixo. Cada partição é atribuída a um processo ou programa específico. Esta é uma abordagem simples e eficiente, mas pode levar à fragmentação interna se o tamanho da partição for maior que a memória necessária.

  2. Partições variáveis: Ao contrário das partições fixas, as partições variáveis ​​permitem a alocação dinâmica de memória com base no tamanho do programa ou processo. A memória é dividida em partições de tamanho variável e cada partição é atribuída a um processo conforme necessário. Esta abordagem reduz a fragmentação interna, mas pode levar à fragmentação externa.

  3. Particionamento dinâmico: o particionamento dinâmico é uma extensão do particionamento mutável. Ele permite que a memória seja dividida em partições de tamanho variável em tempo de execução. Quando um processo solicita memória, o sistema operacional procura uma partição livre adequada e a atribui ao processo. Essa abordagem ajuda a otimizar a utilização da memória, mas requer algoritmos de gerenciamento de memória mais complexos.

  4. Sistema Buddy: O sistema Buddy é uma técnica de alocação de memória que divide a memória em blocos de tamanho fixo usando uma estrutura de dados em árvore binária. O tamanho de cada bloco é uma potência de 2. Quando um processo solicita memória, o sistema encontra o menor bloco disponível que pode conter o tamanho solicitado. Se o pedaço for maior que o tamanho necessário, ele será dividido em dois pedaços iguais de tamanho. Esta abordagem reduz a fragmentação externa, mas pode levar à fragmentação interna.

A tecnologia de troca é um método de troca de partes de programas ou dados da memória para disco ou outra mídia de armazenamento externa quando a memória é insuficiente. Através da tecnologia de troca, o espaço de memória pode ser liberado para uso por outros programas, enquanto o estado do programa ou dos dados trocados é preservado para que possa ser recarregado na memória quando necessário.

A tecnologia de sobreposição é um método de dividir um programa ou dados em vários módulos ou segmentos quando a memória é limitada e carregar diferentes módulos ou segmentos na memória quando necessário. Através da tecnologia de sobreposição, o espaço de memória limitado pode ser usado de forma eficaz e a taxa de utilização da memória pode ser melhorada. Cada pequeno bloco será substituído. A aplicação da tecnologia de sobreposição é relativamente menor e técnicas mais avançadas de gerenciamento de memória, como paginação e segmentação, são mais utilizadas.

Método de gerenciamento de segmento:

O gerenciamento de memória segmentado é uma técnica de gerenciamento de memória que divide a estrutura lógica de um programa em vários segmentos lógicos e aloca um espaço de memória independente para cada segmento. Cada segmento representa uma unidade lógica no programa, como segmento de código, segmento de dados, segmento de heap e segmento de pilha.

No gerenciamento segmentado, cada segmento tem seu próprio endereço inicial e comprimento. Estes segmentos podem ser alocados e liberados dinamicamente de acordo com as necessidades do programa. O tamanho de cada segmento pode variar de acordo com as exigências do programa, adaptando-se melhor aos diferentes tipos de programas.

Comparado com o gerenciamento tradicional de partições fixas e o gerenciamento de partições variáveis, o gerenciamento segmentado fornece um método de alocação de memória mais flexível. Ele permite que os programas aloquem e liberem segmentos de memória conforme necessário, sem exigir que todo o programa esteja na memória. Isso melhora a utilização da memória e oferece suporte a programas maiores.

No entanto, a gestão segmentada também apresenta alguns desafios. Uma delas é a fragmentação externa, quando vários segmentos são alocados e desalocados, pedaços descontínuos de memória livre podem ser deixados para trás. Isso pode levar à fragmentação da memória, reduzindo assim a eficiência de utilização da memória.

Para resolver o problema da fragmentação externa, geralmente são utilizadas técnicas de gerenciamento de memória mais avançadas, como paginação e gerenciamento de páginas de segmento. Essas técnicas combinam as vantagens da segmentação e da paginação para fornecer melhor gerenciamento de memória e eficiência de utilização.

Método de gerenciamento de paginação:

Paginação de memória é uma técnica de gerenciamento de memória na qual a memória física e a memória lógica são divididas em páginas de tamanho fixo. Cada página tem o mesmo tamanho e é numerada sequencialmente.

No gerenciamento de paginação, o espaço de endereço lógico de um programa é dividido em páginas lógicas e a memória física é dividida em páginas físicas. O mapeamento entre páginas lógicas e páginas físicas é feito por meio de tabelas de páginas. Uma tabela de páginas é uma estrutura de dados usada para registrar a correspondência entre páginas lógicas e páginas físicas.

Quando um programa acessa um endereço lógico, o sistema operacional converte a entrada da tabela de páginas da página lógica no endereço físico da página física correspondente. Este processo de tradução é chamado de tradução de endereços ou pesquisa de tabela de páginas. Através do gerenciamento de paginação, os programas podem usar um espaço de endereço lógico contíguo sem se preocupar com o layout real da memória física.

O gerenciamento de paginação ajuda a melhorar a utilização e a flexibilidade da memória. Ele permite que vários programas compartilhem memória física e as páginas podem ser alocadas e desalocadas dinamicamente. Além disso, o gerenciamento de paginação também fornece uma camada de abstração de memória virtual, permitindo que os programas acessem um espaço de endereço lógico maior que a memória física.

No entanto, o gerenciamento de paginação também introduz algumas despesas gerais, como manutenção da tabela de páginas e sobrecarga de tempo de tradução de endereços. Para otimizar o desempenho do gerenciamento de paginação, tecnologias como estrutura avançada de tabela de páginas, mecanismo de cache e algoritmo de substituição de página podem ser usadas. Essas técnicas podem reduzir o tempo de consulta à tabela de páginas e melhorar a eficiência do acesso à memória.

**

Método de gerenciamento de página de segmento:

**
O gerenciamento de paginação por segmento é um método de gerenciamento de memória que combina as tecnologias de segmentação e paginação de gerenciamento de memória. Ele divide o espaço de endereço lógico do programa em segmentos e cada segmento é dividido em páginas de tamanho fixo. Por meio do gerenciamento de páginas de segmentos, você pode aproveitar as vantagens do gerenciamento de segmentos e do gerenciamento de páginas ao mesmo tempo.

No gerenciamento de páginas de segmentos, o endereço lógico do programa consiste em duas partes: número do segmento e número da página. A entrada correspondente na tabela de segmentos pode ser encontrada através do número do segmento e, em seguida, a entrada correspondente na tabela de páginas pode ser encontrada através do número da página. Finalmente, através da combinação de entradas da tabela de segmentos e entradas da tabela de páginas, os endereços lógicos podem ser convertidos em endereços físicos.

A principal vantagem do gerenciamento de paginação por segmentos é que ele pode fornecer alocação de memória mais flexível e maior utilização de memória. Pode alocar e liberar dinamicamente segmentos e páginas de acordo com as necessidades do programa, de forma a se adaptar a programas e estruturas de dados de diferentes tamanhos. Além disso, o gerenciamento de páginas de segmentos também pode fornecer melhor proteção e segurança de memória. Ao definir diferentes bits de permissão, você pode controlar os direitos de acesso a diferentes segmentos e páginas.

Embora a paginação por segmentos tenha muitas vantagens, ela também adiciona complexidade e sobrecarga ao gerenciamento de memória. É necessário manter tabelas de segmentos e tabelas de páginas e realizar a tradução de endereços de páginas de segmentos. Portanto, em aplicações práticas, o gerenciamento de páginas de segmento é usado principalmente em sistemas operacionais e cenários de grande escala que exigem funções de gerenciamento de memória mais avançadas, em vez dos métodos de gerenciamento de memória comumente usados.

Laptops pessoais normalmente usam gerenciamento de memória paginada. O gerenciamento de memória paginada divide a memória em páginas de tamanho fixo, em vez de segmentos, de acordo com a estrutura lógica do programa. O tamanho de cada página geralmente é de 4 KB ou maior. Quando um programa precisa acessar a memória, o sistema operacional traduz o endereço lógico em um endereço físico e carrega a página necessária na memória física.

A vantagem do gerenciamento de memória paginada é que ele é simples e eficiente. Ele permite que o sistema operacional aloque e recupere memória em unidades de páginas, proporcionando melhor utilização e flexibilidade da memória. Além disso, o gerenciamento de memória paginada também oferece suporte para memória virtual, permitindo que cada processo tenha um espaço de endereço virtual independente.

Deve-se observar que os notebooks pessoais também podem utilizar outras tecnologias de gerenciamento de memória, como gerenciamento de memória virtual e cache de memória. Essas técnicas podem melhorar ainda mais a utilização e o desempenho da memória. O método específico de gerenciamento de memória usado pode variar dependendo do sistema operacional e do hardware

Conceitos básicos de memória virtual


A memória virtual é uma tecnologia do sistema operacional do computador que combina a memória física e o espaço em disco do computador para fornecer um espaço de memória virtual para cada programa em execução . O conceito de memória virtual permite que um sistema operacional armazene temporariamente parte da memória de um programa no disco, em vez de carregar tudo na memória física. Isso pode efetivamente expandir o espaço de memória disponível, permitindo que o computador execute mais programas ao mesmo tempo

O princípio da localidade da memória virtual significa que quando um programa acessa a memória, existem características de localidade temporal e localidade espacial, ou seja, os programas tendem a acessar locais de memória usados ​​recentemente ou locais de memória próximos.

  1. Localidade Temporal: Este princípio afirma que se um programa acessar um local de memória, é provável que acesse o mesmo local de memória novamente em um futuro próximo. Isso ocorre porque os programas são frequentemente executados de maneira cíclica ou iterativa, acessando repetidamente a mesma área de memória.

  2. Localidade Espacial: Este princípio afirma que se um programa acessar um determinado local de memória, é provável que acesse locais de memória próximos no próximo período de tempo. Isso ocorre porque os dados de um programa geralmente são armazenados na memória de forma contígua e os programas tendem a processar os dados em pedaços.

O princípio da localidade da memória virtual tem um impacto importante no desempenho do sistema, pois permite que o sistema operacional tome algumas medidas de otimização no gerenciamento de memória, tais como:

  1. Cache: O sistema operacional pode utilizar mecanismos de cache para armazenar dados de memória usados ​​recentemente em um cache para acesso mais rápido.

  2. Substituição de páginas: Quando a memória física é insuficiente, o sistema operacional pode optar por substituir algumas páginas de memória acessadas com pouca frequência no disco de acordo com o princípio da localidade, abrindo espaço para páginas acessadas com mais frequência.

  3. Pré-busca: O sistema operacional pode carregar dados que podem ser necessários na memória antecipadamente de acordo com o modo de acesso à memória do programa para reduzir atrasos de acesso.

Compreender o princípio da localidade da memória virtual ajuda a otimizar as estratégias de gerenciamento de memória e a melhorar o desempenho do sistema e a utilização de recursos.

falha de página

Falha de página (Page Fault) significa que no sistema de memória virtual, quando a página (Página) acessada pelo programa não estiver na memória física, será acionada uma interrupção, chamada interrupção de falha de página.

Quando um programa acessa um endereço de memória virtual, o sistema operacional primeiro verifica se a página correspondente ao endereço foi carregada na memória física. Se a página já estiver na memória física, isso é chamado de hit de página (Page Hit), e o programa pode acessar diretamente a página. Mas se a página não estiver na memória física, isso é chamado de Page Fault.

Quando ocorre uma perda de página, o sistema operacional executará as seguintes etapas:
1. Salve as informações de contexto do programa atual, incluindo o status do registro e o contador do programa, etc.
2. Encontre os dados da página armazenada no disco.
3. Carregue a página do disco em um quadro de página livre (Page Frame) na memória física.
4. Atualize o relacionamento de mapeamento correspondente ao endereço de memória virtual na Tabela de Páginas.
5. Restaure as informações de contexto do programa e execute novamente a instrução interrompida.

Através do mecanismo de interrupção de falha de página, o sistema operacional pode carregar as páginas da memória virtual na memória física sob demanda, alcançando assim um maior espaço de memória e maior eficiência operacional. Quando ocorre uma perda de página, pode ocorrer algum atraso, pois os dados da página precisam ser carregados do disco. No entanto, através de um algoritmo razoável de substituição de páginas e de um mecanismo de pré-busca, o número de páginas perdidas pode ser minimizado e o desempenho do sistema melhorado.

processo de tradução de endereço

O processo de tradução de endereços da memória virtual pode ser descrito pelas seguintes etapas:

  1. O programa acessa o endereço de memória virtual: Quando um programa acessa um endereço de memória virtual, ele usa o endereço virtual para endereçar os dados ou instruções desejadas.

  2. Mapeamento de endereços virtuais para endereços físicos: A Unidade de Gerenciamento de Memória (MMU) no sistema operacional é responsável por converter endereços virtuais em endereços físicos. Ele usa tabela de páginas (Tabela de Páginas) para mapeamento de endereços.

  3. Pesquisa na tabela de páginas: MMU procura a entrada da tabela de páginas correspondente (entrada da tabela de páginas) na tabela de páginas de acordo com a parte do número da página no endereço virtual.

  4. Verifique o bit válido (Valid Bit): Na entrada da tabela de páginas, existe um bit válido usado para indicar se a página está na memória física. Se o bit válido for válido, significa que a página está na memória física e pode ser acessada diretamente. Se o bit válido for inválido (inválido), significa que a página não está na memória física e é necessária a paginação (substituição de página).

  5. Processamento de interrupção de falha de página: Se o bit válido da entrada da tabela de páginas for inválido, significa que ocorreu uma interrupção de falha de página (falha de página). O sistema operacional lida com a interrupção, carrega a página ausente do disco na memória física e atualiza os bits válidos e o endereço físico da entrada da tabela de páginas.

  6. Geração de endereço físico: Assim que a pesquisa da tabela de páginas for bem-sucedida, a MMU usará o número da página física na entrada da tabela de páginas e o deslocamento da página do endereço virtual para gerar o endereço físico final.

  7. Acesso à memória física: Utilizando o endereço físico gerado, a CPU pode acessar diretamente dados ou instruções na memória física.

Através do processo de tradução de endereços, o sistema de memória virtual pode converter o endereço virtual utilizado pelo programa em um endereço físico, de modo a realizar acesso e gerenciamento transparentes da memória. Esse mecanismo de mapeamento de endereço permite que a memória virtual forneça um espaço de memória maior, permite que vários programas sejam executados simultaneamente e fornece melhores mecanismos de proteção e isolamento de memória.

Acho que você gosta

Origin blog.csdn.net/weixin_43485737/article/details/132607363
Recomendado
Clasificación