CPS 346: Operating Systems I/Spring 2014

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 2014
Pre-requisites: CPS 250 (Introduction to Computer Organization; or ECE 314: Fundamentals of Computer Architecture) & CPS 350 (Data Structures & Algorithms).

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

Instructor: Dr. S. Perugini, e-mail id: sperugini1, AN 145, 229-4079, OHs: M W 5:45pm-6:45pm (only when class is in session), & by appointment.

Teaching assistants: Ahmed Nasrallah (e-mail id: nasrallaha2) & Stephen Korenewych (e-mail id: korenewychs1), MH 21, OHs: M 10:00am-11:00am, 2:00pm-3:00pm, T 11:00am-noon, W 10:00am-11:00am, 2:00pm-3:00pm, Th 11:00am-1:00pm, 1:30pm-2:45pm, F 10:00am-11:00am, 2:00-3: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.
    [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 & 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 15
    2. the UNIX philosophy (class UNIX page, vi quick reference, vi editor, UW vi reference): Jan 15
    3. files & directories (manipulation & management): self study
    4. system libraries & I/O: Jan 15 22
      system libraries & I/O [HW 1 due]: Jan 22
    5. compiling C in UNIX (static vs. dynamic linking, macros, conditional compilation, error handling, & debugging; RMS's gdb tutorial, valgrind): Jan 29 Feb 3

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

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

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

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

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

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

  8. Final Exam (comprehensive, closed book, closed notes) [practice problems]: T Apr 29, 10:10am-noon, MH 201.
Programming style guide

Practice problems

Grades: available in Isidore

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

Helpful links: academic calendar | student handbook | UDit policies 

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.