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