7.1 Name the three layers between the filesystem and the disk. Briefly describe the purpose of each layer.
7.2 Describe the differences between the PCI and USB busses.
7.3 Why was the /dev filesystem added to FreeBSD 5.2?
7.4 Explain the difference between a dev_t and a device_t.
7.5 Give an example of a GEOM provider and a GEOM consumer.
7.6 What happens if two GEOM consumers try to operate at the same time?
7.7 Draw a sequence of pictures showing what happens to the GEOM configuration in Figure 7.3 when the disk becomes unavailable.
7.8 Name the three layers within CAM. Briefly describe the service that each of these layers provides.
7.9 Can the CAM layer handle the setup and tear down of the DMA maps for one of its device drivers? Why or why not?
7.10 What is the purpose of the /usr/sbin/config program?
7.11 Give two reasons why it is unsafe to allow a kernel to dynamically load code.
7.12 Why are device probing and attaching done as two separate steps?
7.13 Describe the purpose of the device structure.
7.14 Run the /usr/sbin/devinfo program on a FreeBSD machine and identify the hardware associated with each of the leaf nodes.
7.15 Name the three steps used for resource allocation and freeing. Why are these functions broken into three separate steps?
**7.16 All devices are currently attached once in a depth-first search. But some devices may offer services needed by devices higher up the tree. Describe devices that fall into this class and give a plan to build a multipass-attach approach into newbus to handle them.