On 11/18/08, ruby <ruby185@xxxxxxxxx> wrote: > hi, all > > One line I often read is each process is given a unique 32-bit or 64-bit flat address space, known as process address space. > > So it sounds like a process have the whole space to itself and read or write as it wants, but it is not entirely true since before it can read or write, it must ask kernel for it, to get a so-called memory area (represented by vm_area_struct), is this understanding correct? There is a memory management subsystem of the kernel which checks if a read/write to memory is legitimate, allocates and deallocates memory for the user-space processes. ' vm_area_struct ' is a data-structure of the mm subsystem. > Another related question is when people talks about 1G/3G split, 1G is for kernel, 3G is for process, are they referring to the same process address space? Yes. > For each process's address space, in addition to its own code, data, shared library code and data etc. are there any kernel code in it? that doesn't make much sense. There is a clear cut seperation of the memory space between kernel and user space. -- Smart data structures and dumb code works a lot better than the other way around. -Eric S Raymond -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ