comp.lang.ada
 help / color / mirror / Atom feed
From: Nick Roberts <nick.roberts@acm.org>
Subject: Re: For the AdaOS folks
Date: Wed, 5 Jan 2005 18:02:51 +0000
Date: 2005-01-05T18:02:51+00:00	[thread overview]
Message-ID: <gemini.i9uvgr00do21q00z4.nick.roberts@acm.org> (raw)
In-Reply-To: IFKCd.15446$Y_4.1477860@read2.cgocable.net

"Warren W. Gay VE3WWG" <ve3wwg@NoSpam.cogeco.ca> wrote:

> Mach's migrating threads do in fact cross into other "tasks". Instead of a
> caller thread stopping when a message is queued, and the receiving thread
> starting (from a blocked state), a migrating thread continues from the
> caller, works through the server code, and then returns back to the caller
> (in the caller's "task"). This is a simplification of what happens,
> because there are "activations" and stack games that must happen to make
> this work - but it is a migrating thread.

I'm not quite sure what you're getting at, Warren. I don't think it's very
surprising that Mach has capabilities that are similar to Bachar, since they
are both aimed at doing roughly the same thing. But there are significant
differences in the details. I did begin designing (what has become) Bachar a
long time ago (pre-1990s).

> > They take the attitude that the C interface must remain the same,
> > regardless of the machine. I think that's impractical.
> 
> In what way?

There are sufficient differences between some architectures (e.g. a CISC
such as the IA-32 and a RISC such as the PowerPC) to warrant a difference in
the interface between a microkernel intended for one and a microkernel
intended for the other, even if the software on top is intended to be the
same. Some of these differences cannot be hidden by C (more of them can be
hidden by Ada, in fact).

> > I've designed the Bachar interface so that it will use real machine
> > registers, rather than pretend registers.
> 
> But don't forget the MRs are immediately loaded into registers after all
> of your "deposits" are made. I don't think you can level valid efficiency
> arguments against L4. AFAICS, it is the best performing microkernel
> available.

One of the advantages of using real registers that an Ada compiler's ability
to optimise register usage can be brought into play when calling kernel
services. Admittedly, this might not be important in practice, but
theoretically it is an advantage. The L4 people don't seem to have
considered the issues concerning the use of a language other than C.

As for performance, I suppose ultimately the proof of the pudding will be in
the eating. I suspect that Bachar will do quite well against L4. It won't be
as fast, but it does more anyway.

> I think L4 has done a nice job of saving the programmer from the hassle of
> potential processor differences. They've apparently done a good job of it,
> because it performs quite well in the benchmark tests compared to the
> others.

Yes, but AdaOS will do a much better job of saving the programmer from the
hassle of potential processor differences, but the simple token of allowing
the programmer to program in Ada!  Most such differences will vanish from
the programmer's horizon, because they are taken care of by the Ada
compiler, in a way that a C compiler cannot achieve.

> > > But if you look at the Mach paper above, you can do the very same
> > > thing with ports. Even without thread-migration, you can interpose
> > > proxies. With thread-migration enabled RPC, you achieve both and
> > > provide the OS designer a nicer interface.
> > 
> > But if we did that, what would be the advantage?
> 
> Its cheaper. To have 1000 send rights, costs near nothing. 1000 send
> rights in one task costs nothing (just increments ref count). 1000 in a
> 1000 different tasks, costs one pointer in each task. Nothing further.
> 
> 1000 threads OTOH, costs you state information for each of those 1000
> threads (same task or different). The amount of state information needed
> will vary with platform.

I have to guess somewhat, Warren, at the point you are making (maybe it's my
fault). Are you suggesting that if I have 1000 client processes (or
threads?) performing trans-network IPC, it will be necessary to have 1000
(or 2000?) proxy processes (or threads)? On AdaOS, in practice, there will
only be one proxy process (the program Avarus, running once on each
workstation).

> > I don't see the point in making the microkernel /that/ minimalist, to be
> > honest. Whatever the upper layer did, it would have to be dependent upon
> > intimate details of the kernel. So why not just lump them together?
> 
> But in your answer:
> 
> > I have taken the approach of local IPC being supported by the
> > microkernel (and lower levels of TCB software), and network IPC being
> > supported by a higher layer of TCB software (Avarus).
> 
> If I understand correctly, you are saying that your network "layer" is
> already built on top of lower levels (like microkernel).

Yes, that's correct.

> > > To make this work, as I envision it, requires that all participating
> > > nodes in a cluster see the file system the same way. IOW, there can
> > > only be one root file system, which obviously is only local to one
> > > node. To all other nodes, root will be access NFS-like (ie. over the
> > > network cable).
> > 
> > This is a fundamental precept of fully distributed networking.
> 
> It would seem so, but I think there is room for creative thinking here.
> Perhaps a "context sensitive view" is also possible.

Indeed, for legacy software it may be necessary to do that sort of thing. I
think I will attempt to organise the canonical file hierarchy according to
the FHS. However, for a program written to be run on a Windows computer, for
example, it may be necessary to translate '\' into '/', as well as drive
letters into the appropriate mounted drive names, and so on.

> > > SQL databases are designed to deal with large volumes of similar data,
> > > in SELECTs, joins etc. However, when you look at what goes into the
> > > registry, a lot of it is custom, hierarchically structured
> > > information.
> > 
> > No, the kind of data that goes into the Registry would be naturally
> > organised in many complex ways. For example, many different applications
> > store their own font information, but a font disinstaller may well wish
> > to be able to 'cut across' this font data, to make appropriate
> > adjustments (for all the applications). As another example, some
> > applications may wish to store data for several different users, but an
> > adminstrative program may wish to change all the data (across many
> > applications) for a particular user.
> 
> The same argument can be made for changing file systems into databases. So
> far, the filesystems approach seems to be the clear winner for that kind
> of data.

On the contrary, the database approach has been used by IBM (on their
mainframes and minis) for decades, and appears to be a clear winner over
using files. Microsoft have had plans for quite a long time now to introduce
a database-based OS as a replacement to Windows.

-- 
Nick Roberts



  reply	other threads:[~2005-01-05 18:02 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-27  5:09 For the AdaOS folks Wes Groleau
2004-12-27 10:56 ` Florian Weimer
2004-12-27 12:50   ` Georg Bauhaus
2004-12-27 13:12     ` Florian Weimer
2004-12-28  1:18   ` Wes Groleau
2004-12-27 13:46 ` Adrien Plisson
2004-12-27 16:28   ` Georg Bauhaus
2004-12-28  6:19   ` Microkernels & Ada (Was for the AdaOS folks) Warren W. Gay VE3WWG
2004-12-28 12:02     ` Adrien Plisson
2004-12-28 15:28       ` Warren W. Gay VE3WWG
2004-12-30  1:19 ` For the AdaOS folks Nick Roberts
2004-12-30 13:58   ` Warren W. Gay VE3WWG
2004-12-30 15:27     ` Dmitry A. Kazakov
2004-12-30 16:30       ` Warren W. Gay VE3WWG
     [not found]         ` <otb8t09dkjh54e1k5s5ccn23ggkqk6ndui@4ax.com>
2004-12-30 19:06           ` OT: Mach Ports (For the AdaOS folks) Warren W. Gay VE3WWG
2004-12-31 10:03         ` For the AdaOS folks Dmitry A. Kazakov
2004-12-31 11:30           ` Warren W. Gay VE3WWG
2004-12-31 12:31             ` Dmitry A. Kazakov
2004-12-31 16:24               ` Warren W. Gay VE3WWG
2004-12-31 17:57                 ` Marven Lee
2004-12-31 18:40                   ` Warren W. Gay VE3WWG
2004-12-31 19:22                     ` Warren W. Gay VE3WWG
2005-01-02 15:09                     ` Marven Lee
2005-01-02 20:06                       ` Luke A. Guest
2005-01-03  3:13                         ` Warren W. Gay VE3WWG
2005-01-03  6:40                           ` Luke A. Guest
2005-01-03 10:30                             ` Marven Lee
2005-01-03 15:52                             ` Warren W. Gay VE3WWG
2005-01-03 16:48                           ` Ad Buijsen
2005-01-03 18:49                             ` Warren W. Gay VE3WWG
2005-01-03 13:43                         ` Marven Lee
2005-01-04 23:36                         ` Nick Roberts
2005-01-03 16:22                       ` Warren W. Gay VE3WWG
2005-01-04 23:16                       ` Nick Roberts
2005-01-05  3:48                         ` Warren W. Gay VE3WWG
2005-01-05 13:14                           ` Nick Roberts
2005-01-01 12:53                 ` Dmitry A. Kazakov
2005-01-02  0:31                   ` Warren W. Gay VE3WWG
2005-01-02 11:50                     ` Dmitry A. Kazakov
2005-01-02 22:04                       ` Warren W. Gay VE3WWG
2005-01-03 10:30                         ` Dmitry A. Kazakov
2005-01-03 16:36                           ` Warren W. Gay VE3WWG
2005-01-03 17:05                             ` Dmitry A. Kazakov
2005-01-03 19:01                               ` Warren W. Gay VE3WWG
2005-01-03 19:55                                 ` Dmitry A. Kazakov
2005-01-03 20:44                                   ` Warren W. Gay VE3WWG
2005-01-04  0:02                                     ` Randy Brukardt
2005-01-04 17:44                                       ` Warren W. Gay VE3WWG
2005-01-04 20:14                                         ` Nick Roberts
2005-01-04  9:59                                     ` Dmitry A. Kazakov
2005-01-04 18:00                                       ` Warren W. Gay VE3WWG
2005-01-04 19:07                                         ` Dmitry A. Kazakov
2005-01-04 19:57                                           ` Warren W. Gay VE3WWG
2005-01-05  0:02                                             ` Nick Roberts
2005-01-05  4:37                                               ` Warren W. Gay VE3WWG
2005-01-05 18:54                                                 ` Nick Roberts
2005-01-05 20:04                                                   ` Warren W. Gay VE3WWG
2005-01-06  0:32                                                     ` Nick Roberts
2005-01-06  1:29                                                   ` Wes Groleau
2005-01-06 11:03                                                     ` Dmitry A. Kazakov
2005-01-05  9:39                                             ` Dmitry A. Kazakov
2005-01-05 11:20                                               ` Warren W. Gay VE3WWG
2005-01-05 12:18                                                 ` Dmitry A. Kazakov
2005-01-05 14:39                                                   ` Warren W. Gay VE3WWG
2005-01-05 17:16                                                     ` zest_fien
2005-01-05 19:44                                                       ` Larry Kilgallen
2005-01-04 20:09           ` Nick Roberts
2005-01-05 10:19             ` Dmitry A. Kazakov
2005-01-05 18:33               ` Nick Roberts
2005-01-05 20:15                 ` Dmitry A. Kazakov
2004-12-31 18:47     ` Nick Roberts
2004-12-31 20:36       ` Warren W. Gay VE3WWG
2005-01-04 18:22         ` Nick Roberts
2005-01-05  5:12           ` Warren W. Gay VE3WWG
2005-01-05 18:02             ` Nick Roberts [this message]
2005-01-05 19:55               ` Warren W. Gay VE3WWG
2005-01-06  0:57                 ` Nick Roberts
2005-01-06  2:34                   ` Warren W. Gay VE3WWG
  -- strict thread matches above, loose matches on Subject: below --
2005-01-05 12:14 Mike Brenner
2005-01-05 18:04 ` Warren W. Gay VE3WWG
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox