CPS 346 Operating Systems I Required course Course Description (2009 Bulletin) Semaphores, conditions, monitors, and kernels. Concurrent programming, interrupts, memory, and process management. Design and implementation of multithreaded and distributed system components using concurrent languages. (3 Sem. hrs.) Prerequisite: ECE 314 and CPS 350 Class Schedule: Fall: three 50-minute periods, Spring: two 75-minute periods per week. Textbook Required: [OSCJ] A. Silberschatz, P.B. Galvin, & G. Gagne (2007). Operating System Concepts with Java (7th ed.). John Wiley and Sons, Inc. ISBN: 978-0-471-76907-1. Recommended: [CPL] B.W. Kernighan & D.M. Ritchie (1988). The C Programming Language (2nd ed.). Upper Saddle River, NJ: Prentice Hall. ISBN: 0-13-110362-8. [JPL] K. Arnold, J. Gosling, & D. Holmes (2005). The Java Programming Language (4th ed.). Reading, MA: Addison Wesley. ISBN: 0321349806. [UPE] B.W. Kernighan & R. Pike (1984). The UNIX Programming Environment (2nd ed.). Upper Saddle River, NJ: Prentice Hall. ISBN: 0-13-937681-X. [USP] K.A. Robbins & S. Robbins (2003). UNIX Systems Programming: Concurrency, Communication, and Threads (2nd ed.). Upper Saddle River, NJ: Prentice Hall. Class Website (Fall 2009): http://academic.udayton.edu/SaverioPerugini/courses/Fall2009/cps346/ Engineering Tools UNIX account (Linux or BSD) with all associated development tools and utilities. Goals Establish an understanding of operating system internals such as process creation and management, scheduling, and memory management. Establish an understanding of concurrent programming and synchronization. Introduce the fundamentals of distributed systems and computer security. Topics 1. Introduction to operating systems & the UNIX & C programming environment 2. Processes & threads ([OSCJ] Ch 3-4) 3. Scheduling ([OSCJ] Ch 5) 4. Synchronization ([OSCJ] Ch 6) 5. 6. 7. 8. 9. Deadlock ([OSCJ] Ch 7) Memory Management ([OSCJ] Ch 8) Virtual Memory ([OSCJ] Ch 9) Computer security ([OSCJ] Ch 14-15) as time permits Distributed systems ([OSCJ] Ch 16) as time permits Assessment Homework (19%), Projects (30%), Exams (30%), Final (21%) Relevant ABET Program Outcomes a ability to apply knowledge of mathematics, science and engineering. b ability to design and conduct experiments, as well as to analyze and interpret data. ability to design a system, component, or process to meet desired needs. c ability to identify, formulate, and solve engineering problems. e k able to use the techniques, skills, and modern engineering tools Course Learning Outcomes 1. Understand operating system internals such as process creation and management, process scheduling, and memory management (a, e, k). 2. Have a proficiency in UNIX and C as an operating systems programming language/environment (a, c, e, k). 3. Know UNIX internals, included how to use the UNIX kernel system call interface within C programs (a, b, c, e, k) 4. Be able to develop (deadlock-free, starvation-free) concurrent programs and multithreaded applications as well as synchronize the control therein (a, e). Prepared by: Saverio Perugini, Ph.D., (CPS) Date: 14 December 2009