Hi, I'm reading "Understanding the Linux Kernel - 2nd Edition" and have some problems with Chapter 2 - memory addressing. 1) Segmentation: Each time a logical address is loaded into a segmentation register, the corresponding segment descriptor is loaded into a non-programmable register. The segment descriptor tells me the linear start address of the segment. "Accesses to the GDT or LDT are necessary only when the contents of the segmentation register change". When does this situation appears? I mean if I have another logical address it is loaded into the segmentation register and the corresponding segment descriptor is loaded automatically. Why should I change the segmentation register which contains the segment selector? Could you provide some examples? 2) Is it correct that without segments I could not provide privilege levels (user=3, kernel=0) ? If I haven't overseen anything, there are no flags in the paging entries. 3) "The 2.4 version of Linux uses segmentation only when required by the 80x86 architecture. In particular, all processes use the same logical addresses, so the total number of segments to be defined is quite limited". Why? 4) I haven't coded in the kernel. But if I have an address (e.g. from a malloc() return value), what kind of address is this? A 32-bit linear address, a 48-bit logical address? I do not understand where the 48-bit addresses are "created" which one needs for segments... I'm a bit confused with the whole paging / segmentation stuff, perhaps you can help me a bit. Do you have some recommendations (links, books)? Thanks in advance Andreas -- ^^^ | Andreas Leppert d(O_o)b | GPG/PGP-Key-ID: 0x4845F397 >-|-< | GPG/PGP-Finger: E3C0 8438 6F0C 2D02 5E0C / \ | 0306 E847 964A 4845 F397 | | -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ