Correct me I am wrong.
Com prazer. Você está pronto?
Q1) My understanding is that in 32 bit mode we get 4GB virtual address space.
Correto.
Is this because 32 bit Windows can only support 4 GB physical RAM.?
Não, o tamanho da memória virtual é independente do tamanho da memória física ou instalada.
Essas quantidades são as mesmas somente porque elas usam valores (para endereços) com 32 bits de largura. Um processador pode ser projetado para ter um tamanho de endereço virtual diferente de seu tamanho de endereço físico. IIRC que foi feito de volta quando as dimensões do hardware e os custos foram muito maiores do que hoje.
Q2) Every process get its own private 4 GB address space.
Sim, um espaço de endereço virtual.
2GB user mode and 2GB kernel.
Não, "modo de usuário" refere-se ao estado operacional da CPU, ou seja, modos de CPU. A memória não tem um "modo de usuário" (nem "modo kernel").
A memória virtual é dividida em espaço do usuário e espaço do kernel.
Does the process maps its entire code to user mode and the OS cmponents needed for that process to communicate with processor to execute the code are loaded in kernel mode.?
Esta questão só pode fazer sentido se "modo" for substituído por "espaço".
O kernel é carregado na memória física durante a inicialização.
A execução do kernel é o que controla o sistema, por ex. inicialização e gerenciamento de processos.
O kernel é mapeado no espaço de endereço virtual de cada processo. É por isso que uma parte da memória virtual do processo é "espaço do kernel".
O código do programa e as bibliotecas (compartilhadas) são mapeados para a memória virtual no espaço do usuário.
O SO não "se comunica com o processador" (nem qualquer processo).
O processador / CPU executa instruções. Não há "comunicação" com a CPU.
Um processo é um trabalho ou tarefa conceituada que aloca recursos, como memória (virtual e física) e tempo de CPU programado.
A única interação entre um processo e o processador / CPU é a execução de instruções para esse processo. A interação entre o kernel e o processador / CPU é a execução de instruções para esse kernel, e o roteamento de exceções e interrupções.
Q3) If a process is getting its own private 4GB space.
Não há "if" . Cada processo recebe 4GB de memória virtual.
If I load 3 process, a total of 12 GB address space. Will I have performance issue as I have only 4 GB RAM.?
Não é provável, pois processos típicos raramente usam toda a memória virtual. E mesmo que existissem, há um repositório de armazenamento (por exemplo, o arquivo de paginação ou o espaço de troca) para lidar com situações em que há menos memória física do que o espaço de endereço virtual (que é o motivo original da utilização da memória virtual).
But as virtual address is designed to fulfill the need of process in case of less RAM.
Você provavelmente quer dizer memória virtual, não "endereço virtual" .
SO my real question, when a process(single process application) loads does it maps it entire code to the 4GB virtual address regardless the application is currently executing only a certain part of entire code.
(Por que sua "pergunta real" não recebe um número?)
Não tenho uma resposta definitiva, mas esperaria que ela carregasse todo o programa, a fim de realizar qualquer recolocação, bem como resolver qualquer vinculação externa (por exemplo, às bibliotecas).
Tudo o que é carregado tem que ser mapeado, isto é, memória física alocada.
What I understand is that when a process is started, all its code is loaded in virtual address space of 2GB user mode and rest 2GB it loads OS kernel files.
Mais uma vez, você usa indevidamente "modo de usuário" .
O carregamento do código do kernel é executado no momento da inicialização, não quando um processo é iniciado.
Now using page tables the virtual address is mapped to Physical address in RAM and disk.Is all the 4GB virtual address will be mapped to 4GB Physical RAM, and rest to the page file.?
Não, as tabelas de páginas mapeiam apenas a memória virtual para a física (em unidades de páginas). Não há mapeamento para "disco" . Isso soa como um equívoco comum de como o arquivo de paginação e a memória virtual funcionam. O arquivo de paginação é um armazenamento de apoio. Ele mantém temporariamente o conteúdo das páginas de memória virtual que não podem ser residentes na memória (isto é, memória física alocada).
If I refuse to use page file, does that mean that only 1 process with 4GB virtual address can run on 32bit 4GB OS.?
Não, porque normalmente um processo não usa todo o espaço de endereço virtual, portanto, não requer 4 GB de memória física. Eu já vi mais de duas dúzias de processos sendo executados em um sistema Linux de 32 bits com apenas 512 MB de RAM de instalação e nenhum arquivo de troca.