bug-hurd
[Top][All Lists]
Advanced

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

RE: emulating no-senders notifications in L4?


From: Volkmar Uhlig
Subject: RE: emulating no-senders notifications in L4?
Date: Tue, 13 Nov 2001 10:12:56 +0100

> -----Original Message-----
> From: Thomas Bushnell, BSG [mailto:tb@becket.net] 
> Sent: Tuesday, November 13, 2001 1:36 AM
>
> When a task dies, its resources need to be all cleaned up.  If it's
> the last task with the right to send to that port, then a no senders
> notification should be sent.  If we rely on the task to do so itself,
> then sometimes it will not happen due to task misbehavior.

The general idea in L4 is to have a server which creates and deletes
tasks. This server "owns" the tasks and is the only one allowed to
execute the task_new syscall for them. L4 tries to keep task allocation
policy out of the kernel allowing user apps to replace the task server.
If an application wants to create or delete a task you simply send an
RPC. For L4-HURD I could imagine to have the server sending death-name
notifications.

> > The biggest problem however is one of performance. Since 
> IPC performance
> > is so critical, this pr-server stuff adds quite a lot of overhead to
> > a very common operation. This is the reason that it would be very
> > useful to think of other ways in the Hurd itself (if possible).
> 
> Can you propose one?
> 
> The problem here (which the abortive Fluke project also failed to
> note) is that a *global* conception needs to go on in the minds of
> microkernel designers.  Yes, not counting references can make things
> faster.  But in the actual world of providing services to users, some
> kind of GC simply must happen.  If it's not in the kernel, it's
> elsewhere, and often it's much more expensive to provide it elsewhere.

Regarding port rights -- I think it should be possible to have a central
policy server controlling port rights and a user-level IPC protocol
which grants and revokes port rights. That can be done lazily, piggy
backed or something else. I would expect that port rights are somehow
static (please correct me on that) compared to the number of total IPCs
in the system. Each server has to check if the client has the
appropriate "port"-rights.

-- Volkmar




reply via email to

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