l4-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Questions about copy-on-write


From: Rian Hunter
Subject: Re: Questions about copy-on-write
Date: Wed, 27 Oct 2004 19:22:05 -0400
User-agent: Mozilla Thunderbird 0.8 (Macintosh/20040913)

Sam Mason wrote:

Neal H. Walfield wrote:
physmem holds mappings
between virtual frame (per-task handles for physical memory blocks)
and physical frames.

Is this where most of the memory protections stem from?  Tasks can't
ask for arbitrary pages of memory but they can ask physmem for a new
(otherwise unused) page of memory or they can ask for a specific page
of memory out of a container.

If that's true then I think my confusion was coming from a belief that
this mechanism was in L4 iself, rather then physmem.

I think the next challenge for me is to figure out how a task can
revoke a mapping it gave to another task.  I guess I'll have to give
the L4 a bit of a read. . .
All of these questions will be answered in the current L4/Pistachio reference manual. It is almost imperative that you understand how L4 is doing things before worrying how the HURD works on top of it.

In general L4 does hand out pages (only once) using a server called "sigma0" which is where physmem takes all the memory, then takes over managing the memory. By hand out I mean map to a task.

A task revokes a mapping it gave by using the Unmap system call. This is how physmem will revoke a mapping. A discussion that Neal and Marcus had was how physmem will go about unmapping extra frames from user tasks, either pre-emptively unmapping frames it designates as extra or giving the task time to decide which one of it's frames it's extra then conceding that frame. I think it's safe to say that tasks in HURD/L4 will not have to worry about using the Unmap system call.

In the HURD I think it's convention that a user task will revoke a mapping from another task by asking physmem to do it.
-rian




reply via email to

[Prev in Thread] Current Thread [Next in Thread]