The user code and data segments of a process are no longer in the LDT, but in the GDT instead. The code and data segment of each process starts at linear address 0 anyway, only the physical address is different (different page directory =CR3) Processes still have an LDT, this can be used by certain applications (WINE). In very early versions of Linux, user space was restricted to 64 MB and there were a maximum of 64 processes (including process 0, which had the kernel in its user space). Back then each process had a different linear address. making a total of 4GB. There was only one page directory, and there were per-process code and data segments, included in the LDT. This (somewhat elegant) scheme was abandoned to allow more than 64 processes and a per process virtual address space of more than 64MB. That's why certain kernels had they suer code and data segments in the LDT, though they were in fact the same segments for all processes. |