Next: Passwords and accounting
Up: COMMAND PROCESSOR
Previous: TTY line collector
Obtaining an object by name within our system was somewhat
complicated. There were two general reasons for this. First, we had a
multiplicity of directories, and a user was generally confronted with
at least three of them. Second, we tried to minimize the access a
subsystem was given to a user's permanent directory.
A user was confronted with at least three directories. There was a
directory which contained publicly available system provided
subsystems (system directory), such as the editor, SCOPE simulator and
a printer driver. There was a directory which contained the users
files which lived from session to session (permanent directory).
Finally, there was a directory which contained temporary files
associated with his current logged on teletype (temporary directory);
such as scratch files containing the memory of subsystems he was
using.
It was necessary to maintain both a temporary and permanent directory
for two reasons. First, two teletypes could be logged on under the
same user name. Thus, they would have access to the same permanent
user directory. A directory associated with the teletype was necessary
in order to prevent naming conflicts among temporary files constructed
by subsystems. Second, we associated disk space control with
directories. Due to the limited amount of disk space available, it was
necessary to severely limit the space occupied by files that lived
from session to session. On the other hand, some subsystems required
an enormous amount of temporary file space while running. Thus, the
users permanent directory was provided with a small amount of space,
while his temporary directory was provided with several times that
amount of space.
In general, whenever a name was presented to the system to be looked
up in directories, it was intended to be looked up first in the
temporary directory, then the permanent directory and finally the
system directory. That is, try the most local scope first, and then
try larger and larger scopes. In order to automate this, these three
directories were placed in a scan list.
Since a scan list was merely a C-list, if this scan list was provided
to a subsystem, that subsystem would have access to the directories
contained in the list. If those capabilities were strong enough, the
subsystem could list all the names occurring in the directory, and
using those names, delete all the files. We had a vision of a run away
subsystem destroying, in a few seconds, all of a users permanent
files. Also, it was necessary to provide some name look up facility to
subsystems, e.g., for use by assemblers with facilities to include
text in other files named by the one being assembled.
In an attempt to prevent this somewhat unlikely catastrophe, while
providing a name look up facility for subsystems, we provided two scan
lists, one weak and one strong. The strong one would be used in
response to commands typed on the teletype, while the weak one was
supplied to the subsystems.
Next: Passwords and accounting
Up: COMMAND PROCESSOR
Previous: TTY line collector
Paul McJones
1998-06-22