[net.works] Demand paging vs Segmented

warbob%rice@sri-unix.UUCP (12/15/83)

From:  Bob.Warfield <warbob@rice>

Both Lisa and VisiCorp's VisiOn product simulate segmented address
spaces without hardware support and seem to function well in this
manner. Both systems employ a double indirection table to access the
segments which are referred to by their "handles" (indexes in the
table). The bad part about the systems is that they place an increased
burden on the programmer to determine when a segment should be swapped
into memory and when it can be swapped out. Also, swapping code can be
fairly slow unless the code is inherently relocateable. It should be
possible to build facilities into an interpreter or compiler to deal
with these nasties automatically, and in fact, virtual memory schemes
for Smalltalk do just that. I wonder how hard it would be to add a
similar feature to a Lisp machine's Lisp, at least to see if
performance is remotely close to the hardware assisted approach. One
should be able to get particularly clever if the microcode is
accessible.
    Incidentally, our Sun workstations suffer noticeably from
performance degredation when many processes are swapping. This is
particularly annoying from my standpoint, since I'm trying to produce a
window environment for the Suns and its proved to be neccesary to
simulate segmentation in order to get decent mouse interaction. In
other words, everything has to run in a single process. The problem
seems to be preemptive process scheduling in unix. If processes only
got swapped when they were blocked for i/o things would be easier.


					Bob Warfield
					warbob@rice