comp.lang.ada
 help / color / mirror / Atom feed
From: "Warren W. Gay VE3WWG" <ve3wwg@NoSpam.cogeco.ca>
Subject: Re: For the AdaOS folks
Date: Tue, 04 Jan 2005 22:48:52 -0500
Date: 2005-01-04T22:48:52-05:00	[thread overview]
Message-ID: <CrJCd.14979$0y4.5776@read1.cgocable.net> (raw)
In-Reply-To: <gemini.i9tfbx00nu4at00dc.nick.roberts@acm.org>

Nick Roberts wrote:
> "Marven Lee" <mehs60@dsl.pipex.com> wrote:
>>>>You can end up with a microkernel that only handles cross-domain
>>>>calls.  Everything else, including what you normally think a
>>>>microkernel should at least include,
>>>
>>>I'm glad you said "normally" here. ;-)
>>>
>>>>such as memory management, scheduling and IPC can be implemented
>>>>outside of the microkernel.
>>>
>>>Exokernel?
>>
>>No, I'd still call it a microkernel or perhaps a trampoline.
> 
> Bachar has cross-domain calls (I think ;-) although I've called them 'IPC
> service calls', and describe them in terms of the client-server model.
> 
> A process that provides a service (the server process) obtains a kernel
> resource called an 'IPC service', and publishes it somehow (how is a long
> story). A process that wants to use the service (the client process) obtains
> a kernel resource called a 'service key', whose target service is the
> required IPC service. The client then calls the service key to obtain the
> service. The server receives calls to its IPC service, performs the service,
> and returns. The (calling thread of the) client remains blocked until this
> is complete.

How is this "IPC service key" different than a Mach port? What you
describe sounds just like Mach RPC (with or without migrating-threads).

>>I like the way you can pass areas of memory between address spaces without
>>having to search for a suitable place to stick it in the destination
>>address space, they can use the same region of the address space in each
>>address space.  This might also be useful when copying data through a
>>series of address spaces.  I don't think having pointers meaning the same
>>thing in different address spaces is a benefit though, especially in
>>messages where a pointer could point outside a message without any error
>>checking.
> 
> AdaOS provides multiple memory 'regions'. A process can map multiple regions
> into its address space at one time. Several processes can share a memory
> region by obtaining kernel resources called 'region keys', and using those
> keys to map the region. Again, a mechanism of publishing provides the means
> for processes to co-ordinate this.

How does this differ from Mach using its ports to map in regions
of memory?

> The idea is that one or more shared regions can be used to pass parameters
> between processes in accompaniment to IPC service calls.

Mach has been doing this with its "out-of-line" data as an optional
RPC feature (the rtmk microkernel that I am using does this for
example - it was inspired by Mach).

> Because the regions for doing this are genuinely shared memory areas -- if
> the the client and server both reside on the same workstation -- there is no
> copying involved (although there may be marshalling on both sides, where the
> format of data is generally changed).
> 
> However, the exact same IPC calls can be made trans-network, completely
> transparently to both client and server, by the insertion of 'agent' (proxy)
> processes: the client calls a client agent; the client agent communicates
> the call across the network to the server agent; the server agent calls the
> server; when the server finishes, the server agent communicates the reply to
> the client agent; the client agent returns the reply to the client.
> Distributed memory regions are used, so that pages of data get automatically
> pulled around the network as they are used by client and server.

In some Mach literature this is referred to as External Memory
Management (EMM). The most easiest version of this is the
1-writer + n-readers case. > 1 writers leads to a number of
problems and significant overhead, depending upon the sequence
of events. You'll find a 1992 example of the 1-writer EMM
in the book "Programming under Mach".

> An asynchronous form of call is also supported (the client thread is not
> blocked, and there is no reply).

Mach of course, supports this out of the box.

> This scheme is completely secure: no process can ever gain access to data it
> is not permitted to access (it is prevented from getting a region key), and
> no client can call a service it is not permitted to (it is prevented from
> getting a service key).

It sounds pretty much deja-Mach to me, which is ok. What I have
trouble understanding is the need for new names.
--
Warren W. Gay VE3WWG
http://home.cogeco.ca/~ve3wwg



  reply	other threads:[~2005-01-05  3:48 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 [this message]
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
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