Stefan Götz wrote:
- RM sends non-propagating request and waits for reply
- DSM checks validity and translates request
- DSM replies to RM
In general the DSM should not be able to alter regions it is not managing, i.e. at least the receive window must be shrinked to the region, the fault occured in. On x86-Pistachio the hack of modifying BR0 in the UTCB of the faulting thread might work. On architectures that place BR0 in Registers this is not possible, so the steps 6 and 7 are required anyway.
- RM replies to faulting thread
- 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.
Marcus