COURSE DESCRIPTION CSCI 523 - Advanced Operating Systems http://pix.cs.olemiss.edu Description: Design and construction of operating systems for shared program computers; various contemporary operating systems. Prerequisite: CSCI 423 Introduction to Operating Systems (3). Textbook: The Linux Kernel Primer: A Top-Down Approach for x86 and PowerPC Architectures by Claudia Salzberg Rodriguez, Gordon Fischer, Steven Smolski Prentice Hall PTR 2005 Coordinator: P. Tobin Maginnis, Associate Professor of Computer and Information Science Goals: Graduate students are provided with the conceptual tools to analyze operating systems. The Linux operating system is examined at the source code level. Prerequisite by Topic 1. Familiarity with a general purpose high-level language such as C, Pascal, or Ada. 2. Familiarity with general programming concepts. 3. Familiarity with operating system concepts such as process management, memory management, file structures, device drivers, and the user interface. Topics: 1. C programming language, GNU GCC idioms, and X86 architecture review (3 hours). 2. Operating system models (2 hours). 3. Analysis of state management implementation and the "block move" problem (3 hours). 4. System bootstrapping and task initialization (3 hours). 5. Process management (2 hours). 6. Logical memory drivers (1 hour). 7. Timing service (1 hour). 8. Process duplication and creation (4 hours). 9. Memory management (4 hours). 10. Data caching (2 hours). 11. Open call (4 hours). 12. Name service (3 hours). 13. Read, write, and close calls (3 hours). 14. Tests (4 hours plus the final examination period). Example Laboratory Projects 1. Recompile the Linux kernel generating new messages as the system boots. 2. Display Linux kernel traffic with /proc. 3. Add real time priority scheduling to Linux. 4. Enable and test the USB driver. 5. Install a SSF I/O queue in a disk driver. 6. Create a logical window kernel device driver. 7. Add record locking to the file manager. 8. Add a fourth group to owner, group, and others called net in the file manager. 9. Add a new file manager module. 10. Install a garbage collector in the memory manager. Graduate vs undergraduate requirements Undergraduates are responsible for the lecture portion while graduate students are responsible for lecture and laboratory course components. In this way undergraduates will understand the theory and principles while graduate students must demonstrate mastery of these concepts though programming assignments. Course Grading: Undergraduate: Three written tests @ 100 points each 300 --- Total course points 300 Graduate: Three written tests @ 100 points each 300 Programming project 100 --- Total course points 400 First ten questions of the final must replace a previous test, last ten bonus questions count a total of one letter grade worth of points (e.g. 30 for 300, 40 for 400 and so on). But, access to bonus points require that you score your average or better from the regular tests on the first ten questions of the final. Grading scale for 300 points: 370 and up -> A 340 to 369 -> B 310 to 339 -> C 280 to 309 -> D Up to 279 -> F Grading scale for 400 points: 360 and up -> A 320 to 359 -> B 280 to 319 -> C 240 to 279 -> D Up to 239 -> F Course Objectives Upon course completion the student should be able to: 1. Describe Linux kernel GNU GCC idioms, and the X86 architecture. 2. Describe a model of an operating system. 3. Describe the memory management "block move" problem and provide an analysis of state management. 4. Describe the control flow of read, write, and close system service calls. 5. Describe the LUT and VFS jump tables and explain how they implement operating system abstractions. 6. Describe shared libraries, memory management and data caching. 7. Describe system bootstrapping and task initialization.