Newsgroups: comp.misc
Path: utzoo!utgpu!jarvis.csri.toronto.edu!ephemeral.ai.toronto.edu!bradb
From: bradb@ai.toronto.edu (Brad Brown)
Subject: Computer folklore
Message-ID: <89Feb9.150324est.10879@ephemeral.ai.toronto.edu>
Organization: Department of Computer Science, University of Toronto
Date: Thu, 9 Feb 89 15:03:23 EST


I was told this story when we were talking about virtual memory in an
operating systems course I took once.  I don't know whether the story
is authentic, but I think it's mostly true.

It seems that wen IBM introduced virtual memory on its System 360 
mainframes, not all their software people really understood how virtual
memory really worked.  Some of these people were responsible for building
the symbol table manager for a new assembler.  The team was told that
virtual memory made your program think it could address 32 bits (4GB)
of memory regardless of how much memory was really there, and that the
memory manager would take care of everything.

Rather than write complicated symbol table routines, the software team
decided to take advantage of all this free memory by simply hashing the
symbol name to a 31 bit value and store the symbol table entry at that
address (with suitable protection to keep from overwriting the assembler,
I suppose.)  Well, it worked fine in testing.  But the first time someone
tried a real program with a few hundred symbols in it, every symbol hashed 
to a different page in VM, causing hundreds of page faults and filling
the paging store with pages that each held only a few bytes of data.

Needless to say, that part of the assembler was rewritten.  I guess the
software team got a lesson in virtual memory, too...

					(-:  Brad Brown  :-)
					bradb@ai.toronto.edu

