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