allocation. It requires less overheadthan the standard linked allocation. 12.6 How do caches help improve performance? Why do systems not use more or larger caches if they are so useful? Answer:
Caches allow components of differing speeds to communicate more ef?ciently by storing data from the slower device, temporarily, in a faster device (the cache). Caches are, almost by de?nition, more expensive than the device they are caching for, so increasing the number or size of caches would increase system cost.
12.7 Why is it advantageous for the user for an operating system to dynamically allocate its internal tables? What are the penalties to the operating system for doing so? Answer:
Dynamic tables allow more ?exibility in system use growth — tables are never exceeded, avoiding arti?cial use limits. Unfortunately, kernel structures and code are more complicated, so there is more potential for bugs. The use of one resource can take away more system resources (by growing to accommodate the requests) than with static tables.Practice Exercises 45
12.8 Explain how the VFS layer allows an operating system to support multiple types of ?le systems easily. Answer:
VFS introduces a layer of indirection in the ?le system implementation. In many ways, it is similar to object-oriented programming techniques. System calls can be made generically (independent of ?le system type). Each ?le system type provides its function calls and data structures to the VFS layer. A system call is translated into the proper speci?c functions for the target ?le system at the VFS layer. The calling program has no ?le-system-speci?c code, and the upper levels of the system call structures likewise are ?le system-independent. The translation at the VFS layer turns these generic calls into ?le-system-speci?c operations.