I am confused with the segments in RAM memory,please clarify following doubts
- RAM has been been dived as User space and Kernel space;is this memory division is done by O/S or it is done by H/W(CPU). 
- What are the contents of kernel space;as far as i have understood there will be kernel image only,please correct me if i am wrong. 
- Where does this code,data,stack and heap segments exist? - a) Does User and Kernel space has separate code,data,stack and heap segments? - b) Is this segments are created by H/W or (O/S). 
- Can i find the amount of memory occupied by Kernel space and User Space? - a) Is there any Linux command (or) system calls to find this? 
- Why the RAM has been divided into user space and kernel space? - a) I fell it is done to keep the kernel safe from application program is it so?is this is the only reason. 
I am a beginner so please suggest me some good books,links and the way to approach these concepts.
 
     
     
    