next up previous contents
Next: Event channels Up: ECS SYSTEM ARCHITECTURE Previous: The abstract machine

ECS files

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 up previous contents
Next: Event channels Up: ECS SYSTEM ARCHITECTURE Previous: The abstract machine
Paul McJones
1998-06-22