[LCP]A small doubt on fork
Bill Rausch
bill at numerical.com
Sat Oct 20 01:01:31 UTC 2001
In a multi-process, virtual memory system like Linux (or other
UNIX-like systems), each process has its own complete address space.
Therefore each process has its own location zero, it own location
one, etc. up to the maximum size of its addressable memory.
Each of these virtual address spaces is surprisingly large and most
of it never gets used. Write a recursive function sometime and print
out the address of a local variable. Now write a function that calls
malloc in a loop and print out those addresses. Print out the
addresses of some global variables. You'll see that these are all
very different than each other, often a much larger range than the
amount of actual memory/swap space you have configured for your
system. This works because the virtual memory management system
allows unused "holes" inside of the address space. It only really
needs to allocate the actual pieces you are using as you need them,
not the whole thing in advance.
At runtime, the virtual addresses are translated into real physical
addresses (which we never see as application programmers).
At 1:52 PM +0530 10/19/01, sasidhar p wrote:
>Hi,
> The result of the following program is surprising me...
>...
>In parent address of i = effffa68
>In child address of i = effffa68
>
>Problem : I was expecting that the addresses shold be different
>because fork creates a new process. But the o/p is both addresses
>are same.
>
>Question: Why is this so?
>
--
Bill Rausch, Software Development, Unix, Mac, Windows
Numerical Applications, Inc. 509-943-0861 bill at numerical.com
More information about the linuxCprogramming
mailing list