0
Correct me I am wrong.
Q1) My understanding is that in 32 bit mode we get 4GB virtual address space. Is this because 32 bit Windows can only support 4 GB physical RAM.?
Q2) Every process get its own private 4 GB address space. 2GB user mode and 2GB kernel. Does the process maps its entire code to user mode and the OS components needed for that process to communicate with processor to execute the code are loaded in kernel mode.?
Q3) If a process is getting its own private 4GB space. If I load 3 process, a total of 12 GB address space. Will I have performance issue as I have only 4 GB RAM.?
But as virtual address is designed to fulfill the need of process in case of less RAM. 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.
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. 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.? If I refuse to use page file, does that mean that only 1 process with 4GB virtual address can run on 32bit 4GB OS.?
============================================================================= Thank you for the previous answers.
I am still bit confused about how the User and Kernel address space is divided.
1)Is Kernel address space of 2 GB is shared by all process because it is system wide and loaded at boot time.? or Does every process get a 2GB of kernel address space.? 2) I read some badly written application can consume all of it's address space.? Does that mean there is no room for other applications to run now on a 4GB machine.? 3)If a Kernel address space is shared by all process, does it ever run out of address space or it never does because(I think) the kernel address remains fixed based on OS architecture and shared by all process. 4)By using USERVA switch, the Kernel address is reduced to 1 GB just for application with Large address aware. Why is doesn't do it do for all process if the kernel address space if 2GB(which I think) is shared among all process.? 5)How exactly we differentiate b/w virtual memory and virtual address sace.? If a application need 5GB memory as per devloper will it not run on 32 bit machine with 2GB address(Is it ok to say virtual memory of process = virtual address space of process?)
most of this was answered on your previous question Memory management in 32-bit Windows. 3 processes' virtual addresses don't add up to 12GB, since they're not linearly mapped, otherwise tons of memory would be wasted when a process uses only 10MB of RAM but consumes the whole 4GB address chunk. If you open task manager you'll see that there are thousands of processes, does that mean the computer needs TBs of RAM?
– phuclv – 2018-07-30T15:48:23.930