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 Spring 2011
Pre-requisites: CPS 250 (Introduction to Computer Organization) & CPS 350 (Data Structures & Algorithms).

Meeting times: M W 3:00pm-4:15pm, MH 201.

Instructor: Dr. S. Perugini, e-mail id: sperugini1, 229-4079, AN 145, OHs: M W 5:45pm-6:15pm, & by appointment.

Teaching assistants: Jonathon Reinhart (e-mail id: reinhartj1) and Allyson Denzinger (e-mail id: denzingera1), AN 26, OHs: M W 4:15pm-5:30pm, T Th 12:30pm-1:30pm, & 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): Jan 19
    2. the UNIX philosophy (class UNIX page, UNIX Tutorial for Beginners, vi quick reference, vi editor, UW vi reference): Jan 19
    3. files & directories (manipulation & management): self study
    4. system libraries & I/O: Jan 24 26

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

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

  4. Synchronization ([OSCJ] Ch 6)
    1. mutual exclusion & the critical section problem (§§6.1-6.4): Mar 7
    2. semaphores (§6.5) [The little book of semaphores, Java lang.util.concurrent.Semaphore class] [HW 4 due]: Mar 9
      Exam II (closed book, closed notes) [practice problems]: Mar 14
    3. classical problems of synchroniztion (§6.6) [P2 due]: Mar 16
    4. monitors (§6.7) [Java lang.util.concurrent.locks package]: Mar 21
      monitors (§6.7) [HW 5 due]: Mar 23

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

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

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

    Final Exam (comprehensive, closed book, closed notes) [practice problems]: T May 3, 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.