Gerenciamento de memória no Windows de 32 bits

0

Em um sistema de 32 bits, o espaço de endereço virtual de 4 GB para todo o sistema operacional ou para o processo individual?

Se for para todo o sistema operacional, o sistema operacional faz o papel de todos os processos com seus próprios 4 GB de espaço de endereço?

Quando um processo é iniciado, ele utiliza todo o espaço de endereço virtual? É o que chamamos de confirmação ou reserva de endereço virtual?

Como podemos descobrir quanto espaço de endereçamento virtual é requerido por um processo? E se um processo exigir mais endereço virtual do que 3 GB (sistema de modo de usuário estendido).

    
por Aman Yadav 26.07.2018 / 04:06

3 respostas

0

Não, não há como enganar, você tem 4 GB de RAM no máximo para todo o sistema operacional.

Você pode ativar o PAE, que às vezes, se funcionar, permite que o Windows reconheça mais de 4 GB. Ainda longe de um sistema operacional de 64 bits.

    
por 26.07.2018 / 04:35
0

Um espaço de endereço virtual de 4 gigabytes é criado por processo, que é compartilhado entre o sistema operacional e o processo. O sistema operacional decide o limite (que é fixo para todos os processos). O sistema operacional existe em todo espaço de endereço virtual. IOW o "processo [tem seu próprio espaço de endereçamento de 4GB", mas tem que compartilhá-lo com o sistema operacional, e não pode ler, escrever ou executar a parte da memória virtual que pertence ao kernel.

If I am running 3 process on 32 bit windows which are designed with requirements 1 GB RAM each. Will there be memory allocation issue on a 2GB RAM system. If not, how does windows achieve this.?

Um processo de usuário não tem o privilégio de exigir memória física que permanece residente (ou seja, não pode ser trocada). Como os esquemas de memória virtual usam troca (com um arquivo de página ou espaço de troca em um dispositivo de armazenamento em massa), normalmente não há problemas executando vários processos de espaço de endereço virtual de 4 GB com memória física menor que o tamanho virtual.

É possível criar uma condição de falta de memória (OOM) se os processos criarem grandes demandas de memória e não houver memória física e espaço de troca suficientes.

Does all the virtual address space of a process is allocated a physical address in physical memory or is it a lazy allocation where the mapping is only done when that virtual address is accessed?

Nunca é necessário que um programa inteiro seja alocado para memória física e carregado na memória.
O mapeamento da memória física para um processo é baseado na necessidade.
Um processo só precisa ser residente na memória quando estiver realmente sendo executado e, no mínimo, independentemente de seu tamanho, somente uma página de código que é atualmente referenciada pelo registro do contador de programa e quaisquer páginas de referências de dados devem ser residentes reais .

Então, sim, há uma "alocação lenta onde o mapeamento só é feito quando esse endereço virtual é acessado" , também chamado de paginação por demanda.

    
por 26.07.2018 / 04:44
0

In a 32-bit system is the 4GB virtual address space for the whole OS or is it for individual process?

Cada processo tem seu próprio espaço de endereço virtual de 4 GB, dos quais 2 GB são para o espaço do kernel. No Windows de 32 bits, você pode usar LARGEADDRESSAWARE com /3GB opção de inicialização para reduzir o espaço do kernel para 1 GB

O sistema operacional obterá um barramento de endereços mais amplo com PAE , para que ele possa realmente endereçar mais de 4 GB de RAM.

If it is for the whole OS, then does the OS fools every process that it has its own 4GB of address space?

Não há enganos aqui. Endereço virtual! = endereço físico . Cada processo sempre tem seu próprio espaço de endereço de 4 GB, independentemente da quantidade de RAM física, para que não atrapalhe os dados de outros processos. Mesmo se você tiver apenas 128 MB de RAM, ainda terá um espaço de endereço de 4 GB. Isso porque os ponteiros em programas de 32 bits são sempre de largura de 32 bits. O espaço de endereço não é usado apenas para RAM, mas também para dispositivos MMIO, e o processo também pode mapear um arquivo diretamente para o espaço de endereço < / a>

Se o sistema tiver mais de 4 GB de RAM, o processo poderá usar AWE para mapear endereços mais altos para uma janela de 4GB, de modo que possa acessar toda a memória disponível. Ou também pode criar vários processos, como Adobe Premiere CS4 , a fim de utilizar mais de uma limite de memória do processo único

When a process is started does it utilize all the virtual address space? Is it what we call committing or reserving virtual address?

O processo tem 2-4GB de espaço de endereçamento, mas é claro que depende do processo para decidir quanta memória ele quer. Se um processo for solicitado para mais memória do que a disponível, mas não foi realmente gravado nessa área, ele não consome nenhuma memória. Isso é chamado de comprometimento e é permitido no Linux , mas o Windows não permite que você aloque mais que RAM total + arquivo de paginação disponível

How can we can find how much virtual address space is required by a process? What if a process requires more virtual address than 3 GB (extended user mode system).

O espaço de endereço virtual é sempre 2/3/4 GB, você não pode ter mais do que isso, a menos que você mude para uma arquitetura com um endereço virtual de mais de 32 bits. Exigir mais de 3 GB de RAM é um problema diferente. Nesse caso, existem várias soluções

  • Execute o processo no Windows de 64 bits com LARGEADDRESSAWARE , nesse caso, ele pode acessar 4 GB de memória
  • Usa mais de um processo como o exemplo do Premiere CS4 acima
  • Use AWE conforme mencionado acima
  • Reescreva o algoritmo para que ele use menos memória, caso você tenha o código-fonte
  • Use a versão de 64 bits do programa

If I am running 3 process on 32 bit windows which are designed with requirements 1 GB RAM each. Will there be memory allocation issue on a 2GB RAM system

Normalmente, não haverá problemas, pois alguns deles podem ser movidos para o arquivo de paginação. Mas é claro que vai ser muito mais lento

If not, how does Windows achieve this? Does all the virtual address space of a process is allocated a physical address in physical memory or is it a lazy allocation where the mapping is only done when that virtual address is accessed?

O endereço virtual inteiro é não mapeado linearmente como um grande pedaço no espaço de endereço físico. A memória é mapeada em páginas , por isso haverá muitos endereços indefinidos em um espaço de endereço de processo como este

Alémdisso,algumaspáginasfísicasaparecerãoemváriosespaçosdeendereçovirtualparaqueosprocessospossamcompartilharseusdados.Algumaspáginascompartilhadasmarcadascomosomenteleituratambémserãoclonadasautomaticamentequandogravadasparaeconomiadememória.Issoéchamado copy-on-write

Você precisa ler sobre a memória virtual primeiro

por 26.07.2018 / 05:35