On Sat, Jul 16, 2011 at 3:47 PM, Vaibhav Jain <vjoss197@xxxxxxxxx> wrote: > Hi Mulyadi, > > Thanks for the explanation.Its really nice! But > what I was referring to the was this article on virtual address layout of > program : > > http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory > > which mentions : "The distinct bands in the address space correspond to > memory segments like the heap, stack, and so on. Keep in mind these segments > are simply a range of memory addresses and have nothing to do with > Intel-style segments." > > This gave rise to all the confusion.I used to think that code, stack and > heap segments in the virtual address layout of a program > are the same as the segments which we talk about when referring to hardware > provided Segmentation. But seems like this is not the case. Segmentation and the virtual address layout are independent of each other so you shouldn't confuse the two. You can choose to have segmentation and then virtual addressing. The way it works is: logical address (segmented) -> virtual address -> physical address The logical to virtual conversion is called segmentation, and virtual to physical is called paging. The Software always uses logical addresses. The article explains "heap", "stack" etc are segments created by the operating system and have nothing to do with traditional Intel-style "segments". Infact the hardware would not be even aware of the presence of the heap. The HW only knows virtual addresses. > I also read a little about real and protected mode and came to know that in > 32-bit protected mode all the Segment registers point to the same address It happens so that Linux sets up the processor tables in such a way that the logical addresses map to the same as virtual addresses. IIRC, For x86 there's a "Global Descriptor table" that Linux manipulates to produce this one-to-one mapping. > This confused me even more. So I need an explanation of how all these work > together. I am Sorry if the question is > not clear or if it sounds confusing. Hope this clears it, do read the introduction chapters of Understanding the Linux Kernel which touches on a lot of these topics. Feel free to ask more questions. Thanks, Joel _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies