CPS 346 (3 sem hrs) is a course which introduces the theoretical and practical issues underlying an operating system's structure and operation. Topics include process creation and management, scheduling, concurrent programming and synchronization, deadlock, memory management, and distributed systems. Concepts are demonstrated using the C and Java programming languages in a UNIX environment. This course assumes no prior experience with C, Java, or UNIX.

Pre-requisites: CPS 250 (Introduction to Computer Organization) & CPS 350 (Data Structures & Algorithms)
Meeting times: M W F 2:00pm-2:50pm, MH 201
Instructor: Dr. S. Perugini, AN 145, 229-4079, e-mail id: perugisa, OH's: M W 5:45pm-6:45pm, T Th noon-1:00pm, & by appointment.
Teaching assistant: John Cresencia, AN 152, e-mail id: cresenjv, OH's: M W noon-2:00pm, T Th 4:30pm-5:30pm, F noon-1:00pm, & by appointment.
Required textbook: [OSCJ] Operating system concepts with Java (7th ed.) by Silberschatz, A., Galvin, P.B., & Gagne, G. (2007). John Wiley & Sons, Inc. ISBN: 978-0-471-76907-1.
Recommended textbooks:
[CPL] | The C programming language (2nd ed.) by Kernighan, B.W. & Ritchie, D.M. (1988). Upper Saddle River, NJ: Prentice Hall. ISBN: 0-13-110362-8. |
[JPL] | The Java programming language (4th ed.) by Arnold, K., Gosling, J., & Holmes, D. (2005). Reading, MA: Addison Wesley. ISBN: 0321349806. An eBook of [JPL] is available free to all UD students in the library's eContent collection. To access it conduct a search for the title in the library's catalog at library.udayton.edu. |
[UPE] | The UNIX programming environment (2nd ed.) by Kernighan, B.W. & Pike, R. (1984). Upper Saddle River, NJ: Prentice Hall. ISBN: 0-13-937681-X. |
[USP] | UNIX systems programming: Concurrency, communication, & threads (2nd ed.) by Robbins, K.A. & Robbins, S. (2003). Upper Saddle River, NJ: Prentice Hall. ISBN: 0-13-042411-0. An eBook of [USP] is available free to all UD students in the library's eContent collection. To access it conduct a search for the title in the library's catalog at library.udayton.edu. |
Course objectives:
- 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.
Course outline, lecture notes, projects, & homework & reading assignments (to be completed prior to class):
- Introduction to operating systems & the UNIX
& C programming environment ([OSCJ] Ch 1-2)
- introduction to operating systems (review of computer organization, C exercises): Aug 26
- the UNIX philosophy (class UNIX page, vi quick reference, vi editor, UW vi reference): Aug 28
- files & directories (manipulation & management): self study
- system libraries & I/O: Aug 31
- Processes & threads ([OSCJ] Ch 3-4)
- processes (identification; getpid, creation; fork, & termination) & memory allocation/deallocation: Sep 2
- low-level I/O (open & close, & read & write): Sep 4
- context switching [HW 1 due]: Sep 9
- compiling C in UNIX (static vs. dynamic linking, macros, conditional compilation, error handling, & debugging): Sep 9 11
- files & directories (data structures, inodes, & hard & symbolic links): Sep 14
- process manipulation (wait): Sep 14
- process manipulation (exec) [HW 2 due]: Sep 16
- the UNIX shell & process environment (variables, configuration, customization): Sep 16
-
implementing I/O redirection &
interprocess communication (IPC; pipes &
FIFOs): Sep 18
Exam I (closed book, closed notes): Sep 21 - compilation management (Makefiles, make tutorial, another make tutorial, exercise in writing a Makefile): Sep 23
- (shell) job control (through signals) & terminals: Sep 25
- threads (storage classes & thread-safe functions): Sep 28
- threads in Java (Sun Microsystems Java
webpage, Java
Thread class) [P1 due]: Sep 30
threads in Java: Oct 2
-
Scheduling ([OSCJ] Ch 5)
- types, evaluation criteria, & algorithms (FCFS, SJF, SRTF, RR): Oct 5 7
- multi-level queues & multi-level feedback queues: Oct 7 12
- Synchronization ([OSCJ] Ch 6)
- mutual exclusion & the critical section problem (§§6.1-6.4): Oct 12
-
semaphores (§6.5) [Java
lang.util.concurrent.Semaphore class]
[HW 3 due]: Oct 14
semaphores (§6.5): Oct 16 -
classical problems of synchroniztion (§6.6): Oct
19
classical problems of synchroniztion (active learning in action, photo courtesy Brigitte Sherman) [HW 4 due]: Oct 21
classical problems of synchroniztion: Oct 23
Exam II (closed book, closed notes): Oct 26 - monitors (§6.7) [Java lang.util.concurrent.locks package]: Oct 28 30 Nov 2
-
monitors (§6.7) [P2 due]: Nov 4
monitors (§6.7): Nov 6 9 11
-
Deadlock ([OSCJ] Ch 7)
- deadlock prevention (§§7.1-7.4) [HW 5 due]: Nov 13
- deadlock avoidance & Banker's algorithm (§7.5): Nov 13 16
- deadlock detection & recovery (§§;7.6-7.8): Nov 16 18
- Memory Management ([OSCJ] Ch 8)
- fundamentals (overview of hardware, logical vs. physical address space, dynamic loading & linking) (§§8.1-8.2) [HW 6 due]: Nov 18 20
- contiguous allocation (§§8.3-8.4): Nov 20
Exam III (closed book, closed notes): Nov 23 - paging (§§8.4-8.5): Nov 30 Dec 2
- segmentation, segmentations faults, & buffer overflows (§§8.6-8.8) [P3 due]: Dec 4
- Virtual Memory ([OSCJ] Ch 9)
- demand paging (§§9.1-9.3): Dec 7
- page replacement (FIFO, optimal, LRU; §§9.4-9.5): Dec 7
- thrashing (§9.6) [HW 7 due]: Dec 9
- thrashing (§9.6) & course reflection: Dec 11
- Computer security ([OSCJ] Ch 14-15): as time permits
- Distributed systems ([OSCJ] Ch 16): as time permits
- Final Exam (comprehensive, closed book, closed notes): M December 14, 2:30pm-4:20pm, MH 201
Grades: available in Isidore
Computer accounts: UDit | UNIX account access | CPS labs hours | Keeping your password safe | A beginner's guide to effective e-mail
Helpful links: academic calendar | student handbook | UDit policies
Feedback: Dr. Perugini welcomes any feedback you may have on the style of the lectures, the concepts presented in class, the course webpage, homeworks, deadlines, course and grading policies, or your general experience in the course.