Test 4 - File Systems and Security

CS 438, Operating Systems Analysis


  1. A colleague of your observed that indexed block allocation of any kind always requires a pointer per data block in the file, and therefore concluded that indirect indexed block allocation is less efficient than index allocation because indirect indexed block allocation must also include pointers to the other index blocks, an overhead not required by indexed block allocation.

    What do you think of your colleague's analysis? Explain.


    Your colleague is correct, as long as the file doesn't grow in size beyond what one index block can handle. Once the file requires more than one index block, then overhead in the form of next-block pointers are required no matter what the organization.

    Where you colleague's analysis stumbles badly is in the number of disk accesses required to reach the appropriate data block. A singly-linked list of index blocks does have minimal overhead, but, it also has maximal disk-io operations to chase down the list to find the proper pointer. An indirect index is tree shaped, which still requires disk accesses, but in much smaller quantities than does a linked list (logarithmic in the number of pointers stored in an index block versus linear).


  2. Suppose a file system was not interested in performance. Would it still be necessary for the file system to use buffering? You may assume a unix-style interface to the file system.


    Yes, buffering is still required, because the low-level file system has to provide the translation between stream-oriented and block-oriented IO.


  3. True or false: singly-linked list block allocation is better than doubly-linked list block allocation because updating singly-linked lists require half as many block I-O operations than do updating double-linked lists. Explain.


    False. The only difference between singly- and doubly-linked lists in this context are the number of pointers that have to be updated; doubly-linked lists have twice as many pointers. However, both the previous and next block have to be modified on changes to the list (assuming the change doesn't come at either end), and the cost of doing the disk IO to access these blocks - which is the same in either case - more than swamps the doubled costs of pointer manipulations for doubly-linked lists.


  4. Which is a more appropriate form of protection when dealing with worms: authentication or authorization? Explain.


    Worms are self-replicating programs that spread themselves via networks. The only way worms can successfully establish themselves in new systems is if they masquerade as an established user to the system. Strong authentication is the most appropriate protection against masquerading.



This page last modified on 12 December 2001.