CPS 356: Operating Systems/Spring 2015

CPS 356 (3 hours) is a course that introduces the theoretical and practical issues underlying an operating system's structure and operation. Topics include process and thread creation and management, scheduling, concurrent, multi-threaded programming and synchronization, deadlock, memory management, virtual memory, and computer security. 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 356: Operating Systems/Spring 2015
Pre-requisites: CPS 250 (Introduction to Computer Organization) or ECE 314 (Fundamentals of Computer Architecture) & CPS 350 (Data Structures & Algorithms).

Meeting times: T Th 3:00pm-4:15pm, MH 209.

Instructor: Dr. S. Perugini, e-mail id: sperugini1, AN 145, 229-4079, OHs: T Th 1:15pm-1:50pm, 4:15pm-5:30pm (only when class is in session), & by appointment.

Teaching assistants: Stephen Korenewych (e-mail id: korenewychs1) and Conrad Merling (e-mail id: merlingc2), AN 135, OHs: M W 11:00am-2:00pm, Th 4:00pm-7:00pm, F 10:00am-2:00pm, & by appointment.





Required textbook:
    [OSCJ8] 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:
    [CARM] C: A reference manual (2nd ed.) by Harbison, S.P. & Steele Jr., G.L. (1995). Englewood Cliffs, NJ: Prentice Hall. ISBN: 0-13-326232-4. This book is on reserve at the Roesch library.
    [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. This book is on reserve at the Roesch library.
    [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.
    [TLCL] The Linux Command Line: A Complete Introduction by Schotts, W. (2012). No Starch 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. This book is on reserve at the Roesch library.
    [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. This book is on reserve at the Roesch library, and 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 an operating systems programming language and environment.
Evaluation, workload, & policies

Course outline, required reading assignments, lecture notes, & homeworks & projects:
  1. Introduction to operating systems & the UNIX/Linux & C programming environment ([OSCJ8] Ch 1-2; [USP] Ch 1-2, 4)
    1. introduction to operating systems (review of computer organization, C exercises): Jan 13
    2. the UNIX philosophy (class UNIX/Linux page, vi quick reference, vi editor, UW vi reference): Jan 13 15
    3. files & directories (manipulation & management): self-study
    4. system libraries & I/O: Jan 15 20 [HW 1 due] 22 27
    5. compiling C in UNIX (static vs. dynamic linking, macros, conditional compilation, error handling, & debugging; RMS's gdb tutorial, valgrind): Jan 22

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

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

  4. Synchronization ([OSCJ8] Ch 6)
    1. mutual exclusion & the critical section problem (§§ 6.1-6.4) [HW 3 due]: Feb 24
    2. semaphores (§ 6.5) (The little book of semaphores, Java lang.util.concurrent.Semaphore class): Feb 24 26 Mar 3 10
    3. classical problems of synchronization (§ 6.6) [HW 4 due]: Feb 26 Mar 3 10
    4. monitors & conditional variables (§ 6.7), & Java synchronization (§ 6.8) (Java lang.util.concurrent.locks package; Java Condition interface): Mar 12 17 [P2 due]: Mar 24
      Exam II (closed book, closed notes) [practice problems]: Mar 19

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

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

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

  8. Final Exam (comprehensive, closed book, closed notes) [practice problems]: T Apr 28, 12:20pm-2:10pm, MH 207.
Programming style guide

Practice problems

Grades: available in Isidore

Computer accounts: Linux account access | UDit | A beginner's guide to effective e-mail

Helpful links: academic calendar | student handbook

Feedback: Dr. Perugini welcomes any feedback you have on the style of the lectures, the concepts presented in class, the course webpage, homeworks, projects, deadlines, exams, course and grading policies, or your experience in the course.