Pesquisa · Mapa mental

Memória virtual

Memória virtual é uma técnica em memória do computador que usa a memória secundária como uma cache para armazenamento secundário. Houve duas motivações principais: permitir o compartilhamento seguro e eficiente da memória entre vários programas e remover os transtornos de programação de uma quantidade pequena e limitada na memória principal.

Fonte: Wikipédia (pt)Atualizado em 22/07/2026
01

Paginação para principiantes

Imagem: Força Aérea Brasileira - Página Oficial · BY-NC-SA · Openverse

Para o usuário que está com pouca memória RAM, paginação é muito útil pois possibilita que os seus programas utilizem um tamanho à sua escolha para usar como uma memória "RAM" virtual. Mas caso a memória do programa exceda a memória real do seu sistema, apenas as partes mais utilizadas pelo processo atual estarão na memória, enquanto o resto ficará armazenado no disco rígido. Como o disco rígido é um hardware mais lento do que a memória RAM, essa memória virtual que foi dimensionada não será igual como se estivesse a utilizar uma memória RAM normal no computador. A melhoria é significativa quando você usa memória virtual em um computador que não tem a mesma.

02

História

Imagem: Força Aérea Brasileira - Página Oficial · BY-NC-SA · Openverse

Todos os computadores modernos de uso genérico utilizam memória virtual para executar a mais simples das aplicações, tais como processadores de texto, folhas de cálculo, jogos, leitores multimídia, etc. Os sistemas operacionais mais antigos, como o DOS e o Microsoft Windows de 1980, ou os mainframes da década de 1960, geralmente não tinham a funcionalidade da memória virtual, com as excepções notáveis do Atlas B5000 e o Apple Lisa. A memória virtual foi inicialmente criada para possibilitar a um programa ser executado em um computador com uma quantidade de memória principal (física) menor que o tamanho de todo o espaço utilizado pelo próprio programa. Ou seja, o espaço ocupado pelas instruções, dados e pilha de execução de um programa pode ser maior que o espaço em memória principal disponível. Por exemplo, um programa que ocupa um total de 64 MiB pode ser executado em um computador com apenas 32 MiB disponíveis para o programa, bastando que o sistema operacional se encarregue de manter sempre na memória principal as partes adequadas à execução naquele momento.

03

Funcionamento

Imagem: Força Aérea Brasileira - Página Oficial · BY-NC-SA · Openverse

Existem dois mecanismos principais para implementação da memória virtual: paginação e segmentação Na paginação a memória física é dividida em blocos de bytes contíguos denominados molduras de páginas (page frames), geralmente com tamanho de 4 KiB (arquiteturas x86 e x86-64) ou 8 KiB (arquiteturas RISC) de tamanho. Por sua vez, o espaço de memória de um processo (contendo as instruções e dados do programa) é dividido em páginas que são fisicamente armazenadas nas molduras e possuem o mesmo tamanho destas. Na segmentação existem vários espaços de endereçamento para cada aplicação (os segmentos). Neste caso, o endereçamento consiste em um par ordenado deslocamento, onde o deslocamento é a posição do byte dentro do segmento. Na arquitetura x86 (32 e 64 bits), são usadas a segmentação e a paginação. O espaço de endereçamento de uma aplicação é dividido em segmentos, onde é determinado um endereço lógico, que consiste no par [segmento:deslocamento]; o dispositivo de segmentação converte esse endereço para um endereço linear (virtual); finalmente, o dispositivo de paginação converte o endereço virtual para físico, localizando a moldura de página que contém os dados solicitados.

Linux em 32 bits

Na arquitetura x86 de 32 bits, o Linux pode endereçar até 4 GB de memória virtual (também chamado de espaço de endereçamento linear). Este espaço é dividido em dois: o espaço do núcleo (kernel space) e o espaço do usuário (user space). O primeiro é único e protegido das aplicações comuns, e armazena, além do próprio código do núcleo, uma estrutura que descreve toda a memória física; este espaço é limitado a um gigabyte (1024 MB). Cada aplicação recebe um espaço de endereçamento de até 3 GiB para armazenar o código e os dados do programa. Caso a memória física seja menor do que a necessária para conter todas as aplicações, o Linux pode alocar espaço em meios de armazenamento diversos (disco rígido, dispositivo de rede e outros). Este espaço é tradicionalmente conhecido como espaço de troca (swap space), embora o mecanismo adotado seja a paginação.

Windows em 32 bits

Analogamente ao Linux, as versões atuais do Windows de 32 bits usam um espaço de endereçamento de 4 GiB divididos em duas partes. Por padrão, o Windows reserva 2 GiB para o núcleo e permite que cada aplicação use até 2 GiB. Entretanto, é possível alterar essa configuração, e permitir que uma aplicação use até 3 GiB. Neste caso, obviamente, o espaço do núcleo será reduzido para um gigabyte . Diferentemente do Linux, o Windows usa apenas arquivos para paginação (paging files). Pode usar até 16 desses arquivos, e cada um pode ocupar até 4095 MiB de espaço em disco.

04

Espaços virtuais

Imagem: Força Aérea Brasileira - Página Oficial · BY-NC-SA · Openverse

Um sistema operacional convencional separa a memória virtual em espaço do núcleo e espaço do usuário, onde podem ser implementados threads(Tarefas).

Espaço de núcleo

O espaço do núcleo é estritamente reservado para o núcleo, extensões do núcleo e alguns drivers de dispositivos. Em muitos sistemas operacionais, o espaço de memória ocupada pelo núcleo nunca é paginada no disco. De outro lado, o espaço de memória do usuário (no qual funcionam todos os aplicativos de modo usuário) pode ser paginada no disco sempre que necessário. Cada processo no espaço de usuário executa no seu próprio espaço de memória virtual e, exceto se requisitado, não pode acessar a memória de outro processo. Essa é a base de proteção de memória nos principais sistemas operacionais de hoje. Dependendo do privilégio, os processos podem requisitar ao núcleo o mapeamento de parte de outros espaços de memória de processos para os seus próprios como é o caso de depuradores. Os programas podem, inclusive, requisitar áreas de memória compartilhadas com outros processos.

Vídeos recomendados

Fontes consultadas

Continue pesquisando