[comp.arch] shared pages, was 64-bit addresses

johnl@esegue.segue.boston.ma.us (John R. Levine) (02/24/90)

In article <1662@aber-cs.UUCP> pcg@cs.aber.ac.uk (Piercarlo Grandi) writes:
>B) You have difficulty supporting shared pages. A physical page cannot
>contain an arbitrarily long list of virtual addresses mapped to it.  There
>are two workarounds, to forbid shared memory entirely (the best solution, as
>I have already argued, also from a logical point of view), and sharing
>*segments* using indirect segment capabilities (which slows down things a
>bit on every reference). There is a third workaround, which is to change the
>virtual address associated to every shared page, on every context switch.

There is a fourth workaround which is what the ROMP VRM actually does: take a
soft page fault and flip the page map as needed.  This makes context switch
fast and only penalizes programs that are actively pounding on shared pages.
Note that since the ROMP shares segments without trouble, so the soft page
faults actually only happen on unmodified pages of copy-on-write mapped files.

I know that the original Apollo mapper was reverse mapped and had some hack to
allow a small number of multiply mapped pages.  Anyone remember the details
and how well it worked?
-- 
John R. Levine, Segue Software, POB 349, Cambridge MA 02238, +1 617 864 9650
johnl@esegue.segue.boston.ma.us, {ima|lotus|spdcc}!esegue!johnl
"Now, we are all jelly doughnuts."