[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
plans.
Regards,
/Niels