> In principle, we need to do this already! The glaringest security > issue with the Hurd right now is the assumption that all users will > just take their pagers and hand them to the kernel with vm_map. But > they might play as "kernels" themselves. To deal with this, the > pagers need to be able to deal with multiple "kernels", and also have > strategies for dealing with recalcitrant "kernels" that aren't > behaving properly.
Wow! I had not thought of that. Thanks. > > From what I can see, the pager_memcpy function can be extremely slow. > > Just consider what happens when we just want to replace a page on disk > > (which has not yet been read in to memory). pager_memcpy causes a > > page fault. The kernel sends a message to the manager which reads the > > page from disk (which is completely unnecessary), then, we write to > > the page and eventually, it is flushed back to the disk. This is even > > worse if we are writing to multiple pages -- our thread and the > > manager thread play ping-pong! This could be avoided by acquiring as > > much of the range up front as possible. > > Why do you think this is so horrible? This is just demand paging. In the scenario case, we do a completely unnecessary read! That is not demand paging; that is a waste. > What's supposed to be going on behind the scenes is that the kernel > should detect that you are faulting the pages in sequentially, and ask > for pages from the pager ahead of time, optimizing the sequential > access case. But the manager knows; why force the kernel to guess? Say we send: io_read (file, data, vm_page_size * 4, 0, &amount) By the time the kernel detects a sequential read, it is already too late to be of any use. _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd