On 4/17/06, Asim Kadav <linkasim@xxxxxxxxx> wrote: > Hi, > > Process A has a memory allocated and memory pointer x pointing to that memory. > I fork process B from a running process A.B gets a new copy of the > memory and the pointer.However, printing x in A and B points to the > same memory location(though actually differnt physical memory > locations).What is the concept of VM here.Can anyone kindly explain ? The address you are seeing here are the virtual address not the physical address. Virtual address are mapped to physical address through page table and page directory structures which are different for every process. The virtual address you are seeing is 32 bit address, this is divided into three parts, first 10 bits tells the index into page directory whose base address is stored in CR3 register of processor in i386 architecture. From this index we get the base address of concerned page table. Next 10 bits of virtual address is the index into page table whose base address we just got from page directory. Now at this index in page table we get the base address of the physical page we are concerned with. Now last 12 bits of virtual address is an offset into this physical address. This is how the virtual address is converted to physical address. So when you are printing the address of a varaible in your parent and child process, both have same virtual address, but are actually mapped to two different physical addresses through their own page table. Hope this explanation helps you. regards, Gaurav > > ======================= > For eg. : > > [root@XXXXX]# cat test.c > #include <stdio.h> > > main () > { > char a; > a='b'; > fork(); > a='c'; > printf ("%x\n",&a); > } > > > [root@XXXXXX]# ./a.out > bfed3237 > bfed3237 > > Thanks, > Link > > -- > Kernelnewbies: Help each other learn about the Linux kernel. > Archive: http://mail.nl.linux.org/kernelnewbies/ > FAQ: http://kernelnewbies.org/faq/ > > -- -- -Gaurav Email: gauravd.chd@xxxxxxxxx --------------------------------- Read my blog at: http://lkdp.blogspot.com/ --------------------------------- -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/