The August tutorial by Bart T. reminded me that the current paging
memory approach in operating systems was not always the choice. In the
late 60s and early 70s when multi-user / multi-tasking operating systems
were being developed, one of the more interesting efforts in OS design
was the GEORGE series on ICL equipment. See
http://en.wikipedia.org/wiki/GEORGE_(operating_system)
I first saw this in about 1969/70. In Calgary I'd suffered as IBM used
the U of C 360/50 to try out OS/MVT their first "Multiprocessing
Variable number of Tasks" version. OS/MFT (F for fixed) was working.
This was roll in roll out. One time my output (cards in, paper out) had
my headers, someone else's source, my JCL, another person's Linker
output, and yet another's user output. Sigh.
In Oxford, I first used KDF9 -- an early machine that used a floating
point stack (rather closely copied in 8087 and current NDP
architectures). Then we got an ICL 1906A. It ran GEORGE 3 which was a
"roll in/roll out" approach. I don't think it ever ran GEORGE4, which
was paged, copying the ATLAS machine then still running at Harwell (UK
Atomic Energy Authority). I saw ATLAS running in 1971 not long before
its decommissioning -- paging memory was implemented on 1" Tektronix
video tape recorders.
Re: GEORGE, the Wikipedia item fails to note that all the GEORGES had
same user commands. That was quite a good idea that SHOULD be
remembered. That is, no matter what goes on underneath, the user still
gets the same UI. And this doesn't just apply to operating systems.
My guess is that the current "everyone uses paging" approach is not such
a good idea for specialized applications. There's probably some useful
work to be done in simpler, cleaner designs for many applications such
as real time, database backends, and high performance computations. Now
that the h/w is cheap, the obsession with multiprocessing may be
irrelevant in many cases.
Vote of thanks to Bart & co. Keep up the good work.
Cheers, JN