COURSE DESCRIPTION http://pix.cs.olemiss.edu/csci423 CSCI 423 - Introduction to Operating Systems CSCI 501 - Fundamental Concepts in Systems Description: Design and construction of operating systems for shared program computers; various contemporary operating systems. Prerequisite: CSCI 223 Assembly Language Programming and Computer Organization.(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: Students are provided with the conceptual tools to analyze the design and use of operating systems. The public-knowledge Linux operating system provides operating system implementation examples. Prerequisite by Topic 1. Familiarity with a general purpose high-level language such as C, Pascal, or Ada. 2. Familiarity with general programming concepts. Topics 1. Proprietary versus public-knowledge software (1 hour) 2. C programming language (2 hours). 3. Operating system models (2 hours). 4. Analysis of state management implementation and the "block move" problem (3 hours). 5. System bootstrapping and task initialization (3 hours). 6. Process management (2 hours). 7. Logical memory drivers (1 hour). 8. Timing service (1 hour). 9. Process duplication and creation (4 hours). 10. Memory management (4 hours). 11. Data caching (2 hours). 12. Open call (4 hours). 13. Name service (3 hours). 14. Read, write, and close calls (3 hours). 15. Tests (4 hours plus the final examination period). Laboratory Projects See: http://pix.cs.olemiss.edu/csci423 Graduate vs undergraduate requirements PLEASE NOTE: This is a dual graduate/undergraduate course. For those graduate students enrolled in CSCI 501, additional programming exercises will be assigned. Course Grading Undergraduate: Four written tests @ 100 points each 400 N program exercises at n/100 points each 100 --- Total course points 500 Graduate: Four written tests @ 100 points each 400 N program exercises at n/100 points each 100 Programming project 100 --- Total course points 600 No makeup tests! But, there is an optional final with bonus points worth up to one letter grade. The first ten questions of the final replace the lowest test grade of a previous test. Please note: You must score your AVERAGE grade on the first ten questions of the final BEFORE the last ten questions are worth one letter grade in bonus points (50 pts). No curve, just a simple 10% grade scale. Using the above example, the undergraduate scale would be: 450 to 500 -> A 400 to 449 -> B 350 to 399 -> C 300 to 349 -> D Below 300 -> F The graduate scale would be: 540 to 600 -> A 480 to 539 -> B 420 to 479 -> C 360 to 419 -> D Below 360 -> F Course Objectives Upon course completion the student should be able to: 1. Describe the background, difference, and design tradeoff between proprietary and public-knowledge software. 2. Write C language programs using pointers. 3. Describe a control-of-flow model for operating systems. 4. Describe how process management creates and maintains multitasking, multi-threading, and multiuser features in an operating system. 5. Describe how the file manager, in addition to its conventional role of file naming and file protection, provides system abstractions for status, direct device access, and virtual devices. 6. Explain how the memory management unit provides unique views of physical memory for each process and the OS, as well as, allows dynamic linked object modules. 7. Describe the concept of device independence and the role of OS LUTs. 8. Describe the Linux OS bootstrap and task initialization process.