On Fri, 2003-12-05 at 12:34, Joshua LeVasseur wrote:
On Dec 5, 2003, at 17:21, Jonathan S. Shapiro wrote: One can look at the mapping database as providing a mechanism for the kernel to handle operations which would be too expensive from user level, as long as those operations require no policy decisions. So the mapping database evicts entries when a policy decision might be necessary (or if the implementation becomes too hairy).
If a mapping is missing from the kernel's cache, then a policy decision is necessary from user-level. The policy decision can be requested via a page fault request; the kernel synthesizes a page fault message to the faulting process's pager...
Hope my ramblings helped, Josh
This was VERY helpful. It assists me in understanding a number of points of confusion that I have had in previous discussions with various L4 people.
What you describe is one of the key differences between the L4 and EROS designs. As I am coming to understand L4 better, I'm coming to think that it is the only really *important* difference between the two architectures:
- In EROS, a node tree DEFINES an address space. Since it is the ultimate defining data structure, it can be paged but not discarded (or at least, not without losing the mappings).
- In L4, the mapping table is a cache of things defined at user level.
shap