Memória virtual versus espaço de endereço virtual

Memória virtual versus espaço de endereço virtual

Eu sei que a memória virtual é um arquivo de paginação que o computador usa para armazenar parte da RAM no disco rígido para um processo em execução. Mas quão diferente é o espaço de endereço virtual? é a RAM ou o disco rígido ou ambos?

Responder1

O espaço de endereço virtual é o que um programa individual vê quando é executado. Dependendo de como o programa foi configurado, esse espaço de endereço será tão grande quanto o máximo suportado pelo sistema operacional.

O kernel do sistema operacional é então responsável por mapear endereços no vas para a memória física, seja RAM ou arquivos de páginas do sistema.

Com esse design, os próprios programas permanecem inconscientes dos recursos e endereços reais e podem operar como se tivessem toda a memória do sistema para si, ou pelo menos a memória máxima que um único processo pode usar.

Resumindo, um programa funciona com VAS, e o sistema operacional lida com o mapeamento do VAS para o armazenamento real, de modo que fique invisível para o programa em execução. O programa em execução vê apenas seu VAS.

Responder2

O espaço de endereço virtual é uma limitação no tamanho da memória que um programa pode endereçar.

Isso é limitado no limite externo pelo estilo dos ponteiros - um ponteiro puro de 32 bits pode, em teoria, endereçar 4 GB de espaço virtual. O limite real depende do design do sistema operacional, pois utiliza uma parte significativa do espaço de endereçoao ladoo espaço do usuário.

No Win32, a configuração padrão é permitir espaço de endereço virtual de 2 GB como espaço de usuário.

Um ponteiro de 64 bits pode endereçar muito mais, na prática normalmente são permitidos 48 bits e há muitos detalhes sobreesta resposta do superusuário.

Em teoria, alguém poderia construir um computador físico com RAM suficiente para que 2 GB de espaço do usuário pudessem ser mapeados diretamente para a memória física (provavelmente precisando de pelo menos 3 GB de memória física), para que você tivesse processos de 32 bits em que a memória virtual não fosse muito virtual.

Responder3

O espaço de endereço virtual é o que o processo vê. Por exemplo, seu e-mail fica em uma caixa de entrada com, digamos, 25 GB de tamanho. Esse é o seu espaço de endereço virtual.

O espaço de endereço virtual serve para distinguir o fato de que nem todo espaço de endereço virtual corresponde a umfísicoespaço de endereço. Digamos que você tenha 20 usuários de e-mail com 25 GB de espaço na caixa de entrada. Mas você só tem 100 GB de espaço em disco no seu servidor. Bem, você pode pegar e-mails antigos e arquivá-los e manter apenas os mais recentes em seu servidor, porque as pessoas geralmente verificam apenas os e-mails mais recentes.

Arquivar e-mails do servidor para, digamos, uma unidade de fita é semelhante ao computador paginando partes da RAM para o disco. Quando alguém olha um e-mail antigo, você simplesmente "pagina" o e-mail antigo da fita de volta ao seu servidor. O usuário do e-mail nunca saberá a diferença.

Da mesma forma, cada processo em sua máquina possuiXespaço de endereço virtual, mesmo que você tenha menos X * number of processesmemória física.

A memória virtual é exatamente isso. Espaço de endereço virtual. Mas a memória virtual é apenas o espaço de endereço virtual que você está usando.

informação relacionada