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) and CPS 350 (Data Structures and Algorithms)

Meeting times: M W 3:00pm-4:15pm, 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, and by appointment.

Teaching assistant: Travis Suel, AN 26, e-mail id: sueltraz, OH's: M W 1:00pm-2:00pm, T Th 6:30pm-7:30pm, and by appointment.

Required textbook: [OSIDP] Operating Systems: Internals and Design Principles by W. Stallings. Prentice Hall, Upper Saddle River, NJ, Sixth edition, 2009. ISBN: 0-13-600632-9; and associated GOAL account; ISBN: 0-13-514121-4. A GOAL access code can be purchased here (last book on page).

Recommended textbooks:
    [CPL] The C Programming Language by B.W. Kernighan and D.M. Ritchie. Prentice Hall, Upper Saddle River, NJ, Second edition, 1988. ISBN: 0-13-110362-8.
    [JPL] The Java Programming Language by K. Arnold, J. Gosling, and D. Holmes. Addison Wesley, Reading, MA, Forth edition, 2005. 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 by B.W. Kernighan and R. Pike. Prentice Hall, Upper Saddle River, NJ, Second edition, 1984. ISBN: 0-13-937681-X.
    [USP] UNIX Systems Programming: Concurrency, Communication, and Threads by K.A. Robbins and S. Robbins. Prentice Hall, Upper Saddle River, NJ, Second edition, 2003. 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, and policies

Course outline, lecture notes, projects, and homework and reading assignments (to be completed prior to class):
  1. Introduction (review of computer organization, OS overview, and the UNIX and C programming environment) ([OSIDP] Ch 0-2)
    1. OS nomenclature and the UNIX philosophy, in-class C exercises, system libraries; I/O, and more topics in C (processes, memory management, and error handling) [class UNIX page, A Brief Introduction to C, vi handout, vi editor (also see the UW vi reference)]: Jan 5 7
    2. files and directories (manipulation and management, and data structures): Jan 12

  2. Processes and threads ([OSIDP] Ch 3-4)
    1. low-level I/O (open and close, and read and write), and process creation (fork) and manipulation (wait): Jan 14 21
    2. signals (job control) [HW 1 due]: Jan 21
    3. process manipulation (exec): Jan 26
    4. terminals: Jan 26
    5. more topics in C (storage classes, thread-safe functions, and macros): Jan 26
    6. [HW 2 due]: Jan 28
    7. Exam I (closed book, closed notes): Feb 2
    8. threads in Java [Sun Microsystems Java webpage, Java Thread class]: Feb 4
    9. implementing I/O redirection and interprocess communiucation (IPC; pipes and FIFOs): Feb 4
    10. the UNIX shell, process environment (variables, configuration, customization), and file permissions: Feb 9
    11. compilation management (Makefiles) (exercise in writing a Makefile) [make tutorial another make tutorial] [HW 3 due]: Feb 11

  3. Scheduling ([OSIDP] Ch 9)
    1. types, evaluation criteria, and algorithms (FCFS, SJF, SRTF): Feb 16
    2. multi-level queues and multi-level feedback queues [P1 due]: Feb 18
    3. Exam II (closed book, closed notes): Feb 23

  4. Synchronization ([OSIDP] Ch 5)
    1. mutual exclusion and the critical section problem (§5.2): Feb 25
    2. semaphores (§5.3) [Java lang.util.concurrent.Semaphore class]: Mar 2
    3. classical problems of synchroniztion (§5.6, §6.6) [HW 4 due]: Mar 4
    4. monitors (§5.4) [Java lang.util.concurrent.locks package]: Mar 9

  5. Deadlock ([OSIDP] Ch 6)
    1. deadlock prevention (§6.2) [P2 due]: Mar 11
    2. deadlock avoidance and Banker's algorithm (§6.3): Mar 16
    3. deadlock detection and recovery (§6.4) [HW 5 due]: Mar 18
    4. Exam III (closed book, closed notes): Mar 23

  6. Memory Management ([OSIDP] Ch 7)
    1. contiguous allocation (§§7.1-7.2): Mar 25
    2. paging (§7.3): Mar 30
    3. segmentation, segmentations faults, and buffer overflows (§§7.4-7.5) [P3 due]: Apr 1

  7. Virtual Memory ([OSIDP] Ch 8)
    1. demand paging [HW 6 due]: Apr 15
    2. page replacement (FIFO, optimal, LRU): Apr 20
    3. thrashing [HW 7 due]: Apr 22

  8. Final Exam (comprehensive, closed book, closed notes): W April 29, 12:20pm-2:10pm, MH 201
Programming style guide

Grades: available in Isidore

Computer accounts: CPS account access @ home | UNIX account access | CPS labs hours | Keeping your password safe | A beginner's guide to effective e-mail
If you are unable to log into your CPS (Windows or UNIX) account or if you forget your CPS (Windows or UNIX) account password, contact the CPS systems administrator, Mr. Tramontana, at tramonjr at notes dot udayton dot edu or 229-3858, and be as specific as possible.

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.