[Top][All Lists]

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

Re: Research using L4Hurd

From: Niels Möller
Subject: Re: Research using L4Hurd
Date: 04 Jul 2002 13:18:27 +0200
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

address@hidden (Neal H. Walfield) writes:

> > Using a microkernel doesn't necessarily reduce the need for locking.
> > For instance Hurd file servers are heavily threaded (one thread for
> > each open file),
> This is not typically true.  You might be confusing this with
> select.

I may well be confused, but I don't think I'm confused in that
particular way. I was thinking about the server side of the
i/o-interfaces. My impression is that most Hurd file servers call
fshelp_manage_multithread which starts a new thread for each open.

> > It might be possible to write servers in a more select-loopish
> > fashion, without multithreading, but that's not the recommended way to
> > do it on the Hurd, and I'm afraid it will be even more unnatural when
> > moving to L4 and its syncronous ipc.
> I think you are confused about L4 ipc.  Although the ipc is
> synchronous, rpc do not have to be.

What's the difference between ipc and rpc here? In the hurd, it seems
the terms are used interchangably, and there's currently no truly
*remote* procedure calls. One proposed terminology is to say that
"ipc" is the microkernel communications primitive, and "rpc" is a
combination of one or more ipcs that correspond to one operation as
defined in some foo.defs file.

> Which is to say, when the client sends an ipc to a server, it blocks
> until either the supplied timeout is reach or the server does a
> receive.

When I said "unnatural", I was thinking of the restriction that each
thread can have at most one outstanding ipc call, i.e. a call that is
waiting for a server to receive it. Is that correct?

To have several outstanding rcp calls (per the above definition), the
rpc must consist of two separate ipc:s, representing call and return.
My impression have been that one goal is that most Hurd rpc calls
should correspond to a single L4 ipc (with some exceptions like
io_select), but I don't know if that's possible/practical.

But I'm sure you have thought a lot more than me on how to map Hurd
rpc calls onto L4 ipc. It would be very interesting to hear about your


reply via email to

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