Before break: * Categorize system calls into fd only vs touching disk * Narrow waist design * Exokernel: narrow waist in library OS * Object-oriented design natural for FSs After break: * File descriptor numbers can be index into array of pointers to file objects * Where to store offset? Not in shared file object, not for each descriptor in proc * struct file has refcount, offset, pointer to inode (vnode) * procs can share fd table if they are threads of the same process * Derek likes stackable file systems * RAID - duplicate disks or xor disks * error correcting codes exist! * Lots of other things like NFS and FUSE and union file systems exist
Modern Operating Systems by Andrew S. Tanenbaum, a venerable OS textbook by the author of Minix. Chapter 4 is on file systems. In this lecture we covered material in §4.3.7 Virtual File Systems. RAID is covered in §5.4.1.
Operating Systems in Depth by Thomas W. Doeppner. The VFS material is in Chapter 1, especially §1.3.5. RAID is covered in §6.4.