Next: Event channels
Up: ECS SYSTEM ARCHITECTURE
Previous: The abstract machine
Files were the objects designed to hold data. Basically, a file was
just a sequence of 60 bit words. Facilities were provided for reading
or writing any consecutive subsequence of these words. In fact, files
were more complicated.
The complications were caused by the facilities we expected to provide
in the disk system. There we wanted files which were stored on the
disk, and which could be read or written as described above. Also, we
wanted a user program to be able to attach a portion of a disk
file, forcing that portion of the file to be brought to ECS and held
there. Then, when a disk file read or write was directed to that
portion of the file, the system could automatically read or write the
copy in ECS.
As a means of implementing this disk system facility we proposed that
an ECS file be used to hold that portion of the disk file which was in
ECS. In order to make the interpretation of the disk file read or
write request easier, we wanted to have the attached portion of the
disk file in corresponding addresses of the ECS file. Hence we would
have ECS files which would be holding small portions of very large
disk files, but which themselves would have to be small. Thus the ECS
files would have to have many addresses that existed and many that did
not.
In order to provide this facility we divided the ECS file into blocks,
each block of equal size and holding words with consecutive file
addresses. Furthermore, since we felt that only a small number of
blocks out of a possibly very large number would exist, we represented
the file as a tree. At the head of the tree would be a block, of
arbitrary but fixed size, containing pointers to the next level of
blocks. After a number of levels of pointer blocks, wherein all blocks
of the same level would be of the same power of two, would finally
come a level of data blocks. A pointer block would only exist if one
of its descendant data blocks existed.
Actions were available to create and destroy data blocks. The
appropriate pointer blocks would be automatically created and
destroyed, as descendant data blocks were created and destroyed. Thus
the amount of ECS space required to represent a given file would vary
with time.
At the time of creation of the file, a shape must be given. This shape
specifies the number of levels of pointer blocks desired, the sizes of
the pointer blocks at each level as well as the size of the data
blocks. In order to permit rapid computation of the ECS address of
actual data blocks, we required that the block sizes at all levels,
except the head, be some power of two. Finally, it was possible to
create a file with no pointer blocks, but in which the head block was
itself a data block, of arbitrary size. (Figure 1 contains an example
of an ECS file.)
Figure 1:
Example of an ECS file, with three
existing data blocks and a maximum possible size of 4608 words.
7#7 |
Next: Event channels
Up: ECS SYSTEM ARCHITECTURE
Previous: The abstract machine
Paul McJones
1998-06-22