> 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

Reply via email to