The following are expectations for the Midterm Exam of what you should know based on material covered in lecture, from Chapters 11, 12 and 15 in SGG, Chapter 6 in TOS, and Chapters 1 and 2 in TDS. Understand Projects 0 and 1. % File Systems Know that a file is a collection of permanent data that has a name assigned to it. Know that files are abstract entities provided by the operating system. Understand issues in naming files including file lengths and use of extensions, Know what a directory is and how it is used. Understand how a hierarchical vs. a flat file system is organized. Understand the difference between an absolute vs. a relative file name. Know that operating systems may use the file namespace for other types of objects such as devices or processes. Understand the concept of a file alias or hard link. Understand the concept of an indirect file or symbolic/soft link. Know the use of special aliases "." and ".." in a directory. Know the types of access operations for an object. Understand the general concept of an access matrix and what it represents. Know what a capability list is along with its advantages and disadvantages. Know what an access list is along with its advantages and disadvantages. Understand that access lists can use classes. Understand how access lists and classes are used in Unix and Windows NT. Know the difference between sequential access, direct access, memory mapped access and structured record access to a file. Understand how the experimental observation that most files are small with a few files being large affects file system design. Know what are disk blocks in file system design and how they are used in file system design. Know how free disk blocks are managed. Know that caching is important in improving file system performance and how it is used. Understand what a journaling-based (or log-based) file system works along with its advantages and disadvantages. Know that file dumps are used to allow recovery of a file system. Understand how RAID is used to improve file system reliability. Understand the purpose of the File Allocation Table in the FAT file system including the fields it contains. Know the types of information maintained in a FAT-16 directory entry. Understand that each FAT file system occupies a partition on disk. Understand the difference between the FAT-16 and FAT-32 file systems and the reason for the change. Understand how the NT File System (NTFS) uses attributes to store file name, security descriptor and the contents of a file. Know what information is maintained in a Master File Table (MFT) entry for each file in a NTFS volume. Know that the unit of disk allocation is a cluster (like a disk block) in NTFS. Know how directory information is stored in NTFS. Know how file data not stored in the MFT entry is stored in clusters with a LCN-to-VCN mapping table for consecutive clusters. Know that each Unix file system is stored in a partition on disk. Know that each Unix file system contains a boot block, a super block, an array of inodes and data blocks. Know what is contained (and not contained) in an inode. Understand the set of steps to find the inode for a file in the Unix file system. Understand the algorithm for finding the path name for the current working directory in a Unix file system. Understand how Unix stores file contents. Understand what problems with the original Unix file system led to changes in the Berkeley Unix Fast File System. Know what cylinder groups are used for in the Fast File System. Know how the Linux file system ext2fs compares with the Fast File System. Understand what is file mounting and how it is used. Know interesting characteristics of other file systems we discussed in class. % Distributed Systems Understand how a multiprocessor with a Uniform Memory Access model is organized. Understand how a multiprocessor with a Non-Uniform Memory Access model is organized. Understand the distinguishing features of distributed operating systems, network operating systems and middleware systems. Be aware of the following design issues in distributed systems: resource sharing, transparency, flexibility, reliability, performance, scalability, naming, communication and consistency. % Communication Understand the client-server model. Understand the difference between a blocking and non-blocking send. Understand the motivation in developing the remote procedure call (RPC) paradigm for distributed computing. Know the basic steps in making a remote procedure call. Understand issues in marshaling parameters in a RPC mechanism. Understand issues in handling call-by-reference parameters. Understand issues in naming and location of RPC services. Understand the semantics of RPC mechanisms when failures occur. Know how breadth-of-life packets can be used to detect a network or server failure in an RPC mechanism. Understand what it means for an operation to be idempotent. Be able to explain the semantics "exactly once," "at most once," and "at least once" for RPCs in the face of failures. Understand how transport protocols are used by RPC mechanisms. Know what it means for a message delivery mechanism to be persistent. Know what it means for a message sender to be synchronous. Know how these ideas can be combined to create different forms of communication. Understand how group communication can be used in distributed computing.