Chapter 12 Homework Solutions 12.1, 12.4, 12.8
Problem 12.1 • Define: B = block size R = record size P = size of block pointer F = blocking factor — expected number or records per block Give a formula for F for the blocking methods "fixed blocking", "variable blocking: spanned", and "variable blocking: unspanned". • Fixed blocking: F =
Problem 12.1 • Define: B = block size R = record size P = size of block pointer F = blocking factor — expected number or records per block • When records of variable length are packed into blocks, data for marking the record boundaries within the block has to be added to separate the records. • When spanned records bridge block boundaries, some reference to the successor block is also needed. One possibility is a length indicator preceding each record. • Another possibility is a special separator marker between records. • In any case, we can assume that each record requires a marker, and we assume that the size of a marker is about equal to the size of a block pointer • For spanned blocking, a block pointer of size P to its successor block may be included in each block, so that the pieces of a spanned record can easily be retrieved. Then we have • Variable-length spanned blocking:
Problem 12.1 • Define: B = block size R = record size P = size of block pointer F = blocking factor — expected number or records per block • With unspanned variable-length blocking, an average of R/2 will be wasted • because of the fitting problem, but no successor pointer is required: • Variable-length unspanned blocking:
Problem 12.4 • Ignoring the overhead for directories and file descriptors, consider a file system in which files are stored in blocks of 16K bytes. For each of the following file sizes, calculate the percentage of wasted file space due to incomplete filling of the last block: 41,600 bytes; 640,000 bytes; 4,064,000 bytes.
Problem 12.8 • Consider a hierarchical file system in which free disk space is kept in a free space list. • Suppose the pointer to the free space is lost. Can the system reconstruct the free space list? • Yes. the method employed is very similar to that used by many LISP systems for garbage collection. • First we would establish a data structure representing every block on a disk supporting a file system. A bit map would be appropriate here. • Then, we would start at the root of the file system (the "/" directory), and mark every block used by every file we could find through a recursive descent through the file system. • When finished, we would create a free list from the blocks remaining as unused. • This is essentially what the UNIX utility fsck does.
Problem 12.8 • Consider a hierarchical file system in which free disk space is kept in a free space list. • Suggest a scheme to ensure that the pointer is never lost as a result of a single memory failure. • Keep a "backup" of the free-space list pointer at one or more places on the disk. • Whenever this beginning of the list changes, the "backup" pointers are also updated. • This will ensure you can always find a valid pointer value even if there is a memory or disk block failure.