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