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.

CPS 346: Operating Systems I Fall 2010
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, e-mail id: sperugini1, AN 145, 229-4079, OHs: M W 5:45pm-6:45pm, & by appointment.

Teaching assistants: Jonathon Reinhart (e-mail id: reinhajr) and Allyson Denzinger (e-mail id: denzinar), AN 26, OHs: M W 3:00pm-4:15pm, T Th 1:00pm-2:00pm & by appointment.

Required textbook: [OSCJ] Operating system concepts with Java (8th ed.) by Silberschatz, A., Galvin, P.B., & Gagne, G. (2010). John Wiley & Sons, Inc. ISBN: 978-0-470-50949-4. This book is on reserve at the Roesch library.

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.
    [LBOS] The little book of semaphores (2nd ed.) by Downey, A.B. (2008). Boston, MA: Green Tea Press.
    [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.
  • Develop a proficiency in UNIX and C as a operating systems programming language and environment.
Evaluation, workload, & policies

Course outline, lecture notes, projects, & homework & required reading assignments (to be completed prior to class):
  1. Introduction to operating systems & the UNIX & C programming environment ([OSCJ] Ch 1-2, [USP] Ch 1-2,4)
    1. introduction to operating systems (review of computer organization, C exercises): Aug 25
    2. the UNIX philosophy (class UNIX page, vi quick reference, vi editor, UW vi reference): Aug 27
    3. files & directories (manipulation & management): self study
    4. system libraries & I/O: Aug 30 Sep 1

  2. Processes & threads ([OSCJ] Ch 3-4, [USP] Ch 2-6)
    1. processes (identification; getpid, creation; fork, & termination): Sep 3
      processes (identification; getpid, creation; fork, & termination) & memory allocation/deallocation [HW 1 due]: Sep 8
    2. low-level I/O (open & close, & read & write): Sep 10
    3. context switching: Sep 10
    4. compiling C in UNIX (static vs. dynamic linking, macros, conditional compilation, error handling, & debugging): Sep 10
    5. process manipulation (wait) [HW 2 due]: Sep 15
    6. the UNIX shell & process environment (variables, configuration, customization): Sep 17
    7. process manipulation (exec): Sep 17
      Exam I (closed book, closed notes) [practice problems]: Sep 20
    8. implementing I/O redirection & interprocess communication (IPC; pipes & FIFOs): Sep 22
    9. files & directories (data structures, inodes, & hard & symbolic links): Sep 24
    10. compilation management (Makefiles, make tutorial, another make tutorial, exercise in writing a Makefile): Sep 27
    11. (shell) job control (through signals) & terminals: Sep 29
    12. threads (storage classes & thread-safe functions): Oct 1
    13. threads in Java (Oracle Java webpage, BlueJ, NetBeans, Java Thread class): Oct 1

  3. Scheduling ([OSCJ] Ch 5)
    1. types, evaluation criteria, & algorithms (FCFS, SJF, SRTF, RR) [P1 due]: Oct 4
    2. multi-level queues & multi-level feedback queues: Oct 6

  4. Synchronization ([OSCJ] Ch 6)
    1. mutual exclusion & the critical section problem (§§6.1-6.4) [HW 3]: Oct 11
    2. semaphores (§6.5) [The little book of semaphores, Java lang.util.concurrent.Semaphore class] [HW 4 due]: Oct 13
    3. classical problems of synchroniztion (§6.6): Oct 15
      Exam II (closed book, closed notes) [practice problems]: Oct 18
    4. monitors (§6.7) [Java lang.util.concurrent.locks package]: Oct 20 22 25 27
      monitors (§6.7) [P2 due]: Oct 29
      monitors (§6.7): Nov 1 3

  5. Deadlock ([OSCJ] Ch 7)
    1. deadlock prevention (§§7.1-7.4) [HW 5]: Nov 5
    2. deadlock avoidance & Banker's algorithm (§7.5) (Banker's examples): Nov 8
    3. deadlock detection & recovery (§§7.6-7.8): Nov 10

  6. Memory Management ([OSCJ] Ch 8)
    1. fundamentals (overview of hardware, logical vs. physical address space, dynamic loading & linking) (§§8.1-8.2): Nov 10
    2. contiguous allocation (§8.3): Nov 12
    3. paging (§§8.4-8.5): Nov 12
      Exam III (closed book, closed notes) [practice problems]: Nov 15
    4. paging (§§8.4-8.5) [P3 due]: Nov 17
    5. paging (§§8.4-8.5): Nov 19 22
    6. segmentation, segmentations faults, & buffer overflows (§§8.6-8.8): Nov 29

  7. Virtual Memory ([OSCJ] Ch 9)
    1. demand paging (§§9.1-9.3): Nov 29
      demand paging (§§9.1-9.3) [HW 6 due]: Dec 1
    2. page replacement algorithms (FIFO, optimal, LRU; §9.4): Dec 1 6
    3. allocation (§9.5) & thrashing (§9.6): Dec 6 10
    4. course reflection (terms) [HW 7 due]: Dec 10

    Final Exam (comprehensive, closed book, closed notes) [practice problems]: W Dec 15, 2:30pm-4:20pm, MH 201.
Programming style guide

Practice problems

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.