super | inode blocks | indirect blocks block SB | IB IB IB ... IB IB | DB DB DB ... DB 0 1 iSize iSize+1 size-1 Block size = 512 bytes SuperBlock contains file system params - size # of blocks in the file system - iSize # of inode blocks - freeList # of 1st free block in the indirect area Inode contains meta-info for a file - flags 0=not used; 1=used - name file name as iNumber - fileSize file data size in bytes - pointer[13] array of ponters to the file data/indirect blocks InodeBlock stores 8 InodeBlocks - node[8] IndirectBlock - pointer[128] number of data/indirect file blocks Disk - readCount statistics of f.s. operations - writeCount - fileName name of file with our file system on disk (DISK) - disk used for in-memory file access FileDescriptor represents an opened file in the File table - inode inode that represents the (opened) file - inumber file "name" (iNumber) - seekPtr position of the file seek pointer FileTable keeps track on all opened files - fdArray[21] array of file discriptors Block0 Block1 Block2 .... BlockN 0..511 512..1023 1024.. ^ 600 <- blockNo Physical file block blockTMP buffer ******** ******** ******** <- bufferPtr * * * * * * * * * * * * * * * * * * ######## <-offset-> * * ******** ######## * * ######## * * * * * * * * * * ******** ********