How would one implement a segment-based Memory Management Unit ? I know that some of you guys are paging lovers

I was thinking about few solutions.. one of them is:
1) Create a descriptor for the GDT table itself. So i can access the REAL structure of the GDT and modify it on-the-fly with quick MOVes.
2) When a process asks for memory, create a descriptor on-the-fly with its specific info.
3) When the process end, delete its descriptor.
Looks pretty much logical and easy for me!
Please let me hear your comments and ideas ..
--devr