On Tue, 2003-12-09 at 04:00, Espen Skoglund wrote:
- The region mapper sends a request to the corresponding data space manager. Note that the request is sent "deceiving" or "propegating", meaning that the address space manager can reply direcly to the faulting thread.
- The data space manager checks if the request is valid and translates the request to a map operation (this translation can be implemented very efficiently).
- The data space manager replies with a mapping to the faulting thread.
- The faulting thread resumes execution.
This protocol is actually an optimization of the following original protocol which is implemented in SawMill Linux:
5. RM sends non-propagating request and waits for reply 6. DSM checks validity and translates request 7. DSM replies to RM 8. RM replies to faulting thread 9. fautling thread resumes execution
With this protocol, the client does not have to trust the DSM. If the DSM does not reply (properly), the RM can fix up the faulting thread to e.g. execute something like a signal handler.
Stefan