On 05 Dec 2003 13:49:02 -0500, "Jonathan S. Shapiro" shap@eros-os.org said:
JSS> Believe it or not, I'm converging, but I'm trying to do it respectfully, JSS> which means asking an unreasonable number of stupid questions at high JSS> speed. :-)
JSS> Now that I understand the shape of GPTs, I would like to understand the JSS> *mechanism* of the map operation. In particular, I would like to JSS> understand how the book-keeping mechanism works.
Hi Jon,
It seems that you're under a bit of a misconception here. GPTs are a pure implementation issue as far as L4 is concerned. In fact, most existing L4 implementation _don't_ use GPTs. AFAIK the only released versions of L4 that implemented GPTs were the (discontinued) V2 MIPS and Alpha kernels. And both of these used only a single, fixed node size.
On architectures with hardware-loaded TLBs L4 uses the HW page table format only.
Chris here at UNSW has designed and implemented a more general version of the GPT which we call the variable radix page table (VRPT). The implementation is (AFAIK) the first with really adaptive nodes, combined with some strategies for splitting and merging (plus support for superpages). He also handles the guard checking differently, doing an optimistic traversal and only check for correctness of translation at the end.
It's been originally implemented in an experimental kernel and is presently being ported to Pistachio.
I'll leave answering your specific questions to those who actually know the implementation ;-)
Gernot