<div dir="ltr"><font face="monospace, monospace">Hi Folks,</font><div><font face="monospace, monospace">          In linux kernel space memory, on a system having 1G/3G address space division, the 0--3G address space is for user process whereas,</font></div><div><font face="monospace, monospace">~ 3G+1--4G is for the kernel space.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">When i visualize this whole, on 32 bit architecture, what i see, basically,is both a userland and a kernel space processes, are , in fact just processes with compiler generating code for 4G address space.</font></div><div><font face="monospace, monospace">However,address range for a kernel code is restricted to 3G+1---4G address space, whereas for userland code it is between 0--3G.</font></div><div><font face="monospace, monospace">Then, as far as my understanding is, this  is something which is done by linker/ loader. Which means, all the address generated for the kernel code, is relocated to 3G+1-4G address space by the linker/ loader, whereas all the address generated by the userland code is relocated to the 0-3G address space.</font></div><div><font face="monospace, monospace">This implies, kernel virtual address is always between 3G+1 -- 4G range on system which employ 1G/3G division rule.</font></div><div><font face="monospace, monospace">Can somebody confirm about this understanding?</font></div><div><font face="monospace, monospace">Any flaw here ??</font></div><div><font face="monospace, monospace">    </font></div></div>