=> Topics and expectations All topics and expectations from the midterm remain in force. Additionally, be able to do the following: Chapter 7: Understand what deadlock is. Know how it can be prevented, detected, and corrected. Be able to use the Bankers Algorithm to determine if a particular series of actions will cause deadlock or not. Chapter 8: Understand the difference between a logical and physical address space. Understand how each of the following memory utilization schemes works, and the advantages and disadvantages of using each: overlays, dynamic loading, shared libraries, and swapping. Understand and be able to describe mechanisms for keeping track of free memory in systems. Be able to determine the amount of overhead associated with each method. Know and be able to explain what memory compaction is. Know and be able to describe internal and external fragmentation and the differences between them. Know and be able to describe methods of choosing spaces in memory in a contiguous memory allocation scheme. Be able to demonstrate how each method behaves, and make arguments for which method is most efficient in a particular case, or in general. These schemes include: best fit, worst fit, first fit, next fit, and the buddy system. Chapter 9: Be able to explain how paging works, and in particular how logical addresses are mapped to physical addresses. Know and be able to describe the common entries in a page table. Be able to describe and demonstrate for a particular system how a TLB speeds page accesses. Be able to do the same two above tasks for multi-level paging schemes. Understand when and why an inverted page table is used, and be able to describe how logical to physical address translation occurs in an inverted page table system. Understand why segmentation is used, and how logical to physical address translation occurs in a segmentation-based system. Understand and be able to diagram and explain how page faults are handled in a demand paging system. Be able to define and describe the idea of locality of reference, and make an argument as to why this occurs. Know and be able to describe and contrast global and local frame allocation systems. Be able to describe a variety of victim selection algorithms in a demand paging system. These should include: FIFO, LIFO, Optimal, LRU, MRU, LFU, MFU, and global clock. Be able to describe how it would be possible to implement each of these. Be able to show how many page faults would occur for each algorithm for a particular reference string. Also be able to make arguments about which algorithm would be best for a particular system. Understand and be able to define and recognize Belady's anomaly. Be able to describe thrashing, its causes, and how it can be recognized and stopped. Chapter 10 and 11: Understand and be able to describe the reason for using a file system. Know and be able to describe the three layers of a file system. Be able to name and describe the various general operations that can be performed on files. Be able to describe the purpose of naming in a file system. Be able to give an example of naming conventions. Understand the purpose of the directory system in a file system. Be able to describe and contrast different types of directory structures, including problems that might be encountered and how to address those problems. Know how a directory structure can be efficiently implemented. Understand how UNIX directories are implemented. Be able to explain the differences between typed and untyped file systems, and the advantages and disadvantages of each. Understand how the file system provides protection for files. Be able to describe how UNIX does so. Understand different mechanisms for allocating files on disk. Be able to describe the efficiency of operations on each, and how much overhead each method requires. Be able to diagram and explain the layout of the UNIX file system. Understand the various disk scheduling algorithms. Be able to determine which algorithm has the best performance for a specific reference string. Be able to make an argument about which algorithm would perform best for a particular application or system. - RAID systems (Almost all from lecture, but also from Chapter 12, section 7 as well): Understand the rationale behind RAID arrays. Be able to describe the general operation of each of the 6 levels of RAID systems. Understand how each of the RAID systems would recover from a crashed disk. - Clocks (lecture): Be able to name and describe the types of clocks in a system and how they are used by the operating system. Be able to describe the structure and use of a delta list. - UNIX system programming (lecture, and Stevens. I have an extra copy of Stevens if you did not buy it and need to refer to it. Also, the code examples in the shell project, particularly cat_grep.cc and ctrl-c.cc demonstrate how the calls you need to know are used.): Understand and be able to diagram how file descriptors operate in a UNIX system. Be able to describe what dup and dup2 do in this context. Understand how the fork system call operates. Be able to write code segments that use fork correctly, and to correctly describe the output of code that uses fork. Be able to explain why fork might fail, and how you would detect that. Understand what execvp does. Be able to write code segments that use execvp correctly. Also understand what execlp does, and be able to read code segments that call execvp or execlp and predict what they would do. Be able to explain why execvp might fail, and how you would detect that. Understand how the UNIX open system call operates, and what the various flags to the call do. Be able to use the open call in code segments you write, and predict what code segments that use it will do. Know how to use the pipe system call and be able to describe and diagram its operation. Be able to write code segments that use it correctly, and to read code that calls pipe and predict the output. Be able to describe how you can catch signals and perform particular operations when they are received. Chapter 16: Sections 3, 5, 6 Understand and be able to describe the difference between local and wide area networks. Be able to show the ISO protocol stack and describe what occurs at each level. Be able to describe in general terms how routing occurs in the network layer. Be able to describe how DNS works and what it does. Be able to describe how ARP works and what it does.