Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!rochester!pt!andrew.cmu.edu!bader+
From: bader+@andrew.cmu.edu (Miles Bader)
Newsgroups: comp.arch
Subject: Shared memory with virtual caching
Message-ID: <4UzvcSy00UkahLE0en@andrew.cmu.edu>
Date: Sat, 18-Jul-87 14:10:38 EDT
Article-I.D.: andrew.4UzvcSy00UkahLE0en
Posted: Sat Jul 18 14:10:38 1987
Date-Received: Sun, 19-Jul-87 01:12:32 EDT
Organization: Carnegie Mellon University
Lines: 24
In-Reply-To: <1762@encore.UUCP>


> The `Segmented Address Space` architecture of Prime systems solves the
> problem of multiple cached entries of the same data and doesn't require
> the address map identifier in the cache.  It works as follows:
> 
> 	A specific number of segments in the virtual space are used for
> 	sharing and are common to the address space of all processes in
> 	the system.  For example, if segment 1000 is a share segment then
>	multiple processes virtual segment 1000 will map to the same
> 	physical segment in memory.  Thus sharing is achieved, duplicate
> 	cached entries of the same data is avoided and the mapping for
> 	the shared data is maintained in one table.

This also reduces flexibility.  The case that comes immediately to mind is
that of a copy-on-write implementation of fork in unix.  In this case, the
mapping of v->p changes dynamically on a page-by-page basis.  Of course you
don't have to have a copy-on-write fork, but it's an awful neat idea to miss
out on...

It would also seem that the segments also correspond vaguely to address map
descriptors, except that a single process can easily address multiple
instances.  If this is the case, why is the set of segments used for sharing
static?  [I may be using the wrong concept of "segment"]

				-Miles