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.
Evaluation, workload, & policies

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

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

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

  4. Synchronization ([OSCJ] Ch 6)
    1. mutual exclusion & the critical section problem (§§6.1-6.4): Oct 12
    2. semaphores (§6.5) [Java lang.util.concurrent.Semaphore class] [HW 3 due]: Oct 14
      semaphores (§6.5): Oct 16
    3. 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
    4. monitors (§6.7) [Java lang.util.concurrent.locks package]: Oct 28 30 Nov 2
    5. monitors (§6.7) [P2 due]: Nov 4
      monitors (§6.7): Nov 6 9 11

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

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

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

  8. Computer security ([OSCJ] Ch 14-15): as time permits

  9. Distributed systems ([OSCJ] Ch 16): as time permits

  10. Final Exam (comprehensive, closed book, closed notes): M December 14, 2:30pm-4:20pm, MH 201
Programming style guide

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.