If you don't mind me asking, who was he/she and how did you meet him/her?Pype.Clicker wrote:a microsoft researcher i once met was working on such single-space protections mechanism.
That sounds a lot like the way Windows CE works (just read up on it last night). I guess it saves you from having to flush all non-global TLB entries -- instead you'd just have to flush all the entries for the two apps involved in the "process switch". I'm not sure the complexity is worth it.One of the thing he used was to modify the 'present' mappings as thread were tunnelled from one component to another. E.g. as the thread leaves the 'application' context to run code from the TCP component, parts from the TCP component were now mapped as present (they were previously marked absent so that the application cannot harm them), and as the thread executed IP component, TCP pages were hidden again and IP pages revealed. When the thread finally returned to the application, everything came back to "normal".
I doubt it. Singularity depends entirely on static verification of type-safe code to ensure that one process does not refer to memory owned by another process. It's pretty cool, actually -- I recommend reading their technical report. Unfortunately for us hobbyists, their compiler technology is way beyond what any one of us could hope to whip up in our spare time.i dunno if they integrated that into singularity or not, however.
Because of all these questions bubbling in my mind about memory management, I've now started looking at how I will design IPC, and to figure that out, I'm trying to imagine how I might eventually implement a TCP/IP stack or file system. I wanted to keep things practical, but I guess sometimes you need to take a step back and reflect in order to make the next big design decision...