Although it wasn't an hierarchical file system, the school-built
time-sharing system "OS-3" (Oregon
State Open Shop Operating System) which started serving in the late 60s
used a hashed-filename
directory storage mechanism. With several thousand customers and
hundreds of files per user, the
average search was just a shade over 1 directory block read. The hash
function had been carefully
tuned to the length of file name and average number of files per user -
it 'could' (though never was)
be tuned each night to tweak performance for the next day's use.
The directory storage scheme used by OS-3 was fairly conventional in
that besides the name, the
directory entry contained the full access/permission/usage count, etc.
It was loaded and cached
in memory when the file was open so the OS didn't need to go back to the
disk for every file write
or status change. If the files were public, the system saw them in the
local cache without having
to read the disk.
We were VERY CONSCIOUS of disk transfers back then and would work very
hard to minimize the
number and frequency of disk accesses. With a computer that ran at less
than 800kHz and disk
transfers measured in 10s of microseconds per word, you really had to
keep them minimized.
The fairly simple mechanism used was published in an ACM journal of the
era, so it was definitely
published "prior art."
-Gary
On 09/17/2012 03:24 PM, Chuck Guzis wrote:
My point is that we weren't idiots back then and
devices were much
slower than they are today. Anything to improve performance would
have been welcome. For example, we briefly played with a filesystem
where allocation maps were kept on a sector for the storage on an
entire cylinder.
I would be *very* surprised if a file name table hash wasn't used
somewhere. Of course, you'd have billions of lines of code to
rummage through--if it said code hadn't been dumpstered ages ago.
Even so, where's the payoff for someone who might know where to look?
For example, there were FAT file systems 45 years ago (we didn't
call it a FAT, but rather an RBT for "record block table". One
improment we made over MS-DOS was that we swapped in the RBT chain
from disk for a file when a file was open).
--Chuck