CPS 346: Operating Systems I/Spring 2012

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 2012
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, T Th 3:30pm-4:30pm, & by appointment.

Teaching assistants: Jonathan Headlee (e-mail id: headleej1), Kyle Healy (e-mail id: healykys), & Michael Timko (e-mail id: timkom1), MH 21, OHs: M noon-1:00pm, 2:30pm-5:00pm, 6:15pm-8:00pm, T 10:00am-2:00pm, 4:30pm-8:00pm, W noon-1:00pm, 2:30pm-5:00pm, 6:15pm-8:00pm, Th 10:00am-2:00pm, 4:30pm-8: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:
    [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. 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 This book is on reserve at the Roesch library.

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 ([OSCJ8] Ch 1-2; [USP] Ch 1-2, 4)
    1. introduction to operating systems (review of computer organization, C exercises): Jan 14
    2. the UNIX philosophy (class UNIX page, vi quick reference, vi editor, UW vi reference): Jan 16
    3. compiling C in UNIX (static vs. dynamic linking, macros, conditional compilation, error handling, & debugging; RMS's gdb tutorial, valgrind tutorial): Jan 16
    4. files & directories (manipulation & management): self study
    5. system libraries & I/O: Jan 16 23

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

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

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

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

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

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

  8. Final Exam (comprehensive, closed book, closed notes) [practice problems]: T Apr 30, 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 may have on the style of the lectures, the concepts presented in class, the course webpage, homeworks, deadlines, exams, course and grading policies, or your general experience in the course.