[comp.os.research] Question for the week -- distributed Multics?

darrell@midgard.ucsc.edu (Darrell Long) (01/30/89)

I'd like to get some opinions on this: How much sense does a distributed
version of Multics make?  That is, a memory mapped file system with shared
segments across machines?

Regards, DL

darrell@midgard.ucsc.edu (Darrell Long) (01/31/89)

Here is a summary of the responses to my "question for the week."  Thanks to
everyone who responded.

DL

In article <6154@saturn.ucsc.edu> you write:
>I'd like to get some opinions on this: How much sense does a distributed
>version of Multics make?

%A W. A. Montgomery
%T Measurements of Sharing in Multics
%J PROC 6th SOSP (in Operating Systems Review)
%V 11
%N 5
%D NOV 1977
%P 85-90
%X little empirical use (by users) of Multics segment sharing
%X subset of sharing probably better for distributed systems

Would it be better to ask:
	what subset of Multics makes sense for distributed systems?

--
Paul M. Aoki, aoki@postgres.Berkeley.EDU



In article <6154@saturn.ucsc.edu> darrell@midgard.ucsc.edu (DL) writes:
>[Memory-mapped file system with shared segments across machines]

See several papers by Kai Li.  Only one I have handy:

Kai Li
Paul Hudak
Memory Coherence in Shared Virtual Memory Systems.
Proceedings 1986 ACM Conference on Principles of Distributed Systems
pp. 229-239

-- 
Pardo, pardo@cs.washington.edu



In article <6154@saturn.ucsc.edu> you write:
#
#I'd like to get some opinions on this: How much sense does a distributed
#version of Multics make?  That is, a memory mapped file system with shared
#segments across machines?

As an abstract concept, it makes sense.  It would probably be *HELL* to
implement, though.  Many of Multics' ideas still make sense; memory-
mapped files does.  The biggest problem is sharing the actual files; in
Multics, all processes that mapped in a segment used the same physical
memory.  In a distributed system, that would be a very bad idea, since
the physical memory would likely be on another node and thus be very
costly to access.  So, we could have a Multics-type OS on each machine,
and have files available to all, but that isn't what you were looking
for, is it?

replies welcomed

ethan
-- 
ethan miller, bandersnatch@ernie.berkeley.edu   


In article <6154@saturn.ucsc.edu> darrell@midgard.ucsc.edu (DL) writes:

>I'd like to get some opinions on this: How much sense does a distributed
>version of Multics make?  That is, a memory mapped file system with shared
>segments across machines?

I hope it makes a lot of sense;  I am proposing just such a scheme for my 
doctoral research.  Specifically, a virtual storage memory management 
scheme that is very much like that of Multics (and therefore NOS/VS as 
well), but with extension to support segments located anywhere in the 
network.  When a reference to a non-local segment is made, a special
lightweight transport protocol fetches a copy across the network for local
access.

If you're interested in more details, send me e-mail.

-- 
James Sterbenz, jps@wucs1.wustl.edu

brad@polaris.ucsc.edu (Brad Smith) (02/02/89)

In an article from the latest issue of Unix Today discussing a
Honywell/Univ of Calgary project to create software to aid in
the migration of Multics based software to Unix they mention
that "...a MULTICS system is capable of tying together between
one and six mainframe-level processors...".  Does anyone know
if this is in the "distributed Multics" sense?

Brad Smith

yak%dove@gatech.edu (Yousef A. Khalidi) (02/04/89)

I have been working on memory management support for operating systems with
my advisor, Kishore Ramachandran, for the last year and half. Specifically,
we are looking at memory management support for the programming model of
Clouds/Ra, at each node in the distributed system, as well as network-wide
memory management. Distributed shared memory (DSM) is the tool used for
network-wide memory management, and it fits nicely with the Ra kernel.  The
Ra kernel have segment manipulation primitives that borrow ideas from
Multics. Using DSM, any segment in the network may be accessed regardless of
its location. We use the mechanisms to implement remote object invocation (as
an alternative for RPC) by paging-in (portions of) the required segments and
performing the invocation locally. (The system also provides RPC and the
choice of which mechanism to use is left for the programmer/compiler/OS.)

The DSM mechanisms are also used for all paging across the network, and to
implement process and object migration.  We combine locking with memory
coherency, and address the issue of synchronization. DSM mechanisms provide
semaphore operations that can be performed at any node in the system (by
moving the segment containing the semaphore to that node). I have several
tech reports that describe the design and implementation of DSM and Ra if you
are interested.

Yousef
-- 
Yousef A. Khalidi --- The Clouds/Ra Project
School of Information & Computer Science, Georgia Tech, Atlanta GA 30332
Internet:  yak@gatech.edu	
uucp:	...!{akgua,allegra,hplabs,ihnp4,linus,seismo,ulysses}!gatech!yak

krakowia@uunet.UU.NET (Sacha Krakowiak) (02/04/89)

In article <6154@saturn.ucsc.edu> darrell@midgard.ucsc.edu (Darrell Long) writes:
>
>I'd like to get some opinions on this: How much sense does a distributed
>version of Multics make?  That is, a memory mapped file system with shared
>segments across machines?

This is a very good idea. There is at least one distributed OS that more or
less implements it : Apollo Domain. See description in P.J.Leach et al.,
The architecture of a distributed integrated local network, IEEE Journal on
Selected areas in Communication, nov.1983,pp.842-856.

-- 
______________________________________________________________________________
Sacha Krakowiak, Lab. Genie Informatique | krakowiak@imag.imag.fr     or
IMAG,BP53X, 38041 Grenoble Cedex, France | {uunet.uu.net|mcvax}!imag!krakowiak
------------------------------------------------------------------------------

bga@shamash.cdc.com (Bruce Albrecht) (02/05/89)

CDC's NOS/VE is a Multics derivative, with a memory mapped file system with
shared segments, and segments may be shared by multiple machines.  The only
catch is that currently the segment may be shared for read access by all
machines, or have exclusive access by a single machine for write access.
Theoretically, the shared segment could be available for concurrent write
access (or non-exclusive access for write) on more than one machine, but it
would be a real performance killer.

CDC's NOS/VE has a file server, which is a process that communicates with 
the file servers on the other machines.  When a shared segment is accessed, 
the file server sends requests for reads to the machine on which the segment 
actually resides (i.e., the machine to which the disk is connected.)  If 
concurrent write accesses were allowed, the file servers would have to be 
responsible for invalidating pages on other mainframes, just as cache is 
invalidated on a multiple CPU machine.  As long as there is some mechanism 
provided by the file servers to emulate it, even test_and_set instructions 
could be done across mainframes.

I think the multi-mainframe file server for NOS/VE has been available for
a year or so.  We don't use it for all of our development systems, though,
because our development systems tend to be running slightly different variants,
and they only run it when two mainframes are scheduled to be in sync, OS-wise.
In a few weeks, though, our communications development organization will be
migrating to 2 dual CPU 860's, running with the multi-mainframe file server.
I don't believe they support load-leveling between mainframes, but I think
it's a natural extension of the multi-mainframe shared segments.

horn@uunet.UU.NET (Chris Horn) (02/10/89)

We also have been doing work on distributed shared memory for about the last
18 months.  Our basic approach is that when an application requires access
to a "segment",  it can either be faulted in locally (possibly from a remote
store,  ie across the net) or the process can "diffuse" to use the segment
at a remote site.  When synchronous remote execution occurs,  the
same thread of control is involved at both the calling and called site - ie
threads of control may be distributed.  There are primitives to for example
create, suspend, resume, kill such threads,  independently of where
current execution site is.

By default,  there is only at most one updateable image of a segment mapped into
virtual memory anywhere in the network.  Threads which simultaneously access
this segment may therefore be diffused to reach this common site.  Segments
also are persistent by default - ie they behave as memory mapped updateable
files.  Defaults can be over-ruled to eg disable persistence (and so get a
segment which behaves like a UNIX data/bss region),  or support
copy-on-write (thus disabling sharing updates in virtual memory,  and useful
for eg UNIX forking).

Whether diffusion or remote fetch is used when a segment is first touched is
under programmer/compiler/OS policy control.

The work is under the auspices of the Esprit Comandos project,  and our
prototype was demonstrated on NS32332s at the last Esprit conference in
Brussels (nov 88).  We are currently improving and gaining experience with 
the prototype,  and are porting to Vax.  Our colleagues at IMAG grenoble
have prototyped aspects of the system as a series of libraries on top of
UNIX SysV (with bsd extensions) without kernel changes;  our colleages at
INESC lisbon have prototyped on PC/AT compatibles.

Chris Horn
---------
horn@cs.tcd.ie
Dept Computer Science, Trinity College, IRL-Dublin 2

jps@wucs1.wustl.edu (James Sterbenz) (02/11/89)

In article 6238 raspail!bga@shamash.cdc.com (Bruce Albrecht) writes:

>CDC's NOS/VE is a Multics derivative...

I'm somewhat familiar with NOS/VE, and am very glad that with the demise of
Honeywell supported Multics, the important ideas live on in a commercial
product (there are other Multics derivatives, but NOS/VE seems to be the
closest).  

>CDC's NOS/VE has a file server, which is a process that communicates with 
>the file servers on the other machines.  When a shared segment is accessed, 
>the file server sends requests for reads to the machine on which the segment 
>actually resides (i.e., the machine to which the disk is connected.)

I'd be interested in more information on this.  I know nothing about CDC
networking.  My research involves virtual memory management across the
network.  I use a Multics-like base, but am also very concerned with the
host hardware architecture and transport protocol design, which are 
optimised to work efficiently with the memory management.  How does CDC
integrate NOS/VE memory management with network hardware and protocols?

Is there anything published on this?  (The CDC manuals I have do not 
discuss the remote file access or any aspect of communications).
Is a CDC NOS/VE or Cyber 800 communications type person on the net that
could enlighten me?

-- 
James Sterbenz  Computer and Communications Research Center
                Washington University in St. Louis 314-726-4203
INTERNET:       jps@wucs1.wustl.edu
UUCP:           wucs1!jps@uunet.uu.net